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<Impl = Impl>, Impl: IAMAnalogVideoDecoder_Impl, const OFFSET: isize>() -> IAMAnalogVideoDecoder_Vtbl {
        unsafe extern "system" fn AvailableTVFormats<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lanalogvideostandard: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AvailableTVFormats() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lanalogvideostandard, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTVFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lanalogvideostandard: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTVFormat(::core::mem::transmute_copy(&lanalogvideostandard)).into()
        }
        unsafe extern "system" fn TVFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, planalogvideostandard: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TVFormat() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(planalogvideostandard, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn HorizontalLocked<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pllocked: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.HorizontalLocked() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pllocked, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetVCRHorizontalLocking<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lvcrhorizontallocking: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVCRHorizontalLocking(::core::mem::transmute_copy(&lvcrhorizontallocking)).into()
        }
        unsafe extern "system" fn VCRHorizontalLocking<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plvcrhorizontallocking: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VCRHorizontalLocking() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plvcrhorizontallocking, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn NumberOfLines<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plnumberoflines: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.NumberOfLines() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plnumberoflines, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputEnable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, loutputenable: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOutputEnable(::core::mem::transmute_copy(&loutputenable)).into()
        }
        unsafe extern "system" fn OutputEnable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ploutputenable: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.OutputEnable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ploutputenable, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AvailableTVFormats: AvailableTVFormats::<Identity, Impl, OFFSET>,
            SetTVFormat: SetTVFormat::<Identity, Impl, OFFSET>,
            TVFormat: TVFormat::<Identity, Impl, OFFSET>,
            HorizontalLocked: HorizontalLocked::<Identity, Impl, OFFSET>,
            SetVCRHorizontalLocking: SetVCRHorizontalLocking::<Identity, Impl, OFFSET>,
            VCRHorizontalLocking: VCRHorizontalLocking::<Identity, Impl, OFFSET>,
            NumberOfLines: NumberOfLines::<Identity, Impl, OFFSET>,
            SetOutputEnable: SetOutputEnable::<Identity, Impl, OFFSET>,
            OutputEnable: OutputEnable::<Identity, Impl, 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<Impl = Impl>, Impl: IAMAnalogVideoEncoder_Impl, const OFFSET: isize>() -> IAMAnalogVideoEncoder_Vtbl {
        unsafe extern "system" fn AvailableTVFormats<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoEncoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lanalogvideostandard: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AvailableTVFormats() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lanalogvideostandard, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTVFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoEncoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lanalogvideostandard: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTVFormat(::core::mem::transmute_copy(&lanalogvideostandard)).into()
        }
        unsafe extern "system" fn TVFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoEncoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, planalogvideostandard: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TVFormat() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(planalogvideostandard, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCopyProtection<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoEncoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lvideocopyprotection: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCopyProtection(::core::mem::transmute_copy(&lvideocopyprotection)).into()
        }
        unsafe extern "system" fn CopyProtection<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoEncoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lvideocopyprotection: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CopyProtection() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lvideocopyprotection, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCCEnable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoEncoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lccenable: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCCEnable(::core::mem::transmute_copy(&lccenable)).into()
        }
        unsafe extern "system" fn CCEnable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAnalogVideoEncoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lccenable: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CCEnable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lccenable, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AvailableTVFormats: AvailableTVFormats::<Identity, Impl, OFFSET>,
            SetTVFormat: SetTVFormat::<Identity, Impl, OFFSET>,
            TVFormat: TVFormat::<Identity, Impl, OFFSET>,
            SetCopyProtection: SetCopyProtection::<Identity, Impl, OFFSET>,
            CopyProtection: CopyProtection::<Identity, Impl, OFFSET>,
            SetCCEnable: SetCCEnable::<Identity, Impl, OFFSET>,
            CCEnable: CCEnable::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMAnalogVideoEncoder as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IAMAsyncReaderTimestampScaling {}
#[cfg(feature = "Win32_Foundation")]
impl IAMAsyncReaderTimestampScaling_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAsyncReaderTimestampScaling_Impl, const OFFSET: isize>() -> IAMAsyncReaderTimestampScaling_Vtbl {
        unsafe extern "system" fn GetTimestampMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAsyncReaderTimestampScaling_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfraw: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTimestampMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfraw, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTimestampMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAsyncReaderTimestampScaling_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fraw: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTimestampMode(::core::mem::transmute_copy(&fraw)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTimestampMode: GetTimestampMode::<Identity, Impl, OFFSET>,
            SetTimestampMode: SetTimestampMode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMAsyncReaderTimestampScaling as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IAMAudioInputMixer {}
#[cfg(feature = "Win32_Foundation")]
impl IAMAudioInputMixer_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>() -> IAMAudioInputMixer_Vtbl {
        unsafe extern "system" fn SetEnable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fenable: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetEnable(::core::mem::transmute_copy(&fenable)).into()
        }
        unsafe extern "system" fn Enable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfenable: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Enable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfenable, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMono<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fmono: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMono(::core::mem::transmute_copy(&fmono)).into()
        }
        unsafe extern "system" fn Mono<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfmono: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Mono() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfmono, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMixLevel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, level: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMixLevel(::core::mem::transmute_copy(&level)).into()
        }
        unsafe extern "system" fn MixLevel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plevel: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MixLevel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plevel, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPan<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pan: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPan(::core::mem::transmute_copy(&pan)).into()
        }
        unsafe extern "system" fn Pan<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppan: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Pan() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppan, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLoudness<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, floudness: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLoudness(::core::mem::transmute_copy(&floudness)).into()
        }
        unsafe extern "system" fn Loudness<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfloudness: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Loudness() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfloudness, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTreble<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, treble: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTreble(::core::mem::transmute_copy(&treble)).into()
        }
        unsafe extern "system" fn Treble<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptreble: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Treble() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ptreble, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TrebleRange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prange: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TrebleRange() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prange, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBass<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bass: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBass(::core::mem::transmute_copy(&bass)).into()
        }
        unsafe extern "system" fn Bass<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbass: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Bass() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbass, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn BassRange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioInputMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prange: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.BassRange() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prange, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetEnable: SetEnable::<Identity, Impl, OFFSET>,
            Enable: Enable::<Identity, Impl, OFFSET>,
            SetMono: SetMono::<Identity, Impl, OFFSET>,
            Mono: Mono::<Identity, Impl, OFFSET>,
            SetMixLevel: SetMixLevel::<Identity, Impl, OFFSET>,
            MixLevel: MixLevel::<Identity, Impl, OFFSET>,
            SetPan: SetPan::<Identity, Impl, OFFSET>,
            Pan: Pan::<Identity, Impl, OFFSET>,
            SetLoudness: SetLoudness::<Identity, Impl, OFFSET>,
            Loudness: Loudness::<Identity, Impl, OFFSET>,
            SetTreble: SetTreble::<Identity, Impl, OFFSET>,
            Treble: Treble::<Identity, Impl, OFFSET>,
            TrebleRange: TrebleRange::<Identity, Impl, OFFSET>,
            SetBass: SetBass::<Identity, Impl, OFFSET>,
            Bass: Bass::<Identity, Impl, OFFSET>,
            BassRange: BassRange::<Identity, Impl, 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<Impl = Impl>, Impl: IAMAudioRendererStats_Impl, const OFFSET: isize>() -> IAMAudioRendererStats_Vtbl {
        unsafe extern "system" fn GetStatParam<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMAudioRendererStats_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwparam: u32, pdwparam1: *mut u32, pdwparam2: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetStatParam(::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, Impl, 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<Impl = Impl>, Impl: IAMBufferNegotiation_Impl, const OFFSET: isize>() -> IAMBufferNegotiation_Vtbl {
        unsafe extern "system" fn SuggestAllocatorProperties<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMBufferNegotiation_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pprop: *const ALLOCATOR_PROPERTIES) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SuggestAllocatorProperties(::core::mem::transmute_copy(&pprop)).into()
        }
        unsafe extern "system" fn GetAllocatorProperties<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMBufferNegotiation_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pprop: *mut ALLOCATOR_PROPERTIES) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAllocatorProperties() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pprop, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SuggestAllocatorProperties: SuggestAllocatorProperties::<Identity, Impl, OFFSET>,
            GetAllocatorProperties: GetAllocatorProperties::<Identity, Impl, 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<Impl = Impl>, Impl: IAMCameraControl_Impl, const OFFSET: isize>() -> IAMCameraControl_Vtbl {
        unsafe extern "system" fn GetRange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRange(::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<Impl = Impl>, Impl: IAMCameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, property: i32, lvalue: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set(::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<Impl = Impl>, Impl: IAMCameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, property: i32, lvalue: *mut i32, flags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Get(::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, Impl, OFFSET>,
            Set: Set::<Identity, Impl, OFFSET>,
            Get: Get::<Identity, Impl, 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: *mut AMCOPPSignature) -> ::windows::core::Result<()>;
    fn ProtectionCommand(&self, cmd: *const AMCOPPCommand) -> ::windows::core::Result<()>;
    fn ProtectionStatus(&self, pstatusinput: *const AMCOPPStatusInput) -> ::windows::core::Result<AMCOPPStatusOutput>;
}
impl ::windows::core::RuntimeName for IAMCertifiedOutputProtection {}
impl IAMCertifiedOutputProtection_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCertifiedOutputProtection_Impl, const OFFSET: isize>() -> IAMCertifiedOutputProtection_Vtbl {
        unsafe extern "system" fn KeyExchange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCertifiedOutputProtection_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prandom: *mut ::windows::core::GUID, varlencertgh: *mut *mut u8, pdwlengthcertgh: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.KeyExchange(::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<Impl = Impl>, Impl: IAMCertifiedOutputProtection_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psig: *mut AMCOPPSignature) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SessionSequenceStart(::core::mem::transmute_copy(&psig)).into()
        }
        unsafe extern "system" fn ProtectionCommand<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCertifiedOutputProtection_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cmd: *const AMCOPPCommand) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ProtectionCommand(::core::mem::transmute_copy(&cmd)).into()
        }
        unsafe extern "system" fn ProtectionStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCertifiedOutputProtection_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstatusinput: *const AMCOPPStatusInput, pstatusoutput: *mut AMCOPPStatusOutput) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ProtectionStatus(::core::mem::transmute_copy(&pstatusinput)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstatusoutput, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            KeyExchange: KeyExchange::<Identity, Impl, OFFSET>,
            SessionSequenceStart: SessionSequenceStart::<Identity, Impl, OFFSET>,
            ProtectionCommand: ProtectionCommand::<Identity, Impl, OFFSET>,
            ProtectionStatus: ProtectionStatus::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMCertifiedOutputProtection as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAMChannelInfo {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAMChannelInfo_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMChannelInfo_Impl, const OFFSET: isize>() -> IAMChannelInfo_Vtbl {
        unsafe extern "system" fn ChannelName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMChannelInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrchannelname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChannelName(::core::mem::transmute_copy(&pbstrchannelname)).into()
        }
        unsafe extern "system" fn ChannelDescription<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMChannelInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrchanneldescription: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChannelDescription(::core::mem::transmute_copy(&pbstrchanneldescription)).into()
        }
        unsafe extern "system" fn ChannelURL<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMChannelInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrchannelurl: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChannelURL(::core::mem::transmute_copy(&pbstrchannelurl)).into()
        }
        unsafe extern "system" fn ContactAddress<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMChannelInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrcontactaddress: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ContactAddress(::core::mem::transmute_copy(&pbstrcontactaddress)).into()
        }
        unsafe extern "system" fn ContactPhone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMChannelInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrcontactphone: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ContactPhone(::core::mem::transmute_copy(&pbstrcontactphone)).into()
        }
        unsafe extern "system" fn ContactEmail<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMChannelInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrcontactemail: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ContactEmail(::core::mem::transmute_copy(&pbstrcontactemail)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            ChannelName: ChannelName::<Identity, Impl, OFFSET>,
            ChannelDescription: ChannelDescription::<Identity, Impl, OFFSET>,
            ChannelURL: ChannelURL::<Identity, Impl, OFFSET>,
            ContactAddress: ContactAddress::<Identity, Impl, OFFSET>,
            ContactPhone: ContactPhone::<Identity, Impl, OFFSET>,
            ContactEmail: ContactEmail::<Identity, Impl, 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<Impl = Impl>, Impl: IAMClockAdjust_Impl, const OFFSET: isize>() -> IAMClockAdjust_Vtbl {
        unsafe extern "system" fn SetClockDelta<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMClockAdjust_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rtdelta: i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetClockDelta(::core::mem::transmute_copy(&rtdelta)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetClockDelta: SetClockDelta::<Identity, Impl, 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<Impl = Impl>, Impl: IAMClockSlave_Impl, const OFFSET: isize>() -> IAMClockSlave_Vtbl {
        unsafe extern "system" fn SetErrorTolerance<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMClockSlave_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwtolerance: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetErrorTolerance(::core::mem::transmute_copy(&dwtolerance)).into()
        }
        unsafe extern "system" fn GetErrorTolerance<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMClockSlave_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwtolerance: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetErrorTolerance() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwtolerance, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetErrorTolerance: SetErrorTolerance::<Identity, Impl, OFFSET>,
            GetErrorTolerance: GetErrorTolerance::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMClockSlave as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAMCollection {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAMCollection_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCollection_Impl, const OFFSET: isize>() -> IAMCollection_Vtbl {
        unsafe extern "system" fn Count<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCollection_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plcount: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Count() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plcount, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Item<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCollection_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, litem: i32, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Item(::core::mem::transmute_copy(&litem)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCollection_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._NewEnum() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Count: Count::<Identity, Impl, OFFSET>,
            Item: Item::<Identity, Impl, OFFSET>,
            _NewEnum: _NewEnum::<Identity, Impl, 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<Impl = Impl>, Impl: IAMCopyCaptureFileProgress_Impl, const OFFSET: isize>() -> IAMCopyCaptureFileProgress_Vtbl {
        unsafe extern "system" fn Progress<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCopyCaptureFileProgress_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, iprogress: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Progress(::core::mem::transmute_copy(&iprogress)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Progress: Progress::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMCopyCaptureFileProgress as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IAMCrossbar {}
#[cfg(feature = "Win32_Foundation")]
impl IAMCrossbar_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCrossbar_Impl, const OFFSET: isize>() -> IAMCrossbar_Vtbl {
        unsafe extern "system" fn get_PinCounts<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCrossbar_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, outputpincount: *mut i32, inputpincount: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_PinCounts(::core::mem::transmute_copy(&outputpincount), ::core::mem::transmute_copy(&inputpincount)).into()
        }
        unsafe extern "system" fn CanRoute<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCrossbar_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, outputpinindex: i32, inputpinindex: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CanRoute(::core::mem::transmute_copy(&outputpinindex), ::core::mem::transmute_copy(&inputpinindex)).into()
        }
        unsafe extern "system" fn Route<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCrossbar_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, outputpinindex: i32, inputpinindex: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Route(::core::mem::transmute_copy(&outputpinindex), ::core::mem::transmute_copy(&inputpinindex)).into()
        }
        unsafe extern "system" fn get_IsRoutedTo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCrossbar_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, outputpinindex: i32, inputpinindex: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_IsRoutedTo(::core::mem::transmute_copy(&outputpinindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(inputpinindex, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_CrossbarPinInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMCrossbar_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_CrossbarPinInfo(::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, Impl, OFFSET>,
            CanRoute: CanRoute::<Identity, Impl, OFFSET>,
            Route: Route::<Identity, Impl, OFFSET>,
            get_IsRoutedTo: get_IsRoutedTo::<Identity, Impl, OFFSET>,
            get_CrossbarPinInfo: get_CrossbarPinInfo::<Identity, Impl, 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<Impl = Impl>, Impl: IAMDecoderCaps_Impl, const OFFSET: isize>() -> IAMDecoderCaps_Vtbl {
        unsafe extern "system" fn GetDecoderCaps<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDecoderCaps_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwcapindex: u32, lpdwcap: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDecoderCaps(::core::mem::transmute_copy(&dwcapindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpdwcap, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetDecoderCaps: GetDecoderCaps::<Identity, Impl, 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: *mut u8) -> ::windows::core::Result<()>;
    fn GetDevMemoryObject(&self, ppunkinnner: *mut ::core::option::Option<::windows::core::IUnknown>, punkouter: &::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IAMDevMemoryAllocator {}
impl IAMDevMemoryAllocator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDevMemoryAllocator_Impl, const OFFSET: isize>() -> IAMDevMemoryAllocator_Vtbl {
        unsafe extern "system" fn GetInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDevMemoryAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwcbtotalfree: *mut u32, pdwcblargestfree: *mut u32, pdwcbtotalmemory: *mut u32, pdwcbminimumchunk: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetInfo(::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<Impl = Impl>, Impl: IAMDevMemoryAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbuffer: *const u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CheckMemory(::core::mem::transmute_copy(&pbuffer)).into()
        }
        unsafe extern "system" fn Alloc<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDevMemoryAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppbuffer: *mut *mut u8, pdwcbbuffer: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Alloc(::core::mem::transmute_copy(&ppbuffer), ::core::mem::transmute_copy(&pdwcbbuffer)).into()
        }
        unsafe extern "system" fn Free<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDevMemoryAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbuffer: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Free(::core::mem::transmute_copy(&pbuffer)).into()
        }
        unsafe extern "system" fn GetDevMemoryObject<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDevMemoryAllocator_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDevMemoryObject(::core::mem::transmute_copy(&ppunkinnner), ::core::mem::transmute(&punkouter)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInfo: GetInfo::<Identity, Impl, OFFSET>,
            CheckMemory: CheckMemory::<Identity, Impl, OFFSET>,
            Alloc: Alloc::<Identity, Impl, OFFSET>,
            Free: Free::<Identity, Impl, OFFSET>,
            GetDevMemoryObject: GetDevMemoryObject::<Identity, Impl, 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<Impl = Impl>, Impl: IAMDevMemoryControl_Impl, const OFFSET: isize>() -> IAMDevMemoryControl_Vtbl {
        unsafe extern "system" fn QueryWriteSync<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDevMemoryControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.QueryWriteSync().into()
        }
        unsafe extern "system" fn WriteSync<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDevMemoryControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.WriteSync().into()
        }
        unsafe extern "system" fn GetDevId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDevMemoryControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwdevid: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDevId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwdevid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryWriteSync: QueryWriteSync::<Identity, Impl, OFFSET>,
            WriteSync: WriteSync::<Identity, Impl, OFFSET>,
            GetDevId: GetDevId::<Identity, Impl, 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<Impl = Impl>, Impl: IAMDeviceRemoval_Impl, const OFFSET: isize>() -> IAMDeviceRemoval_Vtbl {
        unsafe extern "system" fn DeviceInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDeviceRemoval_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pclsidinterfaceclass: *mut ::windows::core::GUID, pwszsymboliclink: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DeviceInfo(::core::mem::transmute_copy(&pclsidinterfaceclass), ::core::mem::transmute_copy(&pwszsymboliclink)).into()
        }
        unsafe extern "system" fn Reassociate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDeviceRemoval_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reassociate().into()
        }
        unsafe extern "system" fn Disassociate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDeviceRemoval_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Disassociate().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            DeviceInfo: DeviceInfo::<Identity, Impl, OFFSET>,
            Reassociate: Reassociate::<Identity, Impl, OFFSET>,
            Disassociate: Disassociate::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMDeviceRemoval as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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: &::core::option::Option<super::Audio::DirectSound::IDirectSound>) -> ::windows::core::Result<()>;
    fn ReleasePrimaryBufferInterface(&self, lpdsb: &::core::option::Option<super::Audio::DirectSound::IDirectSoundBuffer>) -> ::windows::core::Result<()>;
    fn ReleaseSecondaryBufferInterface(&self, lpdsb: &::core::option::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(all(feature = "Win32_Foundation", feature = "Win32_Media_Audio_DirectSound"))]
impl ::windows::core::RuntimeName for IAMDirectSound {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_Audio_DirectSound"))]
impl IAMDirectSound_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDirectSound_Impl, const OFFSET: isize>() -> IAMDirectSound_Vtbl {
        unsafe extern "system" fn GetDirectSoundInterface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDirectSound_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lplpds: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDirectSoundInterface() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lplpds, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPrimaryBufferInterface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDirectSound_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lplpdsb: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPrimaryBufferInterface() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lplpdsb, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSecondaryBufferInterface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDirectSound_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lplpdsb: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSecondaryBufferInterface() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lplpdsb, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ReleaseDirectSoundInterface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDirectSound_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpds: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReleaseDirectSoundInterface(::core::mem::transmute(&lpds)).into()
        }
        unsafe extern "system" fn ReleasePrimaryBufferInterface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDirectSound_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpdsb: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReleasePrimaryBufferInterface(::core::mem::transmute(&lpdsb)).into()
        }
        unsafe extern "system" fn ReleaseSecondaryBufferInterface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDirectSound_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpdsb: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReleaseSecondaryBufferInterface(::core::mem::transmute(&lpdsb)).into()
        }
        unsafe extern "system" fn SetFocusWindow<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDirectSound_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param0: super::super::Foundation::HWND, param1: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFocusWindow(::core::mem::transmute_copy(&param0), ::core::mem::transmute_copy(&param1)).into()
        }
        unsafe extern "system" fn GetFocusWindow<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDirectSound_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param0: *mut super::super::Foundation::HWND, param1: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetFocusWindow(::core::mem::transmute_copy(&param0), ::core::mem::transmute_copy(&param1)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDirectSoundInterface: GetDirectSoundInterface::<Identity, Impl, OFFSET>,
            GetPrimaryBufferInterface: GetPrimaryBufferInterface::<Identity, Impl, OFFSET>,
            GetSecondaryBufferInterface: GetSecondaryBufferInterface::<Identity, Impl, OFFSET>,
            ReleaseDirectSoundInterface: ReleaseDirectSoundInterface::<Identity, Impl, OFFSET>,
            ReleasePrimaryBufferInterface: ReleasePrimaryBufferInterface::<Identity, Impl, OFFSET>,
            ReleaseSecondaryBufferInterface: ReleaseSecondaryBufferInterface::<Identity, Impl, OFFSET>,
            SetFocusWindow: SetFocusWindow::<Identity, Impl, OFFSET>,
            GetFocusWindow: GetFocusWindow::<Identity, Impl, 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<Impl = Impl>, Impl: IAMDroppedFrames_Impl, const OFFSET: isize>() -> IAMDroppedFrames_Vtbl {
        unsafe extern "system" fn GetNumDropped<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDroppedFrames_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pldropped: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNumDropped() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pldropped, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNumNotDropped<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDroppedFrames_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plnotdropped: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNumNotDropped() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plnotdropped, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDroppedInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMDroppedFrames_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lsize: i32, plarray: *mut i32, plnumcopied: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDroppedInfo(::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<Impl = Impl>, Impl: IAMDroppedFrames_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plaveragesize: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAverageFrameSize() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plaveragesize, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNumDropped: GetNumDropped::<Identity, Impl, OFFSET>,
            GetNumNotDropped: GetNumNotDropped::<Identity, Impl, OFFSET>,
            GetDroppedInfo: GetDroppedInfo::<Identity, Impl, OFFSET>,
            GetAverageFrameSize: GetAverageFrameSize::<Identity, Impl, 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<Impl = Impl>, Impl: IAMExtDevice_Impl, const OFFSET: isize>() -> IAMExtDevice_Vtbl {
        unsafe extern "system" fn GetCapability<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, capability: i32, pvalue: *mut i32, pdblvalue: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCapability(::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<Impl = Impl>, Impl: IAMExtDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppszdata: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ExternalDeviceID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppszdata, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ExternalDeviceVersion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppszdata: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ExternalDeviceVersion() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppszdata, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDevicePower<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, powermode: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDevicePower(::core::mem::transmute_copy(&powermode)).into()
        }
        unsafe extern "system" fn DevicePower<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppowermode: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DevicePower() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppowermode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Calibrate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hevent: usize, mode: i32, pstatus: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Calibrate(::core::mem::transmute_copy(&hevent), ::core::mem::transmute_copy(&mode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstatus, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDevicePort<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, deviceport: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDevicePort(::core::mem::transmute_copy(&deviceport)).into()
        }
        unsafe extern "system" fn DevicePort<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdeviceport: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DevicePort() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdeviceport, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCapability: GetCapability::<Identity, Impl, OFFSET>,
            ExternalDeviceID: ExternalDeviceID::<Identity, Impl, OFFSET>,
            ExternalDeviceVersion: ExternalDeviceVersion::<Identity, Impl, OFFSET>,
            SetDevicePower: SetDevicePower::<Identity, Impl, OFFSET>,
            DevicePower: DevicePower::<Identity, Impl, OFFSET>,
            Calibrate: Calibrate::<Identity, Impl, OFFSET>,
            SetDevicePort: SetDevicePort::<Identity, Impl, OFFSET>,
            DevicePort: DevicePort::<Identity, Impl, 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<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>() -> IAMExtTransport_Vtbl {
        unsafe extern "system" fn GetCapability<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, capability: i32, pvalue: *mut i32, pdblvalue: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCapability(::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<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, state: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMediaState(::core::mem::transmute_copy(&state)).into()
        }
        unsafe extern "system" fn MediaState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstate: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MediaState() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLocalControl<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, state: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLocalControl(::core::mem::transmute_copy(&state)).into()
        }
        unsafe extern "system" fn LocalControl<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstate: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.LocalControl() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, statusitem: i32, pvalue: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStatus(::core::mem::transmute_copy(&statusitem)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransportBasicParameters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param: i32, pvalue: *mut i32, ppszdata: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTransportBasicParameters(::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<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param: i32, value: i32, pszdata: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTransportBasicParameters(::core::mem::transmute_copy(&param), ::core::mem::transmute_copy(&value), ::core::mem::transmute(&pszdata)).into()
        }
        unsafe extern "system" fn GetTransportVideoParameters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param: i32, pvalue: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTransportVideoParameters(::core::mem::transmute_copy(&param)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTransportVideoParameters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param: i32, value: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTransportVideoParameters(::core::mem::transmute_copy(&param), ::core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn GetTransportAudioParameters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param: i32, pvalue: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTransportAudioParameters(::core::mem::transmute_copy(&param)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTransportAudioParameters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param: i32, value: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTransportAudioParameters(::core::mem::transmute_copy(&param), ::core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn SetMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMode(::core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn Mode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmode: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Mode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dblrate: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRate(::core::mem::transmute_copy(&dblrate)).into()
        }
        unsafe extern "system" fn Rate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdblrate: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Rate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdblrate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetChase<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, penabled: *mut i32, poffset: *mut i32, phevent: *mut usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetChase(::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<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, enable: i32, offset: i32, hevent: usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetChase(::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<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pspeed: *mut i32, pduration: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetBump(::core::mem::transmute_copy(&pspeed), ::core::mem::transmute_copy(&pduration)).into()
        }
        unsafe extern "system" fn SetBump<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, speed: i32, duration: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBump(::core::mem::transmute_copy(&speed), ::core::mem::transmute_copy(&duration)).into()
        }
        unsafe extern "system" fn AntiClogControl<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, penabled: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AntiClogControl() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(penabled, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAntiClogControl<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, enable: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAntiClogControl(::core::mem::transmute_copy(&enable)).into()
        }
        unsafe extern "system" fn GetEditPropertySet<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, editid: i32, pstate: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEditPropertySet(::core::mem::transmute_copy(&editid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetEditPropertySet<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, peditid: *mut i32, state: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetEditPropertySet(::core::mem::transmute_copy(&peditid), ::core::mem::transmute_copy(&state)).into()
        }
        unsafe extern "system" fn GetEditProperty<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, editid: i32, param: i32, pvalue: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEditProperty(::core::mem::transmute_copy(&editid), ::core::mem::transmute_copy(&param)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetEditProperty<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, editid: i32, param: i32, value: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetEditProperty(::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<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EditStart() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetEditStart<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtTransport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetEditStart(::core::mem::transmute_copy(&value)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCapability: GetCapability::<Identity, Impl, OFFSET>,
            SetMediaState: SetMediaState::<Identity, Impl, OFFSET>,
            MediaState: MediaState::<Identity, Impl, OFFSET>,
            SetLocalControl: SetLocalControl::<Identity, Impl, OFFSET>,
            LocalControl: LocalControl::<Identity, Impl, OFFSET>,
            GetStatus: GetStatus::<Identity, Impl, OFFSET>,
            GetTransportBasicParameters: GetTransportBasicParameters::<Identity, Impl, OFFSET>,
            SetTransportBasicParameters: SetTransportBasicParameters::<Identity, Impl, OFFSET>,
            GetTransportVideoParameters: GetTransportVideoParameters::<Identity, Impl, OFFSET>,
            SetTransportVideoParameters: SetTransportVideoParameters::<Identity, Impl, OFFSET>,
            GetTransportAudioParameters: GetTransportAudioParameters::<Identity, Impl, OFFSET>,
            SetTransportAudioParameters: SetTransportAudioParameters::<Identity, Impl, OFFSET>,
            SetMode: SetMode::<Identity, Impl, OFFSET>,
            Mode: Mode::<Identity, Impl, OFFSET>,
            SetRate: SetRate::<Identity, Impl, OFFSET>,
            Rate: Rate::<Identity, Impl, OFFSET>,
            GetChase: GetChase::<Identity, Impl, OFFSET>,
            SetChase: SetChase::<Identity, Impl, OFFSET>,
            GetBump: GetBump::<Identity, Impl, OFFSET>,
            SetBump: SetBump::<Identity, Impl, OFFSET>,
            AntiClogControl: AntiClogControl::<Identity, Impl, OFFSET>,
            SetAntiClogControl: SetAntiClogControl::<Identity, Impl, OFFSET>,
            GetEditPropertySet: GetEditPropertySet::<Identity, Impl, OFFSET>,
            SetEditPropertySet: SetEditPropertySet::<Identity, Impl, OFFSET>,
            GetEditProperty: GetEditProperty::<Identity, Impl, OFFSET>,
            SetEditProperty: SetEditProperty::<Identity, Impl, OFFSET>,
            EditStart: EditStart::<Identity, Impl, OFFSET>,
            SetEditStart: SetEditStart::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMExtTransport as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IAMExtendedErrorInfo_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn HasError(&self, phaserror: *mut i16) -> ::windows::core::Result<()>;
    fn ErrorDescription(&self, pbstrerrordescription: *mut ::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn ErrorCode(&self, perrorcode: *mut i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAMExtendedErrorInfo {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAMExtendedErrorInfo_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtendedErrorInfo_Impl, const OFFSET: isize>() -> IAMExtendedErrorInfo_Vtbl {
        unsafe extern "system" fn HasError<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtendedErrorInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phaserror: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.HasError(::core::mem::transmute_copy(&phaserror)).into()
        }
        unsafe extern "system" fn ErrorDescription<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtendedErrorInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrerrordescription: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ErrorDescription(::core::mem::transmute_copy(&pbstrerrordescription)).into()
        }
        unsafe extern "system" fn ErrorCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtendedErrorInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, perrorcode: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ErrorCode(::core::mem::transmute_copy(&perrorcode)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            HasError: HasError::<Identity, Impl, OFFSET>,
            ErrorDescription: ErrorDescription::<Identity, Impl, OFFSET>,
            ErrorCode: ErrorCode::<Identity, Impl, 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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAMExtendedSeeking {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAMExtendedSeeking_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtendedSeeking_Impl, const OFFSET: isize>() -> IAMExtendedSeeking_Vtbl {
        unsafe extern "system" fn ExSeekCapabilities<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtendedSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pexcapabilities: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ExSeekCapabilities(::core::mem::transmute_copy(&pexcapabilities)).into()
        }
        unsafe extern "system" fn MarkerCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtendedSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmarkercount: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MarkerCount(::core::mem::transmute_copy(&pmarkercount)).into()
        }
        unsafe extern "system" fn CurrentMarker<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtendedSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcurrentmarker: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CurrentMarker(::core::mem::transmute_copy(&pcurrentmarker)).into()
        }
        unsafe extern "system" fn GetMarkerTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtendedSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, markernum: i32, pmarkertime: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMarkerTime(::core::mem::transmute_copy(&markernum), ::core::mem::transmute_copy(&pmarkertime)).into()
        }
        unsafe extern "system" fn GetMarkerName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtendedSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, markernum: i32, pbstrmarkername: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMarkerName(::core::mem::transmute_copy(&markernum), ::core::mem::transmute_copy(&pbstrmarkername)).into()
        }
        unsafe extern "system" fn SetPlaybackSpeed<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtendedSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, speed: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPlaybackSpeed(::core::mem::transmute_copy(&speed)).into()
        }
        unsafe extern "system" fn PlaybackSpeed<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMExtendedSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pspeed: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlaybackSpeed(::core::mem::transmute_copy(&pspeed)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            ExSeekCapabilities: ExSeekCapabilities::<Identity, Impl, OFFSET>,
            MarkerCount: MarkerCount::<Identity, Impl, OFFSET>,
            CurrentMarker: CurrentMarker::<Identity, Impl, OFFSET>,
            GetMarkerTime: GetMarkerTime::<Identity, Impl, OFFSET>,
            GetMarkerName: GetMarkerName::<Identity, Impl, OFFSET>,
            SetPlaybackSpeed: SetPlaybackSpeed::<Identity, Impl, OFFSET>,
            PlaybackSpeed: PlaybackSpeed::<Identity, Impl, 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: &::core::option::Option<IPin>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IAMFilterGraphCallback {}
impl IAMFilterGraphCallback_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMFilterGraphCallback_Impl, const OFFSET: isize>() -> IAMFilterGraphCallback_Vtbl {
        unsafe extern "system" fn UnableToRender<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMFilterGraphCallback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppin: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnableToRender(::core::mem::transmute(&ppin)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), UnableToRender: UnableToRender::<Identity, Impl, 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<Impl = Impl>, Impl: IAMFilterMiscFlags_Impl, const OFFSET: isize>() -> IAMFilterMiscFlags_Vtbl {
        unsafe extern "system" fn GetMiscFlags<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMFilterMiscFlags_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> u32 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMiscFlags()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetMiscFlags: GetMiscFlags::<Identity, Impl, 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: &::core::option::Option<super::super::System::Com::IMoniker>) -> ::windows::core::Result<()>;
    fn CreatedFilter(&self, pfil: &::core::option::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<Impl = Impl>, Impl: IAMGraphBuilderCallback_Impl, const OFFSET: isize>() -> IAMGraphBuilderCallback_Vtbl {
        unsafe extern "system" fn SelectedFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMGraphBuilderCallback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmon: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectedFilter(::core::mem::transmute(&pmon)).into()
        }
        unsafe extern "system" fn CreatedFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMGraphBuilderCallback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfil: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CreatedFilter(::core::mem::transmute(&pfil)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SelectedFilter: SelectedFilter::<Identity, Impl, OFFSET>,
            CreatedFilter: CreatedFilter::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMGraphBuilderCallback as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IAMGraphStreams_Impl: Sized {
    fn FindUpstreamInterface(&self, ppin: &::core::option::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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IAMGraphStreams {}
#[cfg(feature = "Win32_Foundation")]
impl IAMGraphStreams_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMGraphStreams_Impl, const OFFSET: isize>() -> IAMGraphStreams_Vtbl {
        unsafe extern "system" fn FindUpstreamInterface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMGraphStreams_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.FindUpstreamInterface(::core::mem::transmute(&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<Impl = Impl>, Impl: IAMGraphStreams_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, busestreamoffset: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SyncUsingStreamOffset(::core::mem::transmute_copy(&busestreamoffset)).into()
        }
        unsafe extern "system" fn SetMaxGraphLatency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMGraphStreams_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rtmaxgraphlatency: i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMaxGraphLatency(::core::mem::transmute_copy(&rtmaxgraphlatency)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FindUpstreamInterface: FindUpstreamInterface::<Identity, Impl, OFFSET>,
            SyncUsingStreamOffset: SyncUsingStreamOffset::<Identity, Impl, OFFSET>,
            SetMaxGraphLatency: SetMaxGraphLatency::<Identity, Impl, 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<Impl = Impl>, Impl: IAMLatency_Impl, const OFFSET: isize>() -> IAMLatency_Vtbl {
        unsafe extern "system" fn GetLatency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLatency_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prtlatency: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLatency() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prtlatency, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetLatency: GetLatency::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMLatency as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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 i32) -> ::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(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IAMLine21Decoder {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl IAMLine21Decoder_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLine21Decoder_Impl, const OFFSET: isize>() -> IAMLine21Decoder_Vtbl {
        unsafe extern "system" fn GetDecoderLevel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLine21Decoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lplevel: *mut AM_LINE21_CCLEVEL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDecoderLevel(::core::mem::transmute_copy(&lplevel)).into()
        }
        unsafe extern "system" fn GetCurrentService<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLine21Decoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpservice: *mut AM_LINE21_CCSERVICE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentService(::core::mem::transmute_copy(&lpservice)).into()
        }
        unsafe extern "system" fn SetCurrentService<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLine21Decoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, service: AM_LINE21_CCSERVICE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCurrentService(::core::mem::transmute_copy(&service)).into()
        }
        unsafe extern "system" fn GetServiceState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLine21Decoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpstate: *mut AM_LINE21_CCSTATE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetServiceState(::core::mem::transmute_copy(&lpstate)).into()
        }
        unsafe extern "system" fn SetServiceState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLine21Decoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, state: AM_LINE21_CCSTATE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetServiceState(::core::mem::transmute_copy(&state)).into()
        }
        unsafe extern "system" fn GetOutputFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLine21Decoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpbmih: *mut super::super::Graphics::Gdi::BITMAPINFOHEADER) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetOutputFormat(::core::mem::transmute_copy(&lpbmih)).into()
        }
        unsafe extern "system" fn SetOutputFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLine21Decoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpbmi: *mut super::super::Graphics::Gdi::BITMAPINFO) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOutputFormat(::core::mem::transmute_copy(&lpbmi)).into()
        }
        unsafe extern "system" fn GetBackgroundColor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLine21Decoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwphyscolor: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetBackgroundColor(::core::mem::transmute_copy(&pdwphyscolor)).into()
        }
        unsafe extern "system" fn SetBackgroundColor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLine21Decoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwphyscolor: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBackgroundColor(::core::mem::transmute_copy(&dwphyscolor)).into()
        }
        unsafe extern "system" fn GetRedrawAlways<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLine21Decoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpboption: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRedrawAlways(::core::mem::transmute_copy(&lpboption)).into()
        }
        unsafe extern "system" fn SetRedrawAlways<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLine21Decoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, boption: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRedrawAlways(::core::mem::transmute_copy(&boption)).into()
        }
        unsafe extern "system" fn GetDrawBackgroundMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLine21Decoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpmode: *mut AM_LINE21_DRAWBGMODE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDrawBackgroundMode(::core::mem::transmute_copy(&lpmode)).into()
        }
        unsafe extern "system" fn SetDrawBackgroundMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMLine21Decoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: AM_LINE21_DRAWBGMODE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDrawBackgroundMode(::core::mem::transmute_copy(&mode)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDecoderLevel: GetDecoderLevel::<Identity, Impl, OFFSET>,
            GetCurrentService: GetCurrentService::<Identity, Impl, OFFSET>,
            SetCurrentService: SetCurrentService::<Identity, Impl, OFFSET>,
            GetServiceState: GetServiceState::<Identity, Impl, OFFSET>,
            SetServiceState: SetServiceState::<Identity, Impl, OFFSET>,
            GetOutputFormat: GetOutputFormat::<Identity, Impl, OFFSET>,
            SetOutputFormat: SetOutputFormat::<Identity, Impl, OFFSET>,
            GetBackgroundColor: GetBackgroundColor::<Identity, Impl, OFFSET>,
            SetBackgroundColor: SetBackgroundColor::<Identity, Impl, OFFSET>,
            GetRedrawAlways: GetRedrawAlways::<Identity, Impl, OFFSET>,
            SetRedrawAlways: SetRedrawAlways::<Identity, Impl, OFFSET>,
            GetDrawBackgroundMode: GetDrawBackgroundMode::<Identity, Impl, OFFSET>,
            SetDrawBackgroundMode: SetDrawBackgroundMode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMLine21Decoder as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAMMediaContent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAMMediaContent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent_Impl, const OFFSET: isize>() -> IAMMediaContent_Vtbl {
        unsafe extern "system" fn AuthorName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrauthorname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AuthorName(::core::mem::transmute_copy(&pbstrauthorname)).into()
        }
        unsafe extern "system" fn Title<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrtitle: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Title(::core::mem::transmute_copy(&pbstrtitle)).into()
        }
        unsafe extern "system" fn Rating<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrrating: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Rating(::core::mem::transmute_copy(&pbstrrating)).into()
        }
        unsafe extern "system" fn Description<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrdescription: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Description(::core::mem::transmute_copy(&pbstrdescription)).into()
        }
        unsafe extern "system" fn Copyright<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrcopyright: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Copyright(::core::mem::transmute_copy(&pbstrcopyright)).into()
        }
        unsafe extern "system" fn BaseURL<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrbaseurl: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.BaseURL(::core::mem::transmute_copy(&pbstrbaseurl)).into()
        }
        unsafe extern "system" fn LogoURL<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrlogourl: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.LogoURL(::core::mem::transmute_copy(&pbstrlogourl)).into()
        }
        unsafe extern "system" fn LogoIconURL<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrlogourl: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.LogoIconURL(::core::mem::transmute_copy(&pbstrlogourl)).into()
        }
        unsafe extern "system" fn WatermarkURL<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrwatermarkurl: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.WatermarkURL(::core::mem::transmute_copy(&pbstrwatermarkurl)).into()
        }
        unsafe extern "system" fn MoreInfoURL<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrmoreinfourl: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MoreInfoURL(::core::mem::transmute_copy(&pbstrmoreinfourl)).into()
        }
        unsafe extern "system" fn MoreInfoBannerImage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrmoreinfobannerimage: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MoreInfoBannerImage(::core::mem::transmute_copy(&pbstrmoreinfobannerimage)).into()
        }
        unsafe extern "system" fn MoreInfoBannerURL<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrmoreinfobannerurl: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MoreInfoBannerURL(::core::mem::transmute_copy(&pbstrmoreinfobannerurl)).into()
        }
        unsafe extern "system" fn MoreInfoText<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrmoreinfotext: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MoreInfoText(::core::mem::transmute_copy(&pbstrmoreinfotext)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            AuthorName: AuthorName::<Identity, Impl, OFFSET>,
            Title: Title::<Identity, Impl, OFFSET>,
            Rating: Rating::<Identity, Impl, OFFSET>,
            Description: Description::<Identity, Impl, OFFSET>,
            Copyright: Copyright::<Identity, Impl, OFFSET>,
            BaseURL: BaseURL::<Identity, Impl, OFFSET>,
            LogoURL: LogoURL::<Identity, Impl, OFFSET>,
            LogoIconURL: LogoIconURL::<Identity, Impl, OFFSET>,
            WatermarkURL: WatermarkURL::<Identity, Impl, OFFSET>,
            MoreInfoURL: MoreInfoURL::<Identity, Impl, OFFSET>,
            MoreInfoBannerImage: MoreInfoBannerImage::<Identity, Impl, OFFSET>,
            MoreInfoBannerURL: MoreInfoBannerURL::<Identity, Impl, OFFSET>,
            MoreInfoText: MoreInfoText::<Identity, Impl, 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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAMMediaContent2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAMMediaContent2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent2_Impl, const OFFSET: isize>() -> IAMMediaContent2_Vtbl {
        unsafe extern "system" fn get_MediaParameter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaContent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, entrynum: i32, bstrname: ::core::mem::ManuallyDrop<::windows::core::BSTR>, pbstrvalue: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_MediaParameter(::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<Impl = Impl>, Impl: IAMMediaContent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, entrynum: i32, index: i32, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_MediaParameterName(::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<Impl = Impl>, Impl: IAMMediaContent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pnumberentries: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlaylistCount(::core::mem::transmute_copy(&pnumberentries)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            get_MediaParameter: get_MediaParameter::<Identity, Impl, OFFSET>,
            get_MediaParameterName: get_MediaParameterName::<Identity, Impl, OFFSET>,
            PlaylistCount: PlaylistCount::<Identity, Impl, 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: &::core::option::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: &::core::option::Option<IAMMultiMediaStream>) -> ::windows::core::Result<()>;
    fn JoinFilter(&self, pmediastreamfilter: &::core::option::Option<IMediaStreamFilter>) -> ::windows::core::Result<()>;
    fn JoinFilterGraph(&self, pfiltergraph: &::core::option::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<Impl = Impl>, Impl: IAMMediaStream_Impl, const OFFSET: isize>() -> IAMMediaStream_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaStream_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&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<Impl = Impl>, Impl: IAMMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, state: FILTER_STATE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetState(::core::mem::transmute_copy(&state)).into()
        }
        unsafe extern "system" fn JoinAMMultiMediaStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pammultimediastream: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.JoinAMMultiMediaStream(::core::mem::transmute(&pammultimediastream)).into()
        }
        unsafe extern "system" fn JoinFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmediastreamfilter: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.JoinFilter(::core::mem::transmute(&pmediastreamfilter)).into()
        }
        unsafe extern "system" fn JoinFilterGraph<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfiltergraph: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.JoinFilterGraph(::core::mem::transmute(&pfiltergraph)).into()
        }
        Self {
            base__: IMediaStream_Vtbl::new::<Identity, Impl, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            SetState: SetState::<Identity, Impl, OFFSET>,
            JoinAMMultiMediaStream: JoinAMMultiMediaStream::<Identity, Impl, OFFSET>,
            JoinFilter: JoinFilter::<Identity, Impl, OFFSET>,
            JoinFilterGraph: JoinFilterGraph::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMMediaStream as ::windows::core::Interface>::IID || iid == &<IMediaStream as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IAMMediaTypeSample {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl IAMMediaTypeSample_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>() -> IAMMediaTypeSample_Vtbl {
        unsafe extern "system" fn SetPointer<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbuffer: *const u8, lsize: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPointer(::core::mem::transmute_copy(&pbuffer), ::core::mem::transmute_copy(&lsize)).into()
        }
        unsafe extern "system" fn GetPointer<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppbuffer: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPointer() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppbuffer, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> i32 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetSize()
        }
        unsafe extern "system" fn GetTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptimestart: *mut i64, ptimeend: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTime(::core::mem::transmute_copy(&ptimestart), ::core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn SetTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptimestart: *const i64, ptimeend: *const i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTime(::core::mem::transmute_copy(&ptimestart), ::core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn IsSyncPoint<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsSyncPoint().into()
        }
        unsafe extern "system" fn SetSyncPoint<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bissyncpoint: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSyncPoint(::core::mem::transmute_copy(&bissyncpoint)).into()
        }
        unsafe extern "system" fn IsPreroll<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsPreroll().into()
        }
        unsafe extern "system" fn SetPreroll<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bispreroll: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPreroll(::core::mem::transmute_copy(&bispreroll)).into()
        }
        unsafe extern "system" fn GetActualDataLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> i32 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetActualDataLength()
        }
        unsafe extern "system" fn SetActualDataLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, __midl__iammediatypesample0000: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetActualDataLength(::core::mem::transmute_copy(&__midl__iammediatypesample0000)).into()
        }
        unsafe extern "system" fn GetMediaType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppmediatype: *mut *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMediaType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppmediatype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMediaType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmediatype: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMediaType(::core::mem::transmute_copy(&pmediatype)).into()
        }
        unsafe extern "system" fn IsDiscontinuity<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsDiscontinuity().into()
        }
        unsafe extern "system" fn SetDiscontinuity<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bdiscontinuity: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDiscontinuity(::core::mem::transmute_copy(&bdiscontinuity)).into()
        }
        unsafe extern "system" fn GetMediaTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptimestart: *mut i64, ptimeend: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMediaTime(::core::mem::transmute_copy(&ptimestart), ::core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn SetMediaTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptimestart: *const i64, ptimeend: *const i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMediaTime(::core::mem::transmute_copy(&ptimestart), ::core::mem::transmute_copy(&ptimeend)).into()
        }
        Self {
            base__: IStreamSample_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetPointer: SetPointer::<Identity, Impl, OFFSET>,
            GetPointer: GetPointer::<Identity, Impl, OFFSET>,
            GetSize: GetSize::<Identity, Impl, OFFSET>,
            GetTime: GetTime::<Identity, Impl, OFFSET>,
            SetTime: SetTime::<Identity, Impl, OFFSET>,
            IsSyncPoint: IsSyncPoint::<Identity, Impl, OFFSET>,
            SetSyncPoint: SetSyncPoint::<Identity, Impl, OFFSET>,
            IsPreroll: IsPreroll::<Identity, Impl, OFFSET>,
            SetPreroll: SetPreroll::<Identity, Impl, OFFSET>,
            GetActualDataLength: GetActualDataLength::<Identity, Impl, OFFSET>,
            SetActualDataLength: SetActualDataLength::<Identity, Impl, OFFSET>,
            GetMediaType: GetMediaType::<Identity, Impl, OFFSET>,
            SetMediaType: SetMediaType::<Identity, Impl, OFFSET>,
            IsDiscontinuity: IsDiscontinuity::<Identity, Impl, OFFSET>,
            SetDiscontinuity: SetDiscontinuity::<Identity, Impl, OFFSET>,
            GetMediaTime: GetMediaTime::<Identity, Impl, OFFSET>,
            SetMediaTime: SetMediaTime::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMMediaTypeSample as ::windows::core::Interface>::IID || iid == &<IStreamSample as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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: &::core::option::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(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IAMMediaTypeStream {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl IAMMediaTypeStream_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeStream_Impl, const OFFSET: isize>() -> IAMMediaTypeStream_Vtbl {
        unsafe extern "system" fn GetFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmediatype: *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>, dwflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetFormat(::core::mem::transmute_copy(&pmediatype), ::core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn SetFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmediatype: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>, dwflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFormat(::core::mem::transmute_copy(&pmediatype), ::core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn CreateSample<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeStream_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CreateSample(::core::mem::transmute_copy(&lsamplesize), ::core::mem::transmute_copy(&pbbuffer), ::core::mem::transmute_copy(&dwflags), ::core::mem::transmute(&punkouter)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppammediatypesample, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStreamAllocatorRequirements<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pprops: *mut ALLOCATOR_PROPERTIES) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStreamAllocatorRequirements() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pprops, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStreamAllocatorRequirements<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMediaTypeStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pprops: *const ALLOCATOR_PROPERTIES) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStreamAllocatorRequirements(::core::mem::transmute_copy(&pprops)).into()
        }
        Self {
            base__: IMediaStream_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetFormat: GetFormat::<Identity, Impl, OFFSET>,
            SetFormat: SetFormat::<Identity, Impl, OFFSET>,
            CreateSample: CreateSample::<Identity, Impl, OFFSET>,
            GetStreamAllocatorRequirements: GetStreamAllocatorRequirements::<Identity, Impl, OFFSET>,
            SetStreamAllocatorRequirements: SetStreamAllocatorRequirements::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMMediaTypeStream as ::windows::core::Interface>::IID || iid == &<IMediaStream as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
pub trait IAMMultiMediaStream_Impl: Sized + IMultiMediaStream_Impl {
    fn Initialize(&self, streamtype: STREAM_TYPE, dwflags: AMMSF_MMS_INIT_FLAGS, pfiltergraph: &::core::option::Option<IGraphBuilder>) -> ::windows::core::Result<()>;
    fn GetFilterGraph(&self) -> ::windows::core::Result<IGraphBuilder>;
    fn GetFilter(&self) -> ::windows::core::Result<IMediaStreamFilter>;
    fn AddMediaStream(&self, pstreamobject: &::core::option::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: &::core::option::Option<super::super::System::Com::IBindCtx>, pmoniker: &::core::option::Option<super::super::System::Com::IMoniker>, dwflags: u32) -> ::windows::core::Result<()>;
    fn Render(&self, dwflags: u32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
impl ::windows::core::RuntimeName for IAMMultiMediaStream {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
impl IAMMultiMediaStream_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMultiMediaStream_Impl, const OFFSET: isize>() -> IAMMultiMediaStream_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, streamtype: STREAM_TYPE, dwflags: AMMSF_MMS_INIT_FLAGS, pfiltergraph: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute_copy(&streamtype), ::core::mem::transmute_copy(&dwflags), ::core::mem::transmute(&pfiltergraph)).into()
        }
        unsafe extern "system" fn GetFilterGraph<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppgraphbuilder: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFilterGraph() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppgraphbuilder, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppfilter: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFilter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppfilter, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AddMediaStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstreamobject: *mut ::core::ffi::c_void, purposeid: *const ::windows::core::GUID, dwflags: AMMSF_MS_FLAGS, ppnewstream: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AddMediaStream(::core::mem::transmute(&pstreamobject), ::core::mem::transmute_copy(&purposeid), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppnewstream, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OpenFile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszfilename: ::windows::core::PCWSTR, dwflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OpenFile(::core::mem::transmute(&pszfilename), ::core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn OpenMoniker<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMultiMediaStream_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OpenMoniker(::core::mem::transmute(&pctx), ::core::mem::transmute(&pmoniker), ::core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn Render<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Render(::core::mem::transmute_copy(&dwflags)).into()
        }
        Self {
            base__: IMultiMediaStream_Vtbl::new::<Identity, Impl, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetFilterGraph: GetFilterGraph::<Identity, Impl, OFFSET>,
            GetFilter: GetFilter::<Identity, Impl, OFFSET>,
            AddMediaStream: AddMediaStream::<Identity, Impl, OFFSET>,
            OpenFile: OpenFile::<Identity, Impl, OFFSET>,
            OpenMoniker: OpenMoniker::<Identity, Impl, OFFSET>,
            Render: Render::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMMultiMediaStream as ::windows::core::Interface>::IID || iid == &<IMultiMediaStream as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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 i16) -> ::windows::core::Result<()>;
    fn SetUseFixedUDPPort(&self, usefixedudpport: i16) -> ::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 i16) -> ::windows::core::Result<()>;
    fn SetUseHTTPProxy(&self, usehttpproxy: i16) -> ::windows::core::Result<()>;
    fn EnableAutoProxy(&self, penableautoproxy: *mut i16) -> ::windows::core::Result<()>;
    fn SetEnableAutoProxy(&self, enableautoproxy: i16) -> ::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 i16) -> ::windows::core::Result<()>;
    fn SetEnableMulticast(&self, enablemulticast: i16) -> ::windows::core::Result<()>;
    fn EnableUDP(&self, penableudp: *mut i16) -> ::windows::core::Result<()>;
    fn SetEnableUDP(&self, enableudp: i16) -> ::windows::core::Result<()>;
    fn EnableTCP(&self, penabletcp: *mut i16) -> ::windows::core::Result<()>;
    fn SetEnableTCP(&self, enabletcp: i16) -> ::windows::core::Result<()>;
    fn EnableHTTP(&self, penablehttp: *mut i16) -> ::windows::core::Result<()>;
    fn SetEnableHTTP(&self, enablehttp: i16) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAMNetShowConfig {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAMNetShowConfig_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>() -> IAMNetShowConfig_Vtbl {
        unsafe extern "system" fn BufferingTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbufferingtime: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.BufferingTime(::core::mem::transmute_copy(&pbufferingtime)).into()
        }
        unsafe extern "system" fn SetBufferingTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bufferingtime: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBufferingTime(::core::mem::transmute_copy(&bufferingtime)).into()
        }
        unsafe extern "system" fn UseFixedUDPPort<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pusefixedudpport: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UseFixedUDPPort(::core::mem::transmute_copy(&pusefixedudpport)).into()
        }
        unsafe extern "system" fn SetUseFixedUDPPort<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, usefixedudpport: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetUseFixedUDPPort(::core::mem::transmute_copy(&usefixedudpport)).into()
        }
        unsafe extern "system" fn FixedUDPPort<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfixedudpport: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.FixedUDPPort(::core::mem::transmute_copy(&pfixedudpport)).into()
        }
        unsafe extern "system" fn SetFixedUDPPort<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fixedudpport: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFixedUDPPort(::core::mem::transmute_copy(&fixedudpport)).into()
        }
        unsafe extern "system" fn UseHTTPProxy<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pusehttpproxy: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UseHTTPProxy(::core::mem::transmute_copy(&pusehttpproxy)).into()
        }
        unsafe extern "system" fn SetUseHTTPProxy<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, usehttpproxy: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetUseHTTPProxy(::core::mem::transmute_copy(&usehttpproxy)).into()
        }
        unsafe extern "system" fn EnableAutoProxy<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, penableautoproxy: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EnableAutoProxy(::core::mem::transmute_copy(&penableautoproxy)).into()
        }
        unsafe extern "system" fn SetEnableAutoProxy<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, enableautoproxy: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetEnableAutoProxy(::core::mem::transmute_copy(&enableautoproxy)).into()
        }
        unsafe extern "system" fn HTTPProxyHost<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrhttpproxyhost: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.HTTPProxyHost(::core::mem::transmute_copy(&pbstrhttpproxyhost)).into()
        }
        unsafe extern "system" fn SetHTTPProxyHost<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bstrhttpproxyhost: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetHTTPProxyHost(::core::mem::transmute(&bstrhttpproxyhost)).into()
        }
        unsafe extern "system" fn HTTPProxyPort<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phttpproxyport: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.HTTPProxyPort(::core::mem::transmute_copy(&phttpproxyport)).into()
        }
        unsafe extern "system" fn SetHTTPProxyPort<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, httpproxyport: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetHTTPProxyPort(::core::mem::transmute_copy(&httpproxyport)).into()
        }
        unsafe extern "system" fn EnableMulticast<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, penablemulticast: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EnableMulticast(::core::mem::transmute_copy(&penablemulticast)).into()
        }
        unsafe extern "system" fn SetEnableMulticast<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, enablemulticast: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetEnableMulticast(::core::mem::transmute_copy(&enablemulticast)).into()
        }
        unsafe extern "system" fn EnableUDP<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, penableudp: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EnableUDP(::core::mem::transmute_copy(&penableudp)).into()
        }
        unsafe extern "system" fn SetEnableUDP<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, enableudp: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetEnableUDP(::core::mem::transmute_copy(&enableudp)).into()
        }
        unsafe extern "system" fn EnableTCP<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, penabletcp: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EnableTCP(::core::mem::transmute_copy(&penabletcp)).into()
        }
        unsafe extern "system" fn SetEnableTCP<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, enabletcp: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetEnableTCP(::core::mem::transmute_copy(&enabletcp)).into()
        }
        unsafe extern "system" fn EnableHTTP<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, penablehttp: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EnableHTTP(::core::mem::transmute_copy(&penablehttp)).into()
        }
        unsafe extern "system" fn SetEnableHTTP<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, enablehttp: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetEnableHTTP(::core::mem::transmute_copy(&enablehttp)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            BufferingTime: BufferingTime::<Identity, Impl, OFFSET>,
            SetBufferingTime: SetBufferingTime::<Identity, Impl, OFFSET>,
            UseFixedUDPPort: UseFixedUDPPort::<Identity, Impl, OFFSET>,
            SetUseFixedUDPPort: SetUseFixedUDPPort::<Identity, Impl, OFFSET>,
            FixedUDPPort: FixedUDPPort::<Identity, Impl, OFFSET>,
            SetFixedUDPPort: SetFixedUDPPort::<Identity, Impl, OFFSET>,
            UseHTTPProxy: UseHTTPProxy::<Identity, Impl, OFFSET>,
            SetUseHTTPProxy: SetUseHTTPProxy::<Identity, Impl, OFFSET>,
            EnableAutoProxy: EnableAutoProxy::<Identity, Impl, OFFSET>,
            SetEnableAutoProxy: SetEnableAutoProxy::<Identity, Impl, OFFSET>,
            HTTPProxyHost: HTTPProxyHost::<Identity, Impl, OFFSET>,
            SetHTTPProxyHost: SetHTTPProxyHost::<Identity, Impl, OFFSET>,
            HTTPProxyPort: HTTPProxyPort::<Identity, Impl, OFFSET>,
            SetHTTPProxyPort: SetHTTPProxyPort::<Identity, Impl, OFFSET>,
            EnableMulticast: EnableMulticast::<Identity, Impl, OFFSET>,
            SetEnableMulticast: SetEnableMulticast::<Identity, Impl, OFFSET>,
            EnableUDP: EnableUDP::<Identity, Impl, OFFSET>,
            SetEnableUDP: SetEnableUDP::<Identity, Impl, OFFSET>,
            EnableTCP: EnableTCP::<Identity, Impl, OFFSET>,
            SetEnableTCP: SetEnableTCP::<Identity, Impl, OFFSET>,
            EnableHTTP: EnableHTTP::<Identity, Impl, OFFSET>,
            SetEnableHTTP: SetEnableHTTP::<Identity, Impl, 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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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 i16) -> ::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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAMNetShowExProps {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAMNetShowExProps_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowExProps_Impl, const OFFSET: isize>() -> IAMNetShowExProps_Vtbl {
        unsafe extern "system" fn SourceProtocol<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowExProps_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psourceprotocol: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SourceProtocol(::core::mem::transmute_copy(&psourceprotocol)).into()
        }
        unsafe extern "system" fn Bandwidth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowExProps_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbandwidth: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Bandwidth(::core::mem::transmute_copy(&pbandwidth)).into()
        }
        unsafe extern "system" fn ErrorCorrection<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowExProps_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrerrorcorrection: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ErrorCorrection(::core::mem::transmute_copy(&pbstrerrorcorrection)).into()
        }
        unsafe extern "system" fn CodecCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowExProps_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcodeccount: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CodecCount(::core::mem::transmute_copy(&pcodeccount)).into()
        }
        unsafe extern "system" fn GetCodecInstalled<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowExProps_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, codecnum: i32, pcodecinstalled: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCodecInstalled(::core::mem::transmute_copy(&codecnum), ::core::mem::transmute_copy(&pcodecinstalled)).into()
        }
        unsafe extern "system" fn GetCodecDescription<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowExProps_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, codecnum: i32, pbstrcodecdescription: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCodecDescription(::core::mem::transmute_copy(&codecnum), ::core::mem::transmute_copy(&pbstrcodecdescription)).into()
        }
        unsafe extern "system" fn GetCodecURL<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowExProps_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, codecnum: i32, pbstrcodecurl: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCodecURL(::core::mem::transmute_copy(&codecnum), ::core::mem::transmute_copy(&pbstrcodecurl)).into()
        }
        unsafe extern "system" fn CreationDate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowExProps_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcreationdate: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CreationDate(::core::mem::transmute_copy(&pcreationdate)).into()
        }
        unsafe extern "system" fn SourceLink<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowExProps_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrsourcelink: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SourceLink(::core::mem::transmute_copy(&pbstrsourcelink)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            SourceProtocol: SourceProtocol::<Identity, Impl, OFFSET>,
            Bandwidth: Bandwidth::<Identity, Impl, OFFSET>,
            ErrorCorrection: ErrorCorrection::<Identity, Impl, OFFSET>,
            CodecCount: CodecCount::<Identity, Impl, OFFSET>,
            GetCodecInstalled: GetCodecInstalled::<Identity, Impl, OFFSET>,
            GetCodecDescription: GetCodecDescription::<Identity, Impl, OFFSET>,
            GetCodecURL: GetCodecURL::<Identity, Impl, OFFSET>,
            CreationDate: CreationDate::<Identity, Impl, OFFSET>,
            SourceLink: SourceLink::<Identity, Impl, 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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IAMNetShowPreroll_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn SetPreroll(&self, fpreroll: i16) -> ::windows::core::Result<()>;
    fn Preroll(&self, pfpreroll: *mut i16) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAMNetShowPreroll {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAMNetShowPreroll_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowPreroll_Impl, const OFFSET: isize>() -> IAMNetShowPreroll_Vtbl {
        unsafe extern "system" fn SetPreroll<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowPreroll_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fpreroll: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPreroll(::core::mem::transmute_copy(&fpreroll)).into()
        }
        unsafe extern "system" fn Preroll<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetShowPreroll_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfpreroll: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Preroll(::core::mem::transmute_copy(&pfpreroll)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetPreroll: SetPreroll::<Identity, Impl, OFFSET>,
            Preroll: Preroll::<Identity, Impl, 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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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 i16) -> ::windows::core::Result<()>;
    fn BufferingProgress(&self, pbufferingprogress: *mut i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAMNetworkStatus {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAMNetworkStatus_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetworkStatus_Impl, const OFFSET: isize>() -> IAMNetworkStatus_Vtbl {
        unsafe extern "system" fn ReceivedPackets<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetworkStatus_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, preceivedpackets: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReceivedPackets(::core::mem::transmute_copy(&preceivedpackets)).into()
        }
        unsafe extern "system" fn RecoveredPackets<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetworkStatus_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, precoveredpackets: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RecoveredPackets(::core::mem::transmute_copy(&precoveredpackets)).into()
        }
        unsafe extern "system" fn LostPackets<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetworkStatus_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plostpackets: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.LostPackets(::core::mem::transmute_copy(&plostpackets)).into()
        }
        unsafe extern "system" fn ReceptionQuality<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetworkStatus_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, preceptionquality: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReceptionQuality(::core::mem::transmute_copy(&preceptionquality)).into()
        }
        unsafe extern "system" fn BufferingCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetworkStatus_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbufferingcount: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.BufferingCount(::core::mem::transmute_copy(&pbufferingcount)).into()
        }
        unsafe extern "system" fn IsBroadcast<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetworkStatus_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pisbroadcast: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsBroadcast(::core::mem::transmute_copy(&pisbroadcast)).into()
        }
        unsafe extern "system" fn BufferingProgress<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMNetworkStatus_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbufferingprogress: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.BufferingProgress(::core::mem::transmute_copy(&pbufferingprogress)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            ReceivedPackets: ReceivedPackets::<Identity, Impl, OFFSET>,
            RecoveredPackets: RecoveredPackets::<Identity, Impl, OFFSET>,
            LostPackets: LostPackets::<Identity, Impl, OFFSET>,
            ReceptionQuality: ReceptionQuality::<Identity, Impl, OFFSET>,
            BufferingCount: BufferingCount::<Identity, Impl, OFFSET>,
            IsBroadcast: IsBroadcast::<Identity, Impl, OFFSET>,
            BufferingProgress: BufferingProgress::<Identity, Impl, 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<Impl = Impl>, Impl: IAMOpenProgress_Impl, const OFFSET: isize>() -> IAMOpenProgress_Vtbl {
        unsafe extern "system" fn QueryProgress<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMOpenProgress_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plltotal: *mut i64, pllcurrent: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.QueryProgress(::core::mem::transmute_copy(&plltotal), ::core::mem::transmute_copy(&pllcurrent)).into()
        }
        unsafe extern "system" fn AbortOperation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMOpenProgress_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AbortOperation().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryProgress: QueryProgress::<Identity, Impl, OFFSET>,
            AbortOperation: AbortOperation::<Identity, Impl, 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<Impl = Impl>, Impl: IAMOverlayFX_Impl, const OFFSET: isize>() -> IAMOverlayFX_Vtbl {
        unsafe extern "system" fn QueryOverlayFXCaps<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMOverlayFX_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpdwoverlayfxcaps: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.QueryOverlayFXCaps() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpdwoverlayfxcaps, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOverlayFX<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMOverlayFX_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwoverlayfx: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOverlayFX(::core::mem::transmute_copy(&dwoverlayfx)).into()
        }
        unsafe extern "system" fn GetOverlayFX<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMOverlayFX_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpdwoverlayfx: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOverlayFX() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpdwoverlayfx, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryOverlayFXCaps: QueryOverlayFXCaps::<Identity, Impl, OFFSET>,
            SetOverlayFX: SetOverlayFX::<Identity, Impl, OFFSET>,
            GetOverlayFX: GetOverlayFX::<Identity, Impl, 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<Impl = Impl>, Impl: IAMParse_Impl, const OFFSET: isize>() -> IAMParse_Vtbl {
        unsafe extern "system" fn GetParseTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMParse_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prtcurrent: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetParseTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prtcurrent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetParseTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMParse_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rtcurrent: i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetParseTime(::core::mem::transmute_copy(&rtcurrent)).into()
        }
        unsafe extern "system" fn Flush<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMParse_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Flush().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetParseTime: GetParseTime::<Identity, Impl, OFFSET>,
            SetParseTime: SetParseTime::<Identity, Impl, OFFSET>,
            Flush: Flush::<Identity, Impl, 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<Impl = Impl>, Impl: IAMPhysicalPinInfo_Impl, const OFFSET: isize>() -> IAMPhysicalPinInfo_Vtbl {
        unsafe extern "system" fn GetPhysicalType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPhysicalPinInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptype: *mut i32, ppsztype: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPhysicalType(::core::mem::transmute_copy(&ptype), ::core::mem::transmute_copy(&ppsztype)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetPhysicalType: GetPhysicalType::<Identity, Impl, 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 ::core::option::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<Impl = Impl>, Impl: IAMPlayList_Impl, const OFFSET: isize>() -> IAMPlayList_Vtbl {
        unsafe extern "system" fn GetFlags<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayList_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwflags: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFlags() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwflags, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItemCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayList_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwitems: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetItemCount() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwitems, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItem<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayList_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwitemindex: u32, ppitem: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetItem(::core::mem::transmute_copy(&dwitemindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppitem, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNamedEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayList_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetNamedEvent(::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<Impl = Impl>, Impl: IAMPlayList_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwrepeatcount: *mut u32, pdwrepeatstart: *mut u32, pdwrepeatend: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRepeatInfo(::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, Impl, OFFSET>,
            GetItemCount: GetItemCount::<Identity, Impl, OFFSET>,
            GetItem: GetItem::<Identity, Impl, OFFSET>,
            GetNamedEvent: GetNamedEvent::<Identity, Impl, OFFSET>,
            GetRepeatInfo: GetRepeatInfo::<Identity, Impl, 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<Impl = Impl>, Impl: IAMPlayListItem_Impl, const OFFSET: isize>() -> IAMPlayListItem_Vtbl {
        unsafe extern "system" fn GetFlags<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayListItem_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwflags: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFlags() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwflags, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayListItem_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwsources: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSourceCount() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwsources, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceURL<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayListItem_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwsourceindex: u32, pbstrurl: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSourceURL(::core::mem::transmute_copy(&dwsourceindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrurl, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceStart<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayListItem_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwsourceindex: u32, prtstart: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSourceStart(::core::mem::transmute_copy(&dwsourceindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prtstart, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceDuration<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayListItem_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwsourceindex: u32, prtduration: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSourceDuration(::core::mem::transmute_copy(&dwsourceindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prtduration, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceStartMarker<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayListItem_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwsourceindex: u32, pdwmarker: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSourceStartMarker(::core::mem::transmute_copy(&dwsourceindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwmarker, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceEndMarker<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayListItem_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwsourceindex: u32, pdwmarker: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSourceEndMarker(::core::mem::transmute_copy(&dwsourceindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwmarker, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceStartMarkerName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayListItem_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwsourceindex: u32, pbstrstartmarker: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSourceStartMarkerName(::core::mem::transmute_copy(&dwsourceindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrstartmarker, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceEndMarkerName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayListItem_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwsourceindex: u32, pbstrendmarker: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSourceEndMarkerName(::core::mem::transmute_copy(&dwsourceindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrendmarker, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLinkURL<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayListItem_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrurl: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLinkURL() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrurl, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetScanDuration<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPlayListItem_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwsourceindex: u32, prtscanduration: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetScanDuration(::core::mem::transmute_copy(&dwsourceindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prtscanduration, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetFlags: GetFlags::<Identity, Impl, OFFSET>,
            GetSourceCount: GetSourceCount::<Identity, Impl, OFFSET>,
            GetSourceURL: GetSourceURL::<Identity, Impl, OFFSET>,
            GetSourceStart: GetSourceStart::<Identity, Impl, OFFSET>,
            GetSourceDuration: GetSourceDuration::<Identity, Impl, OFFSET>,
            GetSourceStartMarker: GetSourceStartMarker::<Identity, Impl, OFFSET>,
            GetSourceEndMarker: GetSourceEndMarker::<Identity, Impl, OFFSET>,
            GetSourceStartMarkerName: GetSourceStartMarkerName::<Identity, Impl, OFFSET>,
            GetSourceEndMarkerName: GetSourceEndMarkerName::<Identity, Impl, OFFSET>,
            GetLinkURL: GetLinkURL::<Identity, Impl, OFFSET>,
            GetScanDuration: GetScanDuration::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMPlayListItem as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IAMPluginControl {}
#[cfg(feature = "Win32_Foundation")]
impl IAMPluginControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPluginControl_Impl, const OFFSET: isize>() -> IAMPluginControl_Vtbl {
        unsafe extern "system" fn GetPreferredClsid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPluginControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, subtype: *const ::windows::core::GUID, clsid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPreferredClsid(::core::mem::transmute_copy(&subtype)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(clsid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPreferredClsidByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPluginControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: u32, subtype: *mut ::windows::core::GUID, clsid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPreferredClsidByIndex(::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<Impl = Impl>, Impl: IAMPluginControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, subtype: *const ::windows::core::GUID, clsid: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPreferredClsid(::core::mem::transmute_copy(&subtype), ::core::mem::transmute_copy(&clsid)).into()
        }
        unsafe extern "system" fn IsDisabled<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPluginControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, clsid: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsDisabled(::core::mem::transmute_copy(&clsid)).into()
        }
        unsafe extern "system" fn GetDisabledByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPluginControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: u32, clsid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDisabledByIndex(::core::mem::transmute_copy(&index)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(clsid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDisabled<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPluginControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, clsid: *const ::windows::core::GUID, disabled: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDisabled(::core::mem::transmute_copy(&clsid), ::core::mem::transmute_copy(&disabled)).into()
        }
        unsafe extern "system" fn IsLegacyDisabled<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPluginControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dllname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsLegacyDisabled(::core::mem::transmute(&dllname)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPreferredClsid: GetPreferredClsid::<Identity, Impl, OFFSET>,
            GetPreferredClsidByIndex: GetPreferredClsidByIndex::<Identity, Impl, OFFSET>,
            SetPreferredClsid: SetPreferredClsid::<Identity, Impl, OFFSET>,
            IsDisabled: IsDisabled::<Identity, Impl, OFFSET>,
            GetDisabledByIndex: GetDisabledByIndex::<Identity, Impl, OFFSET>,
            SetDisabled: SetDisabled::<Identity, Impl, OFFSET>,
            IsLegacyDisabled: IsLegacyDisabled::<Identity, Impl, 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<Impl = Impl>, Impl: IAMPushSource_Impl, const OFFSET: isize>() -> IAMPushSource_Vtbl {
        unsafe extern "system" fn GetPushSourceFlags<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPushSource_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pflags: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPushSourceFlags() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pflags, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPushSourceFlags<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPushSource_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPushSourceFlags(::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn SetStreamOffset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPushSource_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rtoffset: i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStreamOffset(::core::mem::transmute_copy(&rtoffset)).into()
        }
        unsafe extern "system" fn GetStreamOffset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPushSource_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prtoffset: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStreamOffset() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prtoffset, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMaxStreamOffset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPushSource_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prtmaxoffset: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMaxStreamOffset() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prtmaxoffset, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxStreamOffset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMPushSource_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rtmaxoffset: i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMaxStreamOffset(::core::mem::transmute_copy(&rtmaxoffset)).into()
        }
        Self {
            base__: IAMLatency_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetPushSourceFlags: GetPushSourceFlags::<Identity, Impl, OFFSET>,
            SetPushSourceFlags: SetPushSourceFlags::<Identity, Impl, OFFSET>,
            SetStreamOffset: SetStreamOffset::<Identity, Impl, OFFSET>,
            GetStreamOffset: GetStreamOffset::<Identity, Impl, OFFSET>,
            GetMaxStreamOffset: GetMaxStreamOffset::<Identity, Impl, OFFSET>,
            SetMaxStreamOffset: SetMaxStreamOffset::<Identity, Impl, 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<Impl = Impl>, Impl: IAMRebuild_Impl, const OFFSET: isize>() -> IAMRebuild_Vtbl {
        unsafe extern "system" fn RebuildNow<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMRebuild_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RebuildNow().into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RebuildNow: RebuildNow::<Identity, Impl, 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: *mut ::core::ffi::c_void) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IAMResourceControl {}
impl IAMResourceControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMResourceControl_Impl, const OFFSET: isize>() -> IAMResourceControl_Vtbl {
        unsafe extern "system" fn Reserve<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMResourceControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwflags: u32, pvreserved: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reserve(::core::mem::transmute_copy(&dwflags), ::core::mem::transmute_copy(&pvreserved)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Reserve: Reserve::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMResourceControl as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAMStats {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAMStats_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStats_Impl, const OFFSET: isize>() -> IAMStats_Vtbl {
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStats_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Count<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStats_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plcount: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Count() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plcount, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetValueByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStats_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lindex: i32, szname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>, lcount: *mut i32, dlast: *mut f64, daverage: *mut f64, dstddev: *mut f64, dmin: *mut f64, dmax: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetValueByIndex(::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<Impl = Impl>, Impl: IAMStats_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, szname: ::core::mem::ManuallyDrop<::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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetValueByName(::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<Impl = Impl>, Impl: IAMStats_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, szname: ::core::mem::ManuallyDrop<::windows::core::BSTR>, lcreate: i32, plindex: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetIndex(::core::mem::transmute(&szname), ::core::mem::transmute_copy(&lcreate)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plindex, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AddValue<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStats_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lindex: i32, dvalue: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AddValue(::core::mem::transmute_copy(&lindex), ::core::mem::transmute_copy(&dvalue)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Reset: Reset::<Identity, Impl, OFFSET>,
            Count: Count::<Identity, Impl, OFFSET>,
            GetValueByIndex: GetValueByIndex::<Identity, Impl, OFFSET>,
            GetValueByName: GetValueByName::<Identity, Impl, OFFSET>,
            GetIndex: GetIndex::<Identity, Impl, OFFSET>,
            AddValue: AddValue::<Identity, Impl, 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(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
pub trait IAMStreamConfig_Impl: Sized {
    fn SetFormat(&self, pmt: *mut 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(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IAMStreamConfig {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl IAMStreamConfig_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStreamConfig_Impl, const OFFSET: isize>() -> IAMStreamConfig_Vtbl {
        unsafe extern "system" fn SetFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStreamConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmt: *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFormat(::core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn GetFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStreamConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppmt: *mut *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFormat() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppmt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNumberOfCapabilities<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStreamConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, picount: *mut i32, pisize: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetNumberOfCapabilities(::core::mem::transmute_copy(&picount), ::core::mem::transmute_copy(&pisize)).into()
        }
        unsafe extern "system" fn GetStreamCaps<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStreamConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, iindex: i32, ppmt: *mut *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>, pscc: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetStreamCaps(::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, Impl, OFFSET>,
            GetFormat: GetFormat::<Identity, Impl, OFFSET>,
            GetNumberOfCapabilities: GetNumberOfCapabilities::<Identity, Impl, OFFSET>,
            GetStreamCaps: GetStreamCaps::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMStreamConfig as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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) -> ::windows::core::Result<AM_STREAM_INFO>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IAMStreamControl {}
#[cfg(feature = "Win32_Foundation")]
impl IAMStreamControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStreamControl_Impl, const OFFSET: isize>() -> IAMStreamControl_Vtbl {
        unsafe extern "system" fn StartAt<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStreamControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptstart: *const i64, dwcookie: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StartAt(::core::mem::transmute_copy(&ptstart), ::core::mem::transmute_copy(&dwcookie)).into()
        }
        unsafe extern "system" fn StopAt<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStreamControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptstop: *const i64, bsendextra: super::super::Foundation::BOOL, dwcookie: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StopAt(::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<Impl = Impl>, Impl: IAMStreamControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pinfo: *mut AM_STREAM_INFO) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetInfo() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pinfo, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartAt: StartAt::<Identity, Impl, OFFSET>,
            StopAt: StopAt::<Identity, Impl, OFFSET>,
            GetInfo: GetInfo::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMStreamControl as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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 ::core::option::Option<::windows::core::IUnknown>, ppunk: *mut ::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
    fn Enable(&self, lindex: i32, dwflags: u32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IAMStreamSelect {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl IAMStreamSelect_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStreamSelect_Impl, const OFFSET: isize>() -> IAMStreamSelect_Vtbl {
        unsafe extern "system" fn Count<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStreamSelect_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcstreams: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Count() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcstreams, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Info<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMStreamSelect_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lindex: i32, ppmt: *mut *mut ::core::mem::ManuallyDrop<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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Info(::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<Impl = Impl>, Impl: IAMStreamSelect_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lindex: i32, dwflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Enable(::core::mem::transmute_copy(&lindex), ::core::mem::transmute_copy(&dwflags)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, Impl, OFFSET>,
            Info: Info::<Identity, Impl, OFFSET>,
            Enable: Enable::<Identity, Impl, 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: &::core::option::Option<IAMTunerNotification>, levents: i32) -> ::windows::core::Result<()>;
    fn UnRegisterNotificationCallBack(&self, pnotify: &::core::option::Option<IAMTunerNotification>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IAMTVAudio {}
impl IAMTVAudio_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVAudio_Impl, const OFFSET: isize>() -> IAMTVAudio_Vtbl {
        unsafe extern "system" fn GetHardwareSupportedTVAudioModes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVAudio_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plmodes: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetHardwareSupportedTVAudioModes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plmodes, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAvailableTVAudioModes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVAudio_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plmodes: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAvailableTVAudioModes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plmodes, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TVAudioMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVAudio_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plmode: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TVAudioMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plmode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTVAudioMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVAudio_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lmode: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTVAudioMode(::core::mem::transmute_copy(&lmode)).into()
        }
        unsafe extern "system" fn RegisterNotificationCallBack<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVAudio_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pnotify: *mut ::core::ffi::c_void, levents: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterNotificationCallBack(::core::mem::transmute(&pnotify), ::core::mem::transmute_copy(&levents)).into()
        }
        unsafe extern "system" fn UnRegisterNotificationCallBack<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVAudio_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pnotify: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnRegisterNotificationCallBack(::core::mem::transmute(&pnotify)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetHardwareSupportedTVAudioModes: GetHardwareSupportedTVAudioModes::<Identity, Impl, OFFSET>,
            GetAvailableTVAudioModes: GetAvailableTVAudioModes::<Identity, Impl, OFFSET>,
            TVAudioMode: TVAudioMode::<Identity, Impl, OFFSET>,
            SetTVAudioMode: SetTVAudioMode::<Identity, Impl, OFFSET>,
            RegisterNotificationCallBack: RegisterNotificationCallBack::<Identity, Impl, OFFSET>,
            UnRegisterNotificationCallBack: UnRegisterNotificationCallBack::<Identity, Impl, 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<Impl = Impl>, Impl: IAMTVAudioNotification_Impl, const OFFSET: isize>() -> IAMTVAudioNotification_Vtbl {
        unsafe extern "system" fn OnEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVAudioNotification_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, event: AMTVAudioEventType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnEvent(::core::mem::transmute_copy(&event)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnEvent: OnEvent::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMTVAudioNotification as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IAMTVTuner {}
#[cfg(feature = "Win32_Foundation")]
impl IAMTVTuner_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVTuner_Impl, const OFFSET: isize>() -> IAMTVTuner_Vtbl {
        unsafe extern "system" fn AvailableTVFormats<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lanalogvideostandard: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AvailableTVFormats() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lanalogvideostandard, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TVFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, planalogvideostandard: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TVFormat() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(planalogvideostandard, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AutoTune<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lchannel: i32, plfoundsignal: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AutoTune(::core::mem::transmute_copy(&lchannel)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plfoundsignal, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn StoreAutoTune<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StoreAutoTune().into()
        }
        unsafe extern "system" fn NumInputConnections<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plnuminputconnections: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.NumInputConnections() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plnuminputconnections, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_InputType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lindex: i32, inputtype: TunerInputType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_InputType(::core::mem::transmute_copy(&lindex), ::core::mem::transmute_copy(&inputtype)).into()
        }
        unsafe extern "system" fn get_InputType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lindex: i32, pinputtype: *mut TunerInputType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_InputType(::core::mem::transmute_copy(&lindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pinputtype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetConnectInput<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lindex: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetConnectInput(::core::mem::transmute_copy(&lindex)).into()
        }
        unsafe extern "system" fn ConnectInput<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plindex: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ConnectInput() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plindex, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VideoFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lfreq: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VideoFrequency() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lfreq, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AudioFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTVTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lfreq: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AudioFrequency() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lfreq, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IAMTuner_Vtbl::new::<Identity, Impl, OFFSET>(),
            AvailableTVFormats: AvailableTVFormats::<Identity, Impl, OFFSET>,
            TVFormat: TVFormat::<Identity, Impl, OFFSET>,
            AutoTune: AutoTune::<Identity, Impl, OFFSET>,
            StoreAutoTune: StoreAutoTune::<Identity, Impl, OFFSET>,
            NumInputConnections: NumInputConnections::<Identity, Impl, OFFSET>,
            put_InputType: put_InputType::<Identity, Impl, OFFSET>,
            get_InputType: get_InputType::<Identity, Impl, OFFSET>,
            SetConnectInput: SetConnectInput::<Identity, Impl, OFFSET>,
            ConnectInput: ConnectInput::<Identity, Impl, OFFSET>,
            VideoFrequency: VideoFrequency::<Identity, Impl, OFFSET>,
            AudioFrequency: AudioFrequency::<Identity, Impl, 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<Impl = Impl>, Impl: IAMTimecodeDisplay_Impl, const OFFSET: isize>() -> IAMTimecodeDisplay_Vtbl {
        unsafe extern "system" fn GetTCDisplayEnable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeDisplay_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstate: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTCDisplayEnable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTCDisplayEnable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeDisplay_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, state: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTCDisplayEnable(::core::mem::transmute_copy(&state)).into()
        }
        unsafe extern "system" fn GetTCDisplay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeDisplay_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param: i32, pvalue: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTCDisplay(::core::mem::transmute_copy(&param)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTCDisplay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeDisplay_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param: i32, value: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTCDisplay(::core::mem::transmute_copy(&param), ::core::mem::transmute_copy(&value)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTCDisplayEnable: GetTCDisplayEnable::<Identity, Impl, OFFSET>,
            SetTCDisplayEnable: SetTCDisplayEnable::<Identity, Impl, OFFSET>,
            GetTCDisplay: GetTCDisplay::<Identity, Impl, OFFSET>,
            SetTCDisplay: SetTCDisplay::<Identity, Impl, 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: *mut super::TIMECODE_SAMPLE) -> ::windows::core::Result<()>;
    fn GetTimecode(&self) -> ::windows::core::Result<super::TIMECODE_SAMPLE>;
}
impl ::windows::core::RuntimeName for IAMTimecodeGenerator {}
impl IAMTimecodeGenerator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeGenerator_Impl, const OFFSET: isize>() -> IAMTimecodeGenerator_Vtbl {
        unsafe extern "system" fn GetTCGMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeGenerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param: i32, pvalue: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTCGMode(::core::mem::transmute_copy(&param)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTCGMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeGenerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param: i32, value: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTCGMode(::core::mem::transmute_copy(&param), ::core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn SetVITCLine<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeGenerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, line: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVITCLine(::core::mem::transmute_copy(&line)).into()
        }
        unsafe extern "system" fn VITCLine<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeGenerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pline: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VITCLine() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pline, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTimecode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeGenerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptimecodesample: *mut super::TIMECODE_SAMPLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTimecode(::core::mem::transmute_copy(&ptimecodesample)).into()
        }
        unsafe extern "system" fn GetTimecode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeGenerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptimecodesample: *mut super::TIMECODE_SAMPLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTimecode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ptimecodesample, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTCGMode: GetTCGMode::<Identity, Impl, OFFSET>,
            SetTCGMode: SetTCGMode::<Identity, Impl, OFFSET>,
            SetVITCLine: SetVITCLine::<Identity, Impl, OFFSET>,
            VITCLine: VITCLine::<Identity, Impl, OFFSET>,
            SetTimecode: SetTimecode::<Identity, Impl, OFFSET>,
            GetTimecode: GetTimecode::<Identity, Impl, 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) -> ::windows::core::Result<super::TIMECODE_SAMPLE>;
}
impl ::windows::core::RuntimeName for IAMTimecodeReader {}
impl IAMTimecodeReader_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeReader_Impl, const OFFSET: isize>() -> IAMTimecodeReader_Vtbl {
        unsafe extern "system" fn GetTCRMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeReader_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param: i32, pvalue: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTCRMode(::core::mem::transmute_copy(&param)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTCRMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeReader_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param: i32, value: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTCRMode(::core::mem::transmute_copy(&param), ::core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn SetVITCLine<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeReader_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, line: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVITCLine(::core::mem::transmute_copy(&line)).into()
        }
        unsafe extern "system" fn VITCLine<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeReader_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pline: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VITCLine() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pline, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTimecode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTimecodeReader_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptimecodesample: *mut super::TIMECODE_SAMPLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTimecode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ptimecodesample, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTCRMode: GetTCRMode::<Identity, Impl, OFFSET>,
            SetTCRMode: SetTCRMode::<Identity, Impl, OFFSET>,
            SetVITCLine: SetVITCLine::<Identity, Impl, OFFSET>,
            VITCLine: VITCLine::<Identity, Impl, OFFSET>,
            GetTimecode: GetTimecode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMTimecodeReader as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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: &::core::option::Option<IAMTunerNotification>, levents: i32) -> ::windows::core::Result<()>;
    fn UnRegisterNotificationCallBack(&self, pnotify: &::core::option::Option<IAMTunerNotification>) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IAMTuner {}
#[cfg(feature = "Win32_Foundation")]
impl IAMTuner_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>() -> IAMTuner_Vtbl {
        unsafe extern "system" fn put_Channel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lchannel: i32, lvideosubchannel: i32, laudiosubchannel: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Channel(::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<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plchannel: *mut i32, plvideosubchannel: *mut i32, plaudiosubchannel: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Channel(::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<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lchannelmin: *mut i32, lchannelmax: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChannelMinMax(::core::mem::transmute_copy(&lchannelmin), ::core::mem::transmute_copy(&lchannelmax)).into()
        }
        unsafe extern "system" fn SetCountryCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lcountrycode: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCountryCode(::core::mem::transmute_copy(&lcountrycode)).into()
        }
        unsafe extern "system" fn CountryCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plcountrycode: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CountryCode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plcountrycode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTuningSpace<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ltuningspace: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTuningSpace(::core::mem::transmute_copy(&ltuningspace)).into()
        }
        unsafe extern "system" fn TuningSpace<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pltuningspace: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TuningSpace() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pltuningspace, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Logon<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hcurrentuser: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Logon(::core::mem::transmute_copy(&hcurrentuser)).into()
        }
        unsafe extern "system" fn Logout<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Logout().into()
        }
        unsafe extern "system" fn SignalPresent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plsignalstrength: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SignalPresent() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plsignalstrength, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lmode: AMTunerModeType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMode(::core::mem::transmute_copy(&lmode)).into()
        }
        unsafe extern "system" fn Mode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plmode: *mut AMTunerModeType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Mode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plmode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAvailableModes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plmodes: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAvailableModes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plmodes, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterNotificationCallBack<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pnotify: *mut ::core::ffi::c_void, levents: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterNotificationCallBack(::core::mem::transmute(&pnotify), ::core::mem::transmute_copy(&levents)).into()
        }
        unsafe extern "system" fn UnRegisterNotificationCallBack<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pnotify: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnRegisterNotificationCallBack(::core::mem::transmute(&pnotify)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            put_Channel: put_Channel::<Identity, Impl, OFFSET>,
            get_Channel: get_Channel::<Identity, Impl, OFFSET>,
            ChannelMinMax: ChannelMinMax::<Identity, Impl, OFFSET>,
            SetCountryCode: SetCountryCode::<Identity, Impl, OFFSET>,
            CountryCode: CountryCode::<Identity, Impl, OFFSET>,
            SetTuningSpace: SetTuningSpace::<Identity, Impl, OFFSET>,
            TuningSpace: TuningSpace::<Identity, Impl, OFFSET>,
            Logon: Logon::<Identity, Impl, OFFSET>,
            Logout: Logout::<Identity, Impl, OFFSET>,
            SignalPresent: SignalPresent::<Identity, Impl, OFFSET>,
            SetMode: SetMode::<Identity, Impl, OFFSET>,
            Mode: Mode::<Identity, Impl, OFFSET>,
            GetAvailableModes: GetAvailableModes::<Identity, Impl, OFFSET>,
            RegisterNotificationCallBack: RegisterNotificationCallBack::<Identity, Impl, OFFSET>,
            UnRegisterNotificationCallBack: UnRegisterNotificationCallBack::<Identity, Impl, 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<Impl = Impl>, Impl: IAMTunerNotification_Impl, const OFFSET: isize>() -> IAMTunerNotification_Vtbl {
        unsafe extern "system" fn OnEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMTunerNotification_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, event: AMTunerEventType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnEvent(::core::mem::transmute_copy(&event)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnEvent: OnEvent::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMTunerNotification as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IAMVfwCaptureDialogs {}
#[cfg(feature = "Win32_Foundation")]
impl IAMVfwCaptureDialogs_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVfwCaptureDialogs_Impl, const OFFSET: isize>() -> IAMVfwCaptureDialogs_Vtbl {
        unsafe extern "system" fn HasDialog<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVfwCaptureDialogs_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, idialog: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.HasDialog(::core::mem::transmute_copy(&idialog)).into()
        }
        unsafe extern "system" fn ShowDialog<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVfwCaptureDialogs_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, idialog: i32, hwnd: super::super::Foundation::HWND) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ShowDialog(::core::mem::transmute_copy(&idialog), ::core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn SendDriverMessage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVfwCaptureDialogs_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, idialog: i32, umsg: i32, dw1: i32, dw2: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SendDriverMessage(::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, Impl, OFFSET>,
            ShowDialog: ShowDialog::<Identity, Impl, OFFSET>,
            SendDriverMessage: SendDriverMessage::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMVfwCaptureDialogs as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IAMVfwCompressDialogs {}
#[cfg(feature = "Win32_Foundation")]
impl IAMVfwCompressDialogs_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVfwCompressDialogs_Impl, const OFFSET: isize>() -> IAMVfwCompressDialogs_Vtbl {
        unsafe extern "system" fn ShowDialog<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVfwCompressDialogs_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, idialog: i32, hwnd: super::super::Foundation::HWND) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ShowDialog(::core::mem::transmute_copy(&idialog), ::core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn GetState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVfwCompressDialogs_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstate: *mut ::core::ffi::c_void, pcbstate: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetState(::core::mem::transmute_copy(&pstate), ::core::mem::transmute_copy(&pcbstate)).into()
        }
        unsafe extern "system" fn SetState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVfwCompressDialogs_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstate: *const ::core::ffi::c_void, cbstate: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetState(::core::mem::transmute_copy(&pstate), ::core::mem::transmute_copy(&cbstate)).into()
        }
        unsafe extern "system" fn SendDriverMessage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVfwCompressDialogs_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, umsg: i32, dw1: i32, dw2: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SendDriverMessage(::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, Impl, OFFSET>,
            GetState: GetState::<Identity, Impl, OFFSET>,
            SetState: SetState::<Identity, Impl, OFFSET>,
            SendDriverMessage: SendDriverMessage::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMVfwCompressDialogs as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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: &::core::option::Option<IMediaSample>) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl ::windows::core::RuntimeName for IAMVideoAccelerator {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl IAMVideoAccelerator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoAccelerator_Impl, const OFFSET: isize>() -> IAMVideoAccelerator_Vtbl {
        unsafe extern "system" fn GetVideoAcceleratorGUIDs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoAccelerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwnumguidssupported: *mut u32, pguidssupported: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetVideoAcceleratorGUIDs(::core::mem::transmute_copy(&pdwnumguidssupported), ::core::mem::transmute_copy(&pguidssupported)).into()
        }
        unsafe extern "system" fn GetUncompFormatsSupported<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoAccelerator_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetUncompFormatsSupported(::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<Impl = Impl>, Impl: IAMVideoAccelerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguid: *const ::windows::core::GUID, pamvauncompdatainfo: *const AMVAUncompDataInfo, pamvainternalmeminfo: *mut AMVAInternalMemInfo) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetInternalMemInfo(::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<Impl = Impl>, Impl: IAMVideoAccelerator_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCompBufferInfo(::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<Impl = Impl>, Impl: IAMVideoAccelerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwnumtypescompbuffers: *mut u32, pamvacompbufferinfo: *mut AMVACompBufferInfo) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetInternalCompBufferInfo(::core::mem::transmute_copy(&pdwnumtypescompbuffers), ::core::mem::transmute_copy(&pamvacompbufferinfo)).into()
        }
        unsafe extern "system" fn BeginFrame<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoAccelerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, amvabeginframeinfo: *const AMVABeginFrameInfo) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.BeginFrame(::core::mem::transmute_copy(&amvabeginframeinfo)).into()
        }
        unsafe extern "system" fn EndFrame<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoAccelerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pendframeinfo: *const AMVAEndFrameInfo) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EndFrame(::core::mem::transmute_copy(&pendframeinfo)).into()
        }
        unsafe extern "system" fn GetBuffer<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoAccelerator_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetBuffer(::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<Impl = Impl>, Impl: IAMVideoAccelerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwtypeindex: u32, dwbufferindex: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReleaseBuffer(::core::mem::transmute_copy(&dwtypeindex), ::core::mem::transmute_copy(&dwbufferindex)).into()
        }
        unsafe extern "system" fn Execute<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoAccelerator_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Execute(::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<Impl = Impl>, Impl: IAMVideoAccelerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwtypeindex: u32, dwbufferindex: u32, dwflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.QueryRenderStatus(::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<Impl = Impl>, Impl: IAMVideoAccelerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwfliptoindex: u32, pmediasample: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DisplayFrame(::core::mem::transmute_copy(&dwfliptoindex), ::core::mem::transmute(&pmediasample)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetVideoAcceleratorGUIDs: GetVideoAcceleratorGUIDs::<Identity, Impl, OFFSET>,
            GetUncompFormatsSupported: GetUncompFormatsSupported::<Identity, Impl, OFFSET>,
            GetInternalMemInfo: GetInternalMemInfo::<Identity, Impl, OFFSET>,
            GetCompBufferInfo: GetCompBufferInfo::<Identity, Impl, OFFSET>,
            GetInternalCompBufferInfo: GetInternalCompBufferInfo::<Identity, Impl, OFFSET>,
            BeginFrame: BeginFrame::<Identity, Impl, OFFSET>,
            EndFrame: EndFrame::<Identity, Impl, OFFSET>,
            GetBuffer: GetBuffer::<Identity, Impl, OFFSET>,
            ReleaseBuffer: ReleaseBuffer::<Identity, Impl, OFFSET>,
            Execute: Execute::<Identity, Impl, OFFSET>,
            QueryRenderStatus: QueryRenderStatus::<Identity, Impl, OFFSET>,
            DisplayFrame: DisplayFrame::<Identity, Impl, 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<Impl = Impl>, Impl: IAMVideoAcceleratorNotify_Impl, const OFFSET: isize>() -> IAMVideoAcceleratorNotify_Vtbl {
        unsafe extern "system" fn GetUncompSurfacesInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoAcceleratorNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguid: *const ::windows::core::GUID, puncompbufferinfo: *mut AMVAUncompBufferInfo) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetUncompSurfacesInfo(::core::mem::transmute_copy(&pguid), ::core::mem::transmute_copy(&puncompbufferinfo)).into()
        }
        unsafe extern "system" fn SetUncompSurfacesInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoAcceleratorNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwactualuncompsurfacesallocated: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetUncompSurfacesInfo(::core::mem::transmute_copy(&dwactualuncompsurfacesallocated)).into()
        }
        unsafe extern "system" fn GetCreateVideoAcceleratorData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoAcceleratorNotify_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCreateVideoAcceleratorData(::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, Impl, OFFSET>,
            SetUncompSurfacesInfo: SetUncompSurfacesInfo::<Identity, Impl, OFFSET>,
            GetCreateVideoAcceleratorData: GetCreateVideoAcceleratorData::<Identity, Impl, 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<Impl = Impl>, Impl: IAMVideoCompression_Impl, const OFFSET: isize>() -> IAMVideoCompression_Vtbl {
        unsafe extern "system" fn SetKeyFrameRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoCompression_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, keyframerate: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetKeyFrameRate(::core::mem::transmute_copy(&keyframerate)).into()
        }
        unsafe extern "system" fn KeyFrameRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoCompression_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pkeyframerate: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.KeyFrameRate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pkeyframerate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPFramesPerKeyFrame<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoCompression_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pframesperkeyframe: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPFramesPerKeyFrame(::core::mem::transmute_copy(&pframesperkeyframe)).into()
        }
        unsafe extern "system" fn PFramesPerKeyFrame<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoCompression_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppframesperkeyframe: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PFramesPerKeyFrame() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppframesperkeyframe, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetQuality<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoCompression_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, quality: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetQuality(::core::mem::transmute_copy(&quality)).into()
        }
        unsafe extern "system" fn Quality<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoCompression_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pquality: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Quality() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pquality, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWindowSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoCompression_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, windowsize: u64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetWindowSize(::core::mem::transmute_copy(&windowsize)).into()
        }
        unsafe extern "system" fn WindowSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoCompression_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwindowsize: *mut u64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.WindowSize() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwindowsize, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoCompression_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetInfo(::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<Impl = Impl>, Impl: IAMVideoCompression_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, framenumber: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OverrideKeyFrame(::core::mem::transmute_copy(&framenumber)).into()
        }
        unsafe extern "system" fn OverrideFrameSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoCompression_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, framenumber: i32, size: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OverrideFrameSize(::core::mem::transmute_copy(&framenumber), ::core::mem::transmute_copy(&size)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetKeyFrameRate: SetKeyFrameRate::<Identity, Impl, OFFSET>,
            KeyFrameRate: KeyFrameRate::<Identity, Impl, OFFSET>,
            SetPFramesPerKeyFrame: SetPFramesPerKeyFrame::<Identity, Impl, OFFSET>,
            PFramesPerKeyFrame: PFramesPerKeyFrame::<Identity, Impl, OFFSET>,
            SetQuality: SetQuality::<Identity, Impl, OFFSET>,
            Quality: Quality::<Identity, Impl, OFFSET>,
            SetWindowSize: SetWindowSize::<Identity, Impl, OFFSET>,
            WindowSize: WindowSize::<Identity, Impl, OFFSET>,
            GetInfo: GetInfo::<Identity, Impl, OFFSET>,
            OverrideKeyFrame: OverrideKeyFrame::<Identity, Impl, OFFSET>,
            OverrideFrameSize: OverrideFrameSize::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMVideoCompression as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IAMVideoControl_Impl: Sized {
    fn GetCaps(&self, ppin: &::core::option::Option<IPin>) -> ::windows::core::Result<i32>;
    fn SetMode(&self, ppin: &::core::option::Option<IPin>, mode: i32) -> ::windows::core::Result<()>;
    fn GetMode(&self, ppin: &::core::option::Option<IPin>) -> ::windows::core::Result<i32>;
    fn GetCurrentActualFrameRate(&self, ppin: &::core::option::Option<IPin>) -> ::windows::core::Result<i64>;
    fn GetMaxAvailableFrameRate(&self, ppin: &::core::option::Option<IPin>, iindex: i32, dimensions: &super::super::Foundation::SIZE) -> ::windows::core::Result<i64>;
    fn GetFrameRateList(&self, ppin: &::core::option::Option<IPin>, iindex: i32, dimensions: &super::super::Foundation::SIZE, listsize: *mut i32, framerates: *mut *mut i64) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IAMVideoControl {}
#[cfg(feature = "Win32_Foundation")]
impl IAMVideoControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoControl_Impl, const OFFSET: isize>() -> IAMVideoControl_Vtbl {
        unsafe extern "system" fn GetCaps<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppin: *mut ::core::ffi::c_void, pcapsflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCaps(::core::mem::transmute(&ppin)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcapsflags, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppin: *mut ::core::ffi::c_void, mode: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMode(::core::mem::transmute(&ppin), ::core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn GetMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppin: *mut ::core::ffi::c_void, mode: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMode(::core::mem::transmute(&ppin)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(mode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentActualFrameRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppin: *mut ::core::ffi::c_void, actualframerate: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentActualFrameRate(::core::mem::transmute(&ppin)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(actualframerate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMaxAvailableFrameRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMaxAvailableFrameRate(::core::mem::transmute(&ppin), ::core::mem::transmute_copy(&iindex), ::core::mem::transmute(&dimensions)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(maxavailableframerate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFrameRateList<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetFrameRateList(::core::mem::transmute(&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, Impl, OFFSET>,
            SetMode: SetMode::<Identity, Impl, OFFSET>,
            GetMode: GetMode::<Identity, Impl, OFFSET>,
            GetCurrentActualFrameRate: GetCurrentActualFrameRate::<Identity, Impl, OFFSET>,
            GetMaxAvailableFrameRate: GetMaxAvailableFrameRate::<Identity, Impl, OFFSET>,
            GetFrameRateList: GetFrameRateList::<Identity, Impl, 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<Impl = Impl>, Impl: IAMVideoDecimationProperties_Impl, const OFFSET: isize>() -> IAMVideoDecimationProperties_Vtbl {
        unsafe extern "system" fn QueryDecimationUsage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoDecimationProperties_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpusage: *mut DECIMATION_USAGE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.QueryDecimationUsage() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpusage, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDecimationUsage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoDecimationProperties_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, usage: DECIMATION_USAGE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDecimationUsage(::core::mem::transmute_copy(&usage)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryDecimationUsage: QueryDecimationUsage::<Identity, Impl, OFFSET>,
            SetDecimationUsage: SetDecimationUsage::<Identity, Impl, 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<Impl = Impl>, Impl: IAMVideoProcAmp_Impl, const OFFSET: isize>() -> IAMVideoProcAmp_Vtbl {
        unsafe extern "system" fn GetRange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMVideoProcAmp_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRange(::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<Impl = Impl>, Impl: IAMVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, property: i32, lvalue: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set(::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<Impl = Impl>, Impl: IAMVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, property: i32, lvalue: *mut i32, flags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Get(::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, Impl, OFFSET>,
            Set: Set::<Identity, Impl, OFFSET>,
            Get: Get::<Identity, Impl, 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: &::core::option::Option<IAMWMBufferPassCallback>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IAMWMBufferPass {}
impl IAMWMBufferPass_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWMBufferPass_Impl, const OFFSET: isize>() -> IAMWMBufferPass_Vtbl {
        unsafe extern "system" fn SetNotify<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWMBufferPass_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcallback: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetNotify(::core::mem::transmute(&pcallback)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetNotify: SetNotify::<Identity, Impl, 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: &::core::option::Option<super::WindowsMediaFormat::INSSBuffer3>, ppin: &::core::option::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<Impl = Impl>, Impl: IAMWMBufferPassCallback_Impl, const OFFSET: isize>() -> IAMWMBufferPassCallback_Vtbl {
        unsafe extern "system" fn Notify<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWMBufferPassCallback_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Notify(::core::mem::transmute(&pnssbuffer3), ::core::mem::transmute(&ppin), ::core::mem::transmute_copy(&prtstart), ::core::mem::transmute_copy(&prtend)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Notify: Notify::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMWMBufferPassCallback as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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 i32) -> ::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(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IAMWstDecoder {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl IAMWstDecoder_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>() -> IAMWstDecoder_Vtbl {
        unsafe extern "system" fn GetDecoderLevel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lplevel: *mut AM_WST_LEVEL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDecoderLevel(::core::mem::transmute_copy(&lplevel)).into()
        }
        unsafe extern "system" fn GetCurrentService<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpservice: *mut AM_WST_SERVICE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentService(::core::mem::transmute_copy(&lpservice)).into()
        }
        unsafe extern "system" fn GetServiceState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpstate: *mut AM_WST_STATE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetServiceState(::core::mem::transmute_copy(&lpstate)).into()
        }
        unsafe extern "system" fn SetServiceState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, state: AM_WST_STATE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetServiceState(::core::mem::transmute_copy(&state)).into()
        }
        unsafe extern "system" fn GetOutputFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpbmih: *mut super::super::Graphics::Gdi::BITMAPINFOHEADER) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetOutputFormat(::core::mem::transmute_copy(&lpbmih)).into()
        }
        unsafe extern "system" fn SetOutputFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpbmi: *mut super::super::Graphics::Gdi::BITMAPINFO) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOutputFormat(::core::mem::transmute_copy(&lpbmi)).into()
        }
        unsafe extern "system" fn GetBackgroundColor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwphyscolor: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetBackgroundColor(::core::mem::transmute_copy(&pdwphyscolor)).into()
        }
        unsafe extern "system" fn SetBackgroundColor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwphyscolor: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBackgroundColor(::core::mem::transmute_copy(&dwphyscolor)).into()
        }
        unsafe extern "system" fn GetRedrawAlways<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpboption: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRedrawAlways(::core::mem::transmute_copy(&lpboption)).into()
        }
        unsafe extern "system" fn SetRedrawAlways<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, boption: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRedrawAlways(::core::mem::transmute_copy(&boption)).into()
        }
        unsafe extern "system" fn GetDrawBackgroundMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpmode: *mut AM_WST_DRAWBGMODE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDrawBackgroundMode(::core::mem::transmute_copy(&lpmode)).into()
        }
        unsafe extern "system" fn SetDrawBackgroundMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: AM_WST_DRAWBGMODE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDrawBackgroundMode(::core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn SetAnswerMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, banswer: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAnswerMode(::core::mem::transmute_copy(&banswer)).into()
        }
        unsafe extern "system" fn GetAnswerMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbanswer: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAnswerMode(::core::mem::transmute_copy(&pbanswer)).into()
        }
        unsafe extern "system" fn SetHoldPage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bholdpage: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetHoldPage(::core::mem::transmute_copy(&bholdpage)).into()
        }
        unsafe extern "system" fn GetHoldPage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbholdpage: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetHoldPage(::core::mem::transmute_copy(&pbholdpage)).into()
        }
        unsafe extern "system" fn GetCurrentPage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwstpage: *mut AM_WST_PAGE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentPage(::core::mem::transmute_copy(&pwstpage)).into()
        }
        unsafe extern "system" fn SetCurrentPage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMWstDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, wstpage: AM_WST_PAGE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCurrentPage(::core::mem::transmute(&wstpage)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDecoderLevel: GetDecoderLevel::<Identity, Impl, OFFSET>,
            GetCurrentService: GetCurrentService::<Identity, Impl, OFFSET>,
            GetServiceState: GetServiceState::<Identity, Impl, OFFSET>,
            SetServiceState: SetServiceState::<Identity, Impl, OFFSET>,
            GetOutputFormat: GetOutputFormat::<Identity, Impl, OFFSET>,
            SetOutputFormat: SetOutputFormat::<Identity, Impl, OFFSET>,
            GetBackgroundColor: GetBackgroundColor::<Identity, Impl, OFFSET>,
            SetBackgroundColor: SetBackgroundColor::<Identity, Impl, OFFSET>,
            GetRedrawAlways: GetRedrawAlways::<Identity, Impl, OFFSET>,
            SetRedrawAlways: SetRedrawAlways::<Identity, Impl, OFFSET>,
            GetDrawBackgroundMode: GetDrawBackgroundMode::<Identity, Impl, OFFSET>,
            SetDrawBackgroundMode: SetDrawBackgroundMode::<Identity, Impl, OFFSET>,
            SetAnswerMode: SetAnswerMode::<Identity, Impl, OFFSET>,
            GetAnswerMode: GetAnswerMode::<Identity, Impl, OFFSET>,
            SetHoldPage: SetHoldPage::<Identity, Impl, OFFSET>,
            GetHoldPage: GetHoldPage::<Identity, Impl, OFFSET>,
            GetCurrentPage: GetCurrentPage::<Identity, Impl, OFFSET>,
            SetCurrentPage: SetCurrentPage::<Identity, Impl, 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<Impl = Impl>, Impl: IAMovieSetup_Impl, const OFFSET: isize>() -> IAMovieSetup_Vtbl {
        unsafe extern "system" fn Register<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMovieSetup_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Register().into()
        }
        unsafe extern "system" fn Unregister<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAMovieSetup_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Unregister().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Register: Register::<Identity, Impl, OFFSET>,
            Unregister: Unregister::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAMovieSetup as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IATSCChannelTuneRequest_Impl: Sized + IChannelTuneRequest_Impl {
    fn MinorChannel(&self) -> ::windows::core::Result<i32>;
    fn SetMinorChannel(&self, minorchannel: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IATSCChannelTuneRequest {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IATSCChannelTuneRequest_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCChannelTuneRequest_Impl, const OFFSET: isize>() -> IATSCChannelTuneRequest_Vtbl {
        unsafe extern "system" fn MinorChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCChannelTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, minorchannel: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MinorChannel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(minorchannel, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMinorChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCChannelTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, minorchannel: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMinorChannel(::core::mem::transmute_copy(&minorchannel)).into()
        }
        Self {
            base__: IChannelTuneRequest_Vtbl::new::<Identity, Impl, OFFSET>(),
            MinorChannel: MinorChannel::<Identity, Impl, OFFSET>,
            SetMinorChannel: SetMinorChannel::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IATSCChannelTuneRequest as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuneRequest as ::windows::core::Interface>::IID || iid == &<IChannelTuneRequest as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IATSCComponentType_Impl: Sized + IMPEG2ComponentType_Impl {
    fn Flags(&self) -> ::windows::core::Result<i32>;
    fn SetFlags(&self, flags: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IATSCComponentType {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IATSCComponentType_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCComponentType_Impl, const OFFSET: isize>() -> IATSCComponentType_Vtbl {
        unsafe extern "system" fn Flags<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, flags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Flags() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(flags, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFlags<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFlags(::core::mem::transmute_copy(&flags)).into()
        }
        Self {
            base__: IMPEG2ComponentType_Vtbl::new::<Identity, Impl, OFFSET>(),
            Flags: Flags::<Identity, Impl, OFFSET>,
            SetFlags: SetFlags::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IATSCComponentType as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IComponentType as ::windows::core::Interface>::IID || iid == &<ILanguageComponentType as ::windows::core::Interface>::IID || iid == &<IMPEG2ComponentType as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IATSCLocator_Impl: Sized + IDigitalLocator_Impl {
    fn PhysicalChannel(&self) -> ::windows::core::Result<i32>;
    fn SetPhysicalChannel(&self, physicalchannel: i32) -> ::windows::core::Result<()>;
    fn TSID(&self) -> ::windows::core::Result<i32>;
    fn SetTSID(&self, tsid: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IATSCLocator {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IATSCLocator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCLocator_Impl, const OFFSET: isize>() -> IATSCLocator_Vtbl {
        unsafe extern "system" fn PhysicalChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, physicalchannel: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PhysicalChannel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(physicalchannel, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPhysicalChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, physicalchannel: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPhysicalChannel(::core::mem::transmute_copy(&physicalchannel)).into()
        }
        unsafe extern "system" fn TSID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tsid: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TSID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tsid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTSID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tsid: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTSID(::core::mem::transmute_copy(&tsid)).into()
        }
        Self {
            base__: IDigitalLocator_Vtbl::new::<Identity, Impl, OFFSET>(),
            PhysicalChannel: PhysicalChannel::<Identity, Impl, OFFSET>,
            SetPhysicalChannel: SetPhysicalChannel::<Identity, Impl, OFFSET>,
            TSID: TSID::<Identity, Impl, OFFSET>,
            SetTSID: SetTSID::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IATSCLocator as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ILocator as ::windows::core::Interface>::IID || iid == &<IDigitalLocator as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IATSCLocator2_Impl: Sized + IATSCLocator_Impl {
    fn ProgramNumber(&self) -> ::windows::core::Result<i32>;
    fn SetProgramNumber(&self, programnumber: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IATSCLocator2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IATSCLocator2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCLocator2_Impl, const OFFSET: isize>() -> IATSCLocator2_Vtbl {
        unsafe extern "system" fn ProgramNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, programnumber: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ProgramNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(programnumber, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetProgramNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, programnumber: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetProgramNumber(::core::mem::transmute_copy(&programnumber)).into()
        }
        Self {
            base__: IATSCLocator_Vtbl::new::<Identity, Impl, OFFSET>(),
            ProgramNumber: ProgramNumber::<Identity, Impl, OFFSET>,
            SetProgramNumber: SetProgramNumber::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IATSCLocator2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ILocator as ::windows::core::Interface>::IID || iid == &<IDigitalLocator as ::windows::core::Interface>::IID || iid == &<IATSCLocator as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IATSCTuningSpace_Impl: Sized + IAnalogTVTuningSpace_Impl {
    fn MinMinorChannel(&self) -> ::windows::core::Result<i32>;
    fn SetMinMinorChannel(&self, newminminorchannelval: i32) -> ::windows::core::Result<()>;
    fn MaxMinorChannel(&self) -> ::windows::core::Result<i32>;
    fn SetMaxMinorChannel(&self, newmaxminorchannelval: i32) -> ::windows::core::Result<()>;
    fn MinPhysicalChannel(&self) -> ::windows::core::Result<i32>;
    fn SetMinPhysicalChannel(&self, newminphysicalchannelval: i32) -> ::windows::core::Result<()>;
    fn MaxPhysicalChannel(&self) -> ::windows::core::Result<i32>;
    fn SetMaxPhysicalChannel(&self, newmaxphysicalchannelval: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IATSCTuningSpace {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IATSCTuningSpace_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCTuningSpace_Impl, const OFFSET: isize>() -> IATSCTuningSpace_Vtbl {
        unsafe extern "system" fn MinMinorChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, minminorchannelval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MinMinorChannel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(minminorchannelval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMinMinorChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newminminorchannelval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMinMinorChannel(::core::mem::transmute_copy(&newminminorchannelval)).into()
        }
        unsafe extern "system" fn MaxMinorChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, maxminorchannelval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MaxMinorChannel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(maxminorchannelval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxMinorChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newmaxminorchannelval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMaxMinorChannel(::core::mem::transmute_copy(&newmaxminorchannelval)).into()
        }
        unsafe extern "system" fn MinPhysicalChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, minphysicalchannelval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MinPhysicalChannel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(minphysicalchannelval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMinPhysicalChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newminphysicalchannelval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMinPhysicalChannel(::core::mem::transmute_copy(&newminphysicalchannelval)).into()
        }
        unsafe extern "system" fn MaxPhysicalChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, maxphysicalchannelval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MaxPhysicalChannel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(maxphysicalchannelval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxPhysicalChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSCTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newmaxphysicalchannelval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMaxPhysicalChannel(::core::mem::transmute_copy(&newmaxphysicalchannelval)).into()
        }
        Self {
            base__: IAnalogTVTuningSpace_Vtbl::new::<Identity, Impl, OFFSET>(),
            MinMinorChannel: MinMinorChannel::<Identity, Impl, OFFSET>,
            SetMinMinorChannel: SetMinMinorChannel::<Identity, Impl, OFFSET>,
            MaxMinorChannel: MaxMinorChannel::<Identity, Impl, OFFSET>,
            SetMaxMinorChannel: SetMaxMinorChannel::<Identity, Impl, OFFSET>,
            MinPhysicalChannel: MinPhysicalChannel::<Identity, Impl, OFFSET>,
            SetMinPhysicalChannel: SetMinPhysicalChannel::<Identity, Impl, OFFSET>,
            MaxPhysicalChannel: MaxPhysicalChannel::<Identity, Impl, OFFSET>,
            SetMaxPhysicalChannel: SetMaxPhysicalChannel::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IATSCTuningSpace as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuningSpace as ::windows::core::Interface>::IID || iid == &<IAnalogTVTuningSpace as ::windows::core::Interface>::IID
    }
}
pub trait IATSC_EIT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetSourceId(&self) -> ::windows::core::Result<u16>;
    fn GetProtocolVersion(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordEventId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordStartTime(&self, dwrecordindex: u32) -> ::windows::core::Result<MPEG_DATE_AND_TIME>;
    fn GetRecordEtmLocation(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordDuration(&self, dwrecordindex: u32) -> ::windows::core::Result<MPEG_TIME>;
    fn GetRecordTitleText(&self, dwrecordindex: u32, pdwlength: *mut u32, pptext: *mut *mut u8) -> ::windows::core::Result<()>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IATSC_EIT {}
impl IATSC_EIT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_EIT_Impl, const OFFSET: isize>() -> IATSC_EIT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSourceId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProtocolVersion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetProtocolVersion() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEventId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordEventId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordStartTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pmdtval: *mut MPEG_DATE_AND_TIME) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordStartTime(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmdtval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEtmLocation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordEtmLocation(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDuration<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pmdval: *mut MPEG_TIME) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDuration(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmdval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTitleText<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwlength: *mut u32, pptext: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordTitleText(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&pdwlength), ::core::mem::transmute_copy(&pptext)).into()
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfDescriptors(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptorByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordDescriptorByTag(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetSourceId: GetSourceId::<Identity, Impl, OFFSET>,
            GetProtocolVersion: GetProtocolVersion::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordEventId: GetRecordEventId::<Identity, Impl, OFFSET>,
            GetRecordStartTime: GetRecordStartTime::<Identity, Impl, OFFSET>,
            GetRecordEtmLocation: GetRecordEtmLocation::<Identity, Impl, OFFSET>,
            GetRecordDuration: GetRecordDuration::<Identity, Impl, OFFSET>,
            GetRecordTitleText: GetRecordTitleText::<Identity, Impl, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IATSC_EIT as ::windows::core::Interface>::IID
    }
}
pub trait IATSC_ETT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetProtocolVersion(&self) -> ::windows::core::Result<u8>;
    fn GetEtmId(&self) -> ::windows::core::Result<u32>;
    fn GetExtendedMessageText(&self, pdwlength: *mut u32, pptext: *mut *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IATSC_ETT {}
impl IATSC_ETT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_ETT_Impl, const OFFSET: isize>() -> IATSC_ETT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_ETT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_ETT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProtocolVersion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_ETT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetProtocolVersion() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEtmId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_ETT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEtmId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetExtendedMessageText<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_ETT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwlength: *mut u32, pptext: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetExtendedMessageText(::core::mem::transmute_copy(&pdwlength), ::core::mem::transmute_copy(&pptext)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetProtocolVersion: GetProtocolVersion::<Identity, Impl, OFFSET>,
            GetEtmId: GetEtmId::<Identity, Impl, OFFSET>,
            GetExtendedMessageText: GetExtendedMessageText::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IATSC_ETT as ::windows::core::Interface>::IID
    }
}
pub trait IATSC_MGT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetProtocolVersion(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordType(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordTypePid(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordVersionNumber(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn GetCountOfTableDescriptors(&self, pdwval: *const u32) -> ::windows::core::Result<()>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IATSC_MGT {}
impl IATSC_MGT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_MGT_Impl, const OFFSET: isize>() -> IATSC_MGT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_MGT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_MGT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProtocolVersion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_MGT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetProtocolVersion() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_MGT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_MGT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordType(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTypePid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_MGT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, ppidval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordTypePid(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppidval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_MGT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordVersionNumber(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_MGT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfDescriptors(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_MGT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptorByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_MGT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordDescriptorByTag(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_MGT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *const u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCountOfTableDescriptors(::core::mem::transmute_copy(&pdwval)).into()
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_MGT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableDescriptorByIndex(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_MGT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptorByTag(::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetProtocolVersion: GetProtocolVersion::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordType: GetRecordType::<Identity, Impl, OFFSET>,
            GetRecordTypePid: GetRecordTypePid::<Identity, Impl, OFFSET>,
            GetRecordVersionNumber: GetRecordVersionNumber::<Identity, Impl, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, Impl, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, Impl, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IATSC_MGT as ::windows::core::Interface>::IID
    }
}
pub trait IATSC_STT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetProtocolVersion(&self) -> ::windows::core::Result<u8>;
    fn GetSystemTime(&self) -> ::windows::core::Result<MPEG_DATE_AND_TIME>;
    fn GetGpsUtcOffset(&self) -> ::windows::core::Result<u8>;
    fn GetDaylightSavings(&self) -> ::windows::core::Result<u16>;
    fn GetCountOfTableDescriptors(&self) -> ::windows::core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IATSC_STT {}
impl IATSC_STT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_STT_Impl, const OFFSET: isize>() -> IATSC_STT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_STT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetProtocolVersion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_STT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetProtocolVersion() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSystemTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_STT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmdtsystemtime: *mut MPEG_DATE_AND_TIME) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSystemTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmdtsystemtime, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetGpsUtcOffset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_STT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetGpsUtcOffset() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDaylightSavings<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_STT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDaylightSavings() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_STT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfTableDescriptors() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_STT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableDescriptorByIndex(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_STT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptorByTag(::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetProtocolVersion: GetProtocolVersion::<Identity, Impl, OFFSET>,
            GetSystemTime: GetSystemTime::<Identity, Impl, OFFSET>,
            GetGpsUtcOffset: GetGpsUtcOffset::<Identity, Impl, OFFSET>,
            GetDaylightSavings: GetDaylightSavings::<Identity, Impl, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, Impl, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IATSC_STT as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IATSC_VCT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetTransportStreamId(&self) -> ::windows::core::Result<u16>;
    fn GetProtocolVersion(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordName(&self, dwrecordindex: u32) -> ::windows::core::Result<::windows::core::PWSTR>;
    fn GetRecordMajorChannelNumber(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordMinorChannelNumber(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordModulationMode(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordCarrierFrequency(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordTransportStreamId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordProgramNumber(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordEtmLocation(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordIsAccessControlledBitSet(&self, dwrecordindex: u32) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn GetRecordIsHiddenBitSet(&self, dwrecordindex: u32) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn GetRecordIsPathSelectBitSet(&self, dwrecordindex: u32) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn GetRecordIsOutOfBandBitSet(&self, dwrecordindex: u32) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn GetRecordIsHideGuideBitSet(&self, dwrecordindex: u32) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn GetRecordServiceType(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordSourceId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn GetCountOfTableDescriptors(&self, pdwval: *const u32) -> ::windows::core::Result<()>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IATSC_VCT {}
#[cfg(feature = "Win32_Foundation")]
impl IATSC_VCT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>() -> IATSC_VCT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransportStreamId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTransportStreamId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProtocolVersion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetProtocolVersion() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwsname: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordName(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwsname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordMajorChannelNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordMajorChannelNumber(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordMinorChannelNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordMinorChannelNumber(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordModulationMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordModulationMode(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCarrierFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCarrierFrequency(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTransportStreamId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordTransportStreamId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordProgramNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordProgramNumber(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEtmLocation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordEtmLocation(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordIsAccessControlledBitSet<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordIsAccessControlledBitSet(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordIsHiddenBitSet<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordIsHiddenBitSet(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordIsPathSelectBitSet<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordIsPathSelectBitSet(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordIsOutOfBandBitSet<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordIsOutOfBandBitSet(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordIsHideGuideBitSet<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordIsHideGuideBitSet(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordServiceType(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordSourceId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordSourceId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfDescriptors(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptorByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordDescriptorByTag(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *const u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCountOfTableDescriptors(::core::mem::transmute_copy(&pdwval)).into()
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableDescriptorByIndex(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IATSC_VCT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptorByTag(::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetTransportStreamId: GetTransportStreamId::<Identity, Impl, OFFSET>,
            GetProtocolVersion: GetProtocolVersion::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordName: GetRecordName::<Identity, Impl, OFFSET>,
            GetRecordMajorChannelNumber: GetRecordMajorChannelNumber::<Identity, Impl, OFFSET>,
            GetRecordMinorChannelNumber: GetRecordMinorChannelNumber::<Identity, Impl, OFFSET>,
            GetRecordModulationMode: GetRecordModulationMode::<Identity, Impl, OFFSET>,
            GetRecordCarrierFrequency: GetRecordCarrierFrequency::<Identity, Impl, OFFSET>,
            GetRecordTransportStreamId: GetRecordTransportStreamId::<Identity, Impl, OFFSET>,
            GetRecordProgramNumber: GetRecordProgramNumber::<Identity, Impl, OFFSET>,
            GetRecordEtmLocation: GetRecordEtmLocation::<Identity, Impl, OFFSET>,
            GetRecordIsAccessControlledBitSet: GetRecordIsAccessControlledBitSet::<Identity, Impl, OFFSET>,
            GetRecordIsHiddenBitSet: GetRecordIsHiddenBitSet::<Identity, Impl, OFFSET>,
            GetRecordIsPathSelectBitSet: GetRecordIsPathSelectBitSet::<Identity, Impl, OFFSET>,
            GetRecordIsOutOfBandBitSet: GetRecordIsOutOfBandBitSet::<Identity, Impl, OFFSET>,
            GetRecordIsHideGuideBitSet: GetRecordIsHideGuideBitSet::<Identity, Impl, OFFSET>,
            GetRecordServiceType: GetRecordServiceType::<Identity, Impl, OFFSET>,
            GetRecordSourceId: GetRecordSourceId::<Identity, Impl, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, Impl, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, Impl, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IATSC_VCT as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IAnalogAudioComponentType_Impl: Sized + IComponentType_Impl {
    fn AnalogAudioMode(&self) -> ::windows::core::Result<TVAudioMode>;
    fn SetAnalogAudioMode(&self, mode: TVAudioMode) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAnalogAudioComponentType {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAnalogAudioComponentType_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogAudioComponentType_Impl, const OFFSET: isize>() -> IAnalogAudioComponentType_Vtbl {
        unsafe extern "system" fn AnalogAudioMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogAudioComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: *mut TVAudioMode) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AnalogAudioMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(mode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAnalogAudioMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogAudioComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: TVAudioMode) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAnalogAudioMode(::core::mem::transmute_copy(&mode)).into()
        }
        Self {
            base__: IComponentType_Vtbl::new::<Identity, Impl, OFFSET>(),
            AnalogAudioMode: AnalogAudioMode::<Identity, Impl, OFFSET>,
            SetAnalogAudioMode: SetAnalogAudioMode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAnalogAudioComponentType as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IComponentType as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IAnalogLocator_Impl: Sized + ILocator_Impl {
    fn VideoStandard(&self) -> ::windows::core::Result<AnalogVideoStandard>;
    fn SetVideoStandard(&self, avs: AnalogVideoStandard) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAnalogLocator {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAnalogLocator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogLocator_Impl, const OFFSET: isize>() -> IAnalogLocator_Vtbl {
        unsafe extern "system" fn VideoStandard<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, avs: *mut AnalogVideoStandard) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VideoStandard() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(avs, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetVideoStandard<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, avs: AnalogVideoStandard) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVideoStandard(::core::mem::transmute_copy(&avs)).into()
        }
        Self {
            base__: ILocator_Vtbl::new::<Identity, Impl, OFFSET>(),
            VideoStandard: VideoStandard::<Identity, Impl, OFFSET>,
            SetVideoStandard: SetVideoStandard::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAnalogLocator as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ILocator as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IAnalogRadioTuningSpace_Impl: Sized + ITuningSpace_Impl {
    fn MinFrequency(&self) -> ::windows::core::Result<i32>;
    fn SetMinFrequency(&self, newminfrequencyval: i32) -> ::windows::core::Result<()>;
    fn MaxFrequency(&self) -> ::windows::core::Result<i32>;
    fn SetMaxFrequency(&self, newmaxfrequencyval: i32) -> ::windows::core::Result<()>;
    fn Step(&self) -> ::windows::core::Result<i32>;
    fn SetStep(&self, newstepval: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAnalogRadioTuningSpace {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAnalogRadioTuningSpace_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogRadioTuningSpace_Impl, const OFFSET: isize>() -> IAnalogRadioTuningSpace_Vtbl {
        unsafe extern "system" fn MinFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogRadioTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, minfrequencyval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MinFrequency() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(minfrequencyval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMinFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogRadioTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newminfrequencyval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMinFrequency(::core::mem::transmute_copy(&newminfrequencyval)).into()
        }
        unsafe extern "system" fn MaxFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogRadioTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, maxfrequencyval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MaxFrequency() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(maxfrequencyval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogRadioTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newmaxfrequencyval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMaxFrequency(::core::mem::transmute_copy(&newmaxfrequencyval)).into()
        }
        unsafe extern "system" fn Step<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogRadioTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, stepval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Step() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(stepval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStep<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogRadioTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newstepval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStep(::core::mem::transmute_copy(&newstepval)).into()
        }
        Self {
            base__: ITuningSpace_Vtbl::new::<Identity, Impl, OFFSET>(),
            MinFrequency: MinFrequency::<Identity, Impl, OFFSET>,
            SetMinFrequency: SetMinFrequency::<Identity, Impl, OFFSET>,
            MaxFrequency: MaxFrequency::<Identity, Impl, OFFSET>,
            SetMaxFrequency: SetMaxFrequency::<Identity, Impl, OFFSET>,
            Step: Step::<Identity, Impl, OFFSET>,
            SetStep: SetStep::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAnalogRadioTuningSpace as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuningSpace as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IAnalogRadioTuningSpace2_Impl: Sized + IAnalogRadioTuningSpace_Impl {
    fn CountryCode(&self) -> ::windows::core::Result<i32>;
    fn SetCountryCode(&self, newcountrycodeval: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAnalogRadioTuningSpace2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAnalogRadioTuningSpace2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogRadioTuningSpace2_Impl, const OFFSET: isize>() -> IAnalogRadioTuningSpace2_Vtbl {
        unsafe extern "system" fn CountryCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogRadioTuningSpace2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, countrycodeval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CountryCode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(countrycodeval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCountryCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogRadioTuningSpace2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newcountrycodeval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCountryCode(::core::mem::transmute_copy(&newcountrycodeval)).into()
        }
        Self {
            base__: IAnalogRadioTuningSpace_Vtbl::new::<Identity, Impl, OFFSET>(),
            CountryCode: CountryCode::<Identity, Impl, OFFSET>,
            SetCountryCode: SetCountryCode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAnalogRadioTuningSpace2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuningSpace as ::windows::core::Interface>::IID || iid == &<IAnalogRadioTuningSpace as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IAnalogTVTuningSpace_Impl: Sized + ITuningSpace_Impl {
    fn MinChannel(&self) -> ::windows::core::Result<i32>;
    fn SetMinChannel(&self, newminchannelval: i32) -> ::windows::core::Result<()>;
    fn MaxChannel(&self) -> ::windows::core::Result<i32>;
    fn SetMaxChannel(&self, newmaxchannelval: i32) -> ::windows::core::Result<()>;
    fn InputType(&self) -> ::windows::core::Result<TunerInputType>;
    fn SetInputType(&self, newinputtypeval: TunerInputType) -> ::windows::core::Result<()>;
    fn CountryCode(&self) -> ::windows::core::Result<i32>;
    fn SetCountryCode(&self, newcountrycodeval: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAnalogTVTuningSpace {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAnalogTVTuningSpace_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogTVTuningSpace_Impl, const OFFSET: isize>() -> IAnalogTVTuningSpace_Vtbl {
        unsafe extern "system" fn MinChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogTVTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, minchannelval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MinChannel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(minchannelval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMinChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogTVTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newminchannelval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMinChannel(::core::mem::transmute_copy(&newminchannelval)).into()
        }
        unsafe extern "system" fn MaxChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogTVTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, maxchannelval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MaxChannel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(maxchannelval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogTVTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newmaxchannelval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMaxChannel(::core::mem::transmute_copy(&newmaxchannelval)).into()
        }
        unsafe extern "system" fn InputType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogTVTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, inputtypeval: *mut TunerInputType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.InputType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(inputtypeval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetInputType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogTVTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newinputtypeval: TunerInputType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetInputType(::core::mem::transmute_copy(&newinputtypeval)).into()
        }
        unsafe extern "system" fn CountryCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogTVTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, countrycodeval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CountryCode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(countrycodeval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCountryCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAnalogTVTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newcountrycodeval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCountryCode(::core::mem::transmute_copy(&newcountrycodeval)).into()
        }
        Self {
            base__: ITuningSpace_Vtbl::new::<Identity, Impl, OFFSET>(),
            MinChannel: MinChannel::<Identity, Impl, OFFSET>,
            SetMinChannel: SetMinChannel::<Identity, Impl, OFFSET>,
            MaxChannel: MaxChannel::<Identity, Impl, OFFSET>,
            SetMaxChannel: SetMaxChannel::<Identity, Impl, OFFSET>,
            InputType: InputType::<Identity, Impl, OFFSET>,
            SetInputType: SetInputType::<Identity, Impl, OFFSET>,
            CountryCode: CountryCode::<Identity, Impl, OFFSET>,
            SetCountryCode: SetCountryCode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAnalogTVTuningSpace as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuningSpace as ::windows::core::Interface>::IID
    }
}
pub trait IAsyncReader_Impl: Sized {
    fn RequestAllocator(&self, ppreferred: &::core::option::Option<IMemAllocator>, pprops: *const ALLOCATOR_PROPERTIES) -> ::windows::core::Result<IMemAllocator>;
    fn Request(&self, psample: &::core::option::Option<IMediaSample>, dwuser: usize) -> ::windows::core::Result<()>;
    fn WaitForNext(&self, dwtimeout: u32, ppsample: *mut ::core::option::Option<IMediaSample>, pdwuser: *mut usize) -> ::windows::core::Result<()>;
    fn SyncReadAligned(&self, psample: &::core::option::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<Impl = Impl>, Impl: IAsyncReader_Impl, const OFFSET: isize>() -> IAsyncReader_Vtbl {
        unsafe extern "system" fn RequestAllocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAsyncReader_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.RequestAllocator(::core::mem::transmute(&ppreferred), ::core::mem::transmute_copy(&pprops)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppactual, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Request<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAsyncReader_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psample: *mut ::core::ffi::c_void, dwuser: usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Request(::core::mem::transmute(&psample), ::core::mem::transmute_copy(&dwuser)).into()
        }
        unsafe extern "system" fn WaitForNext<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAsyncReader_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwtimeout: u32, ppsample: *mut *mut ::core::ffi::c_void, pdwuser: *mut usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.WaitForNext(::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<Impl = Impl>, Impl: IAsyncReader_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psample: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SyncReadAligned(::core::mem::transmute(&psample)).into()
        }
        unsafe extern "system" fn SyncRead<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAsyncReader_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, llposition: i64, llength: i32, pbuffer: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SyncRead(::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<Impl = Impl>, Impl: IAsyncReader_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptotal: *mut i64, pavailable: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Length(::core::mem::transmute_copy(&ptotal), ::core::mem::transmute_copy(&pavailable)).into()
        }
        unsafe extern "system" fn BeginFlush<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAsyncReader_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.BeginFlush().into()
        }
        unsafe extern "system" fn EndFlush<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAsyncReader_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EndFlush().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RequestAllocator: RequestAllocator::<Identity, Impl, OFFSET>,
            Request: Request::<Identity, Impl, OFFSET>,
            WaitForNext: WaitForNext::<Identity, Impl, OFFSET>,
            SyncReadAligned: SyncReadAligned::<Identity, Impl, OFFSET>,
            SyncRead: SyncRead::<Identity, Impl, OFFSET>,
            Length: Length::<Identity, Impl, OFFSET>,
            BeginFlush: BeginFlush::<Identity, Impl, OFFSET>,
            EndFlush: EndFlush::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAsyncReader as ::windows::core::Interface>::IID
    }
}
pub trait IAtscContentAdvisoryDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetRatingRegionCount(&self) -> ::windows::core::Result<u8>;
    fn GetRecordRatingRegion(&self, bindex: u8) -> ::windows::core::Result<u8>;
    fn GetRecordRatedDimensions(&self, bindex: u8) -> ::windows::core::Result<u8>;
    fn GetRecordRatingDimension(&self, bindexouter: u8, bindexinner: u8) -> ::windows::core::Result<u8>;
    fn GetRecordRatingValue(&self, bindexouter: u8, bindexinner: u8) -> ::windows::core::Result<u8>;
    fn GetRecordRatingDescriptionText(&self, bindex: u8, pblength: *mut u8, pptext: *mut *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IAtscContentAdvisoryDescriptor {}
impl IAtscContentAdvisoryDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscContentAdvisoryDescriptor_Impl, const OFFSET: isize>() -> IAtscContentAdvisoryDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscContentAdvisoryDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscContentAdvisoryDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRatingRegionCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscContentAdvisoryDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRatingRegionCount() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRatingRegion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscContentAdvisoryDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordRatingRegion(::core::mem::transmute_copy(&bindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRatedDimensions<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscContentAdvisoryDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordRatedDimensions(::core::mem::transmute_copy(&bindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRatingDimension<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscContentAdvisoryDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindexouter: u8, bindexinner: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordRatingDimension(::core::mem::transmute_copy(&bindexouter), ::core::mem::transmute_copy(&bindexinner)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRatingValue<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscContentAdvisoryDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindexouter: u8, bindexinner: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordRatingValue(::core::mem::transmute_copy(&bindexouter), ::core::mem::transmute_copy(&bindexinner)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRatingDescriptionText<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscContentAdvisoryDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindex: u8, pblength: *mut u8, pptext: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordRatingDescriptionText(::core::mem::transmute_copy(&bindex), ::core::mem::transmute_copy(&pblength), ::core::mem::transmute_copy(&pptext)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetRatingRegionCount: GetRatingRegionCount::<Identity, Impl, OFFSET>,
            GetRecordRatingRegion: GetRecordRatingRegion::<Identity, Impl, OFFSET>,
            GetRecordRatedDimensions: GetRecordRatedDimensions::<Identity, Impl, OFFSET>,
            GetRecordRatingDimension: GetRecordRatingDimension::<Identity, Impl, OFFSET>,
            GetRecordRatingValue: GetRecordRatingValue::<Identity, Impl, OFFSET>,
            GetRecordRatingDescriptionText: GetRecordRatingDescriptionText::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAtscContentAdvisoryDescriptor as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IAtscPsipParser_Impl: Sized {
    fn Initialize(&self, punkmpeg2data: &::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
    fn GetPAT(&self) -> ::windows::core::Result<IPAT>;
    fn GetCAT(&self, dwtimeout: u32) -> ::windows::core::Result<ICAT>;
    fn GetPMT(&self, pid: u16, pwprogramnumber: *const u16) -> ::windows::core::Result<IPMT>;
    fn GetTSDT(&self) -> ::windows::core::Result<ITSDT>;
    fn GetMGT(&self) -> ::windows::core::Result<IATSC_MGT>;
    fn GetVCT(&self, tableid: u8, fgetnexttable: super::super::Foundation::BOOL) -> ::windows::core::Result<IATSC_VCT>;
    fn GetEIT(&self, pid: u16, pwsourceid: *const u16, dwtimeout: u32) -> ::windows::core::Result<IATSC_EIT>;
    fn GetETT(&self, pid: u16, wsourceid: *const u16, pweventid: *const u16) -> ::windows::core::Result<IATSC_ETT>;
    fn GetSTT(&self) -> ::windows::core::Result<IATSC_STT>;
    fn GetEAS(&self, pid: u16) -> ::windows::core::Result<ISCTE_EAS>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IAtscPsipParser {}
#[cfg(feature = "Win32_Foundation")]
impl IAtscPsipParser_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscPsipParser_Impl, const OFFSET: isize>() -> IAtscPsipParser_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscPsipParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, punkmpeg2data: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&punkmpeg2data)).into()
        }
        unsafe extern "system" fn GetPAT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscPsipParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pppat: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPAT() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pppat, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCAT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscPsipParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwtimeout: u32, ppcat: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCAT(::core::mem::transmute_copy(&dwtimeout)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcat, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPMT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscPsipParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pid: u16, pwprogramnumber: *const u16, pppmt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPMT(::core::mem::transmute_copy(&pid), ::core::mem::transmute_copy(&pwprogramnumber)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pppmt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTSDT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscPsipParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pptsdt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTSDT() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pptsdt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMGT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscPsipParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppmgt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMGT() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppmgt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetVCT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscPsipParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tableid: u8, fgetnexttable: super::super::Foundation::BOOL, ppvct: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVCT(::core::mem::transmute_copy(&tableid), ::core::mem::transmute_copy(&fgetnexttable)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppvct, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEIT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscPsipParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pid: u16, pwsourceid: *const u16, dwtimeout: u32, ppeit: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEIT(::core::mem::transmute_copy(&pid), ::core::mem::transmute_copy(&pwsourceid), ::core::mem::transmute_copy(&dwtimeout)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppeit, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetETT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscPsipParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pid: u16, wsourceid: *const u16, pweventid: *const u16, ppett: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetETT(::core::mem::transmute_copy(&pid), ::core::mem::transmute_copy(&wsourceid), ::core::mem::transmute_copy(&pweventid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppett, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSTT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscPsipParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppstt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSTT() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppstt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEAS<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAtscPsipParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pid: u16, ppeas: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEAS(::core::mem::transmute_copy(&pid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppeas, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetPAT: GetPAT::<Identity, Impl, OFFSET>,
            GetCAT: GetCAT::<Identity, Impl, OFFSET>,
            GetPMT: GetPMT::<Identity, Impl, OFFSET>,
            GetTSDT: GetTSDT::<Identity, Impl, OFFSET>,
            GetMGT: GetMGT::<Identity, Impl, OFFSET>,
            GetVCT: GetVCT::<Identity, Impl, OFFSET>,
            GetEIT: GetEIT::<Identity, Impl, OFFSET>,
            GetETT: GetETT::<Identity, Impl, OFFSET>,
            GetSTT: GetSTT::<Identity, Impl, OFFSET>,
            GetEAS: GetEAS::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAtscPsipParser as ::windows::core::Interface>::IID
    }
}
pub trait IAttributeGet_Impl: Sized {
    fn GetCount(&self) -> ::windows::core::Result<i32>;
    fn GetAttribIndexed(&self, lindex: i32, pguidattribute: *mut ::windows::core::GUID, pbattribute: *mut u8, pdwattributelength: *mut u32) -> ::windows::core::Result<()>;
    fn GetAttrib(&self, guidattribute: &::windows::core::GUID, pbattribute: *mut u8, pdwattributelength: *mut u32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IAttributeGet {}
impl IAttributeGet_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAttributeGet_Impl, const OFFSET: isize>() -> IAttributeGet_Vtbl {
        unsafe extern "system" fn GetCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAttributeGet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plcount: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCount() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plcount, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAttribIndexed<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAttributeGet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lindex: i32, pguidattribute: *mut ::windows::core::GUID, pbattribute: *mut u8, pdwattributelength: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAttribIndexed(::core::mem::transmute_copy(&lindex), ::core::mem::transmute_copy(&pguidattribute), ::core::mem::transmute_copy(&pbattribute), ::core::mem::transmute_copy(&pdwattributelength)).into()
        }
        unsafe extern "system" fn GetAttrib<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAttributeGet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guidattribute: ::windows::core::GUID, pbattribute: *mut u8, pdwattributelength: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAttrib(::core::mem::transmute(&guidattribute), ::core::mem::transmute_copy(&pbattribute), ::core::mem::transmute_copy(&pdwattributelength)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCount: GetCount::<Identity, Impl, OFFSET>,
            GetAttribIndexed: GetAttribIndexed::<Identity, Impl, OFFSET>,
            GetAttrib: GetAttrib::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAttributeGet as ::windows::core::Interface>::IID
    }
}
pub trait IAttributeSet_Impl: Sized {
    fn SetAttrib(&self, guidattribute: &::windows::core::GUID, pbattribute: *const u8, dwattributelength: u32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IAttributeSet {}
impl IAttributeSet_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAttributeSet_Impl, const OFFSET: isize>() -> IAttributeSet_Vtbl {
        unsafe extern "system" fn SetAttrib<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAttributeSet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guidattribute: ::windows::core::GUID, pbattribute: *const u8, dwattributelength: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAttrib(::core::mem::transmute(&guidattribute), ::core::mem::transmute_copy(&pbattribute), ::core::mem::transmute_copy(&dwattributelength)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetAttrib: SetAttrib::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAttributeSet as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_Audio")]
pub trait IAudioData_Impl: Sized + IMemoryData_Impl {
    fn GetFormat(&self) -> ::windows::core::Result<super::Audio::WAVEFORMATEX>;
    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<Impl = Impl>, Impl: IAudioData_Impl, const OFFSET: isize>() -> IAudioData_Vtbl {
        unsafe extern "system" fn GetFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAudioData_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwaveformatcurrent: *mut super::Audio::WAVEFORMATEX) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFormat() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwaveformatcurrent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAudioData_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpwaveformat: *const super::Audio::WAVEFORMATEX) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFormat(::core::mem::transmute_copy(&lpwaveformat)).into()
        }
        Self {
            base__: IMemoryData_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetFormat: GetFormat::<Identity, Impl, OFFSET>,
            SetFormat: SetFormat::<Identity, Impl, 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) -> ::windows::core::Result<super::Audio::WAVEFORMATEX>;
    fn SetFormat(&self, lpwaveformat: *const super::Audio::WAVEFORMATEX) -> ::windows::core::Result<()>;
    fn CreateSample(&self, paudiodata: &::core::option::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<Impl = Impl>, Impl: IAudioMediaStream_Impl, const OFFSET: isize>() -> IAudioMediaStream_Vtbl {
        unsafe extern "system" fn GetFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAudioMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwaveformatcurrent: *mut super::Audio::WAVEFORMATEX) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFormat() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwaveformatcurrent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAudioMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpwaveformat: *const super::Audio::WAVEFORMATEX) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFormat(::core::mem::transmute_copy(&lpwaveformat)).into()
        }
        unsafe extern "system" fn CreateSample<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAudioMediaStream_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CreateSample(::core::mem::transmute(&paudiodata), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppsample, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMediaStream_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetFormat: GetFormat::<Identity, Impl, OFFSET>,
            SetFormat: SetFormat::<Identity, Impl, OFFSET>,
            CreateSample: CreateSample::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAudioMediaStream as ::windows::core::Interface>::IID || iid == &<IMediaStream as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IAudioStreamSample_Impl: Sized + IStreamSample_Impl {
    fn GetAudioData(&self) -> ::windows::core::Result<IAudioData>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IAudioStreamSample {}
#[cfg(feature = "Win32_Foundation")]
impl IAudioStreamSample_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAudioStreamSample_Impl, const OFFSET: isize>() -> IAudioStreamSample_Vtbl {
        unsafe extern "system" fn GetAudioData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAudioStreamSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppaudio: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAudioData() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppaudio, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: IStreamSample_Vtbl::new::<Identity, Impl, OFFSET>(), GetAudioData: GetAudioData::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAudioStreamSample as ::windows::core::Interface>::IID || iid == &<IStreamSample as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IAuxInTuningSpace_Impl: Sized + ITuningSpace_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAuxInTuningSpace {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAuxInTuningSpace_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAuxInTuningSpace_Impl, const OFFSET: isize>() -> IAuxInTuningSpace_Vtbl {
        Self { base__: ITuningSpace_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAuxInTuningSpace as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuningSpace as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IAuxInTuningSpace2_Impl: Sized + IAuxInTuningSpace_Impl {
    fn CountryCode(&self) -> ::windows::core::Result<i32>;
    fn SetCountryCode(&self, newcountrycodeval: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IAuxInTuningSpace2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IAuxInTuningSpace2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAuxInTuningSpace2_Impl, const OFFSET: isize>() -> IAuxInTuningSpace2_Vtbl {
        unsafe extern "system" fn CountryCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAuxInTuningSpace2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, countrycodeval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CountryCode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(countrycodeval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCountryCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IAuxInTuningSpace2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newcountrycodeval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCountryCode(::core::mem::transmute_copy(&newcountrycodeval)).into()
        }
        Self {
            base__: IAuxInTuningSpace_Vtbl::new::<Identity, Impl, OFFSET>(),
            CountryCode: CountryCode::<Identity, Impl, OFFSET>,
            SetCountryCode: SetCountryCode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IAuxInTuningSpace2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuningSpace as ::windows::core::Interface>::IID || iid == &<IAuxInTuningSpace as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IBDAComparable_Impl: Sized {
    fn CompareExact(&self, compareto: &::core::option::Option<super::super::System::Com::IDispatch>) -> ::windows::core::Result<i32>;
    fn CompareEquivalent(&self, compareto: &::core::option::Option<super::super::System::Com::IDispatch>, dwflags: u32) -> ::windows::core::Result<i32>;
    fn HashExact(&self) -> ::windows::core::Result<i64>;
    fn HashExactIncremental(&self, partialresult: i64) -> ::windows::core::Result<i64>;
    fn HashEquivalent(&self, dwflags: u32) -> ::windows::core::Result<i64>;
    fn HashEquivalentIncremental(&self, partialresult: i64, dwflags: u32) -> ::windows::core::Result<i64>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IBDAComparable {}
#[cfg(feature = "Win32_System_Com")]
impl IBDAComparable_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDAComparable_Impl, const OFFSET: isize>() -> IBDAComparable_Vtbl {
        unsafe extern "system" fn CompareExact<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDAComparable_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, compareto: *mut ::core::ffi::c_void, result: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CompareExact(::core::mem::transmute(&compareto)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(result, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CompareEquivalent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDAComparable_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, compareto: *mut ::core::ffi::c_void, dwflags: u32, result: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CompareEquivalent(::core::mem::transmute(&compareto), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(result, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn HashExact<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDAComparable_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, result: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.HashExact() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(result, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn HashExactIncremental<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDAComparable_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, partialresult: i64, result: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.HashExactIncremental(::core::mem::transmute_copy(&partialresult)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(result, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn HashEquivalent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDAComparable_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwflags: u32, result: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.HashEquivalent(::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(result, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn HashEquivalentIncremental<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDAComparable_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, partialresult: i64, dwflags: u32, result: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.HashEquivalentIncremental(::core::mem::transmute_copy(&partialresult), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(result, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CompareExact: CompareExact::<Identity, Impl, OFFSET>,
            CompareEquivalent: CompareEquivalent::<Identity, Impl, OFFSET>,
            HashExact: HashExact::<Identity, Impl, OFFSET>,
            HashExactIncremental: HashExactIncremental::<Identity, Impl, OFFSET>,
            HashEquivalent: HashEquivalent::<Identity, Impl, OFFSET>,
            HashEquivalentIncremental: HashEquivalentIncremental::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IBDAComparable as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IBDACreateTuneRequestEx_Impl: Sized {
    fn CreateTuneRequestEx(&self, tunerequestiid: *const ::windows::core::GUID) -> ::windows::core::Result<ITuneRequest>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IBDACreateTuneRequestEx {}
#[cfg(feature = "Win32_System_Com")]
impl IBDACreateTuneRequestEx_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDACreateTuneRequestEx_Impl, const OFFSET: isize>() -> IBDACreateTuneRequestEx_Vtbl {
        unsafe extern "system" fn CreateTuneRequestEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDACreateTuneRequestEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tunerequestiid: *const ::windows::core::GUID, tunerequest: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CreateTuneRequestEx(::core::mem::transmute_copy(&tunerequestiid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tunerequest, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CreateTuneRequestEx: CreateTuneRequestEx::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IBDACreateTuneRequestEx 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<Impl = Impl>, Impl: IBDA_AUX_Impl, const OFFSET: isize>() -> IBDA_AUX_Vtbl {
        unsafe extern "system" fn QueryCapabilities<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_AUX_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwnumauxinputsbstr: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.QueryCapabilities() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwnumauxinputsbstr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumCapability<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_AUX_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EnumCapability(::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, Impl, OFFSET>,
            EnumCapability: EnumCapability::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_AutoDemodulate_Impl, const OFFSET: isize>() -> IBDA_AutoDemodulate_Vtbl {
        unsafe extern "system" fn put_AutoDemodulate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_AutoDemodulate_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_AutoDemodulate().into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), put_AutoDemodulate: put_AutoDemodulate::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_AutoDemodulateEx_Impl, const OFFSET: isize>() -> IBDA_AutoDemodulateEx_Vtbl {
        unsafe extern "system" fn get_SupportedDeviceNodeTypes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_AutoDemodulateEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcdevicenodetypesmax: u32, pulcdevicenodetypes: *mut u32, pguiddevicenodetypes: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_SupportedDeviceNodeTypes(::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<Impl = Impl>, Impl: IBDA_AutoDemodulateEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulamtunermodetype: *mut u32, pulanalogvideostandard: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_SupportedVideoFormats(::core::mem::transmute_copy(&pulamtunermodetype), ::core::mem::transmute_copy(&pulanalogvideostandard)).into()
        }
        unsafe extern "system" fn get_AuxInputCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_AutoDemodulateEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcompositecount: *mut u32, pulsvideocount: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_AuxInputCount(::core::mem::transmute_copy(&pulcompositecount), ::core::mem::transmute_copy(&pulsvideocount)).into()
        }
        Self {
            base__: IBDA_AutoDemodulate_Vtbl::new::<Identity, Impl, OFFSET>(),
            get_SupportedDeviceNodeTypes: get_SupportedDeviceNodeTypes::<Identity, Impl, OFFSET>,
            get_SupportedVideoFormats: get_SupportedVideoFormats::<Identity, Impl, OFFSET>,
            get_AuxInputCount: get_AuxInputCount::<Identity, Impl, 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 i16) -> ::windows::core::Result<()>;
    fn get_SmartCardInfo(&self, pbstrcardname: *mut ::windows::core::BSTR, pbstrcardmanufacturer: *mut ::windows::core::BSTR, pfdaylightsavings: *mut i16, 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<Impl = Impl>, Impl: IBDA_ConditionalAccess_Impl, const OFFSET: isize>() -> IBDA_ConditionalAccess_Vtbl {
        unsafe extern "system" fn get_SmartCardStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_ConditionalAccess_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcardstatus: *mut SmartCardStatusType, pcardassociation: *mut SmartCardAssociationType, pbstrcarderror: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>, pfooblocked: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_SmartCardStatus(::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<Impl = Impl>, Impl: IBDA_ConditionalAccess_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrcardname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>, pbstrcardmanufacturer: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>, pfdaylightsavings: *mut i16, pbyratingregion: *mut u8, pltimezoneoffsetminutes: *mut i32, pbstrlanguage: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>, pealocationcode: *mut EALocationCodeType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_SmartCardInfo(::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<Impl = Impl>, Impl: IBDA_ConditionalAccess_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcapplications: *mut u32, ulcapplicationsmax: u32, rgapplications: *mut ::core::mem::ManuallyDrop<SmartCardApplication>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_SmartCardApplications(::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<Impl = Impl>, Impl: IBDA_ConditionalAccess_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, usvirtualchannel: u16, pentitlement: *mut EntitlementType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_Entitlement(::core::mem::transmute_copy(&usvirtualchannel)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pentitlement, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TuneByChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_ConditionalAccess_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, usvirtualchannel: u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TuneByChannel(::core::mem::transmute_copy(&usvirtualchannel)).into()
        }
        unsafe extern "system" fn SetProgram<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_ConditionalAccess_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, usprogramnumber: u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetProgram(::core::mem::transmute_copy(&usprogramnumber)).into()
        }
        unsafe extern "system" fn AddProgram<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_ConditionalAccess_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, usprogramnumber: u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AddProgram(::core::mem::transmute_copy(&usprogramnumber)).into()
        }
        unsafe extern "system" fn RemoveProgram<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_ConditionalAccess_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, usprogramnumber: u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RemoveProgram(::core::mem::transmute_copy(&usprogramnumber)).into()
        }
        unsafe extern "system" fn GetModuleUI<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_ConditionalAccess_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bydialognumber: u8, pbstrurl: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetModuleUI(::core::mem::transmute_copy(&bydialognumber)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrurl, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn InformUIClosed<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_ConditionalAccess_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bydialognumber: u8, closereason: UICloseReasonType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.InformUIClosed(::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, Impl, OFFSET>,
            get_SmartCardInfo: get_SmartCardInfo::<Identity, Impl, OFFSET>,
            get_SmartCardApplications: get_SmartCardApplications::<Identity, Impl, OFFSET>,
            get_Entitlement: get_Entitlement::<Identity, Impl, OFFSET>,
            TuneByChannel: TuneByChannel::<Identity, Impl, OFFSET>,
            SetProgram: SetProgram::<Identity, Impl, OFFSET>,
            AddProgram: AddProgram::<Identity, Impl, OFFSET>,
            RemoveProgram: RemoveProgram::<Identity, Impl, OFFSET>,
            GetModuleUI: GetModuleUI::<Identity, Impl, OFFSET>,
            InformUIClosed: InformUIClosed::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_ConditionalAccessEx_Impl, const OFFSET: isize>() -> IBDA_ConditionalAccessEx_Vtbl {
        unsafe extern "system" fn CheckEntitlementToken<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_ConditionalAccessEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, uldialogrequest: u32, bstrlanguage: ::core::mem::ManuallyDrop<::windows::core::BSTR>, requesttype: BDA_CONDITIONALACCESS_REQUESTTYPE, ulcbentitlementtokenlen: u32, pbentitlementtoken: *const u8, puldescramblestatus: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CheckEntitlementToken(::core::mem::transmute_copy(&uldialogrequest), ::core::mem::transmute(&bstrlanguage), ::core::mem::transmute_copy(&requesttype), ::core::mem::transmute_copy(&ulcbentitlementtokenlen), ::core::mem::transmute_copy(&pbentitlementtoken)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(puldescramblestatus, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCaptureToken<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_ConditionalAccessEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcbcapturetokenlen: u32, pbcapturetoken: *const u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCaptureToken(::core::mem::transmute_copy(&ulcbcapturetokenlen), ::core::mem::transmute_copy(&pbcapturetoken)).into()
        }
        unsafe extern "system" fn OpenBroadcastMmi<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_ConditionalAccessEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, uldialogrequest: u32, bstrlanguage: ::core::mem::ManuallyDrop<::windows::core::BSTR>, eventid: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OpenBroadcastMmi(::core::mem::transmute_copy(&uldialogrequest), ::core::mem::transmute(&bstrlanguage), ::core::mem::transmute_copy(&eventid)).into()
        }
        unsafe extern "system" fn CloseMmiDialog<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_ConditionalAccessEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, uldialogrequest: u32, bstrlanguage: ::core::mem::ManuallyDrop<::windows::core::BSTR>, uldialognumber: u32, reasoncode: BDA_CONDITIONALACCESS_MMICLOSEREASON, pulsessionresult: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CloseMmiDialog(::core::mem::transmute_copy(&uldialogrequest), ::core::mem::transmute(&bstrlanguage), ::core::mem::transmute_copy(&uldialognumber), ::core::mem::transmute_copy(&reasoncode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulsessionresult, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CreateDialogRequestNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_ConditionalAccessEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, puldialogrequestnumber: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CreateDialogRequestNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(puldialogrequestnumber, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CheckEntitlementToken: CheckEntitlementToken::<Identity, Impl, OFFSET>,
            SetCaptureToken: SetCaptureToken::<Identity, Impl, OFFSET>,
            OpenBroadcastMmi: OpenBroadcastMmi::<Identity, Impl, OFFSET>,
            CloseMmiDialog: CloseMmiDialog::<Identity, Impl, OFFSET>,
            CreateDialogRequestNumber: CreateDialogRequestNumber::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_DRIDRMService_Impl, const OFFSET: isize>() -> IBDA_DRIDRMService_Vtbl {
        unsafe extern "system" fn SetDRM<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DRIDRMService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bstrnewdrm: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDRM(::core::mem::transmute(&bstrnewdrm)).into()
        }
        unsafe extern "system" fn GetDRMStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DRIDRMService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrdrmuuidlist: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>, drmuuid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDRMStatus(::core::mem::transmute_copy(&pbstrdrmuuidlist), ::core::mem::transmute_copy(&drmuuid)).into()
        }
        unsafe extern "system" fn GetPairingStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DRIDRMService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, penumpairingstatus: *mut BDA_DrmPairingError) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPairingStatus(::core::mem::transmute_copy(&penumpairingstatus)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetDRM: SetDRM::<Identity, Impl, OFFSET>,
            GetDRMStatus: GetDRMStatus::<Identity, Impl, OFFSET>,
            GetPairingStatus: GetPairingStatus::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_DRIWMDRMSession_Impl, const OFFSET: isize>() -> IBDA_DRIWMDRMSession_Vtbl {
        unsafe extern "system" fn AcknowledgeLicense<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DRIWMDRMSession_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hrlicenseack: ::windows::core::HRESULT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AcknowledgeLicense(::core::mem::transmute_copy(&hrlicenseack)).into()
        }
        unsafe extern "system" fn ProcessLicenseChallenge<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DRIWMDRMSession_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwcblicensemessage: u32, pblicensemessage: *const u8, pdwcblicenseresponse: *mut u32, ppblicenseresponse: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ProcessLicenseChallenge(::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<Impl = Impl>, Impl: IBDA_DRIWMDRMSession_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwcbregistrationmessage: u32, pbregistrationmessage: *const u8, pdwcbregistrationresponse: *mut u32, ppbregistrationresponse: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ProcessRegistrationChallenge(::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<Impl = Impl>, Impl: IBDA_DRIWMDRMSession_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrevinfolen: u32, pbrevinfo: *const u8, pdwresponse: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRevInfo(::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<Impl = Impl>, Impl: IBDA_DRIWMDRMSession_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwcrllen: u32, pbcrllen: *const u8, pdwresponse: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCrl(::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<Impl = Impl>, Impl: IBDA_DRIWMDRMSession_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetHMSAssociationData().into()
        }
        unsafe extern "system" fn GetLastCardeaError<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DRIWMDRMSession_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwerror: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLastCardeaError(::core::mem::transmute_copy(&pdwerror)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AcknowledgeLicense: AcknowledgeLicense::<Identity, Impl, OFFSET>,
            ProcessLicenseChallenge: ProcessLicenseChallenge::<Identity, Impl, OFFSET>,
            ProcessRegistrationChallenge: ProcessRegistrationChallenge::<Identity, Impl, OFFSET>,
            SetRevInfo: SetRevInfo::<Identity, Impl, OFFSET>,
            SetCrl: SetCrl::<Identity, Impl, OFFSET>,
            GetHMSAssociationData: GetHMSAssociationData::<Identity, Impl, OFFSET>,
            GetLastCardeaError: GetLastCardeaError::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IBDA_DRIWMDRMSession as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IBDA_DRM {}
#[cfg(feature = "Win32_Foundation")]
impl IBDA_DRM_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DRM_Impl, const OFFSET: isize>() -> IBDA_DRM_Vtbl {
        unsafe extern "system" fn GetDRMPairingStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DRM_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwstatus: *mut u32, pherror: *mut ::windows::core::HRESULT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDRMPairingStatus(::core::mem::transmute_copy(&pdwstatus), ::core::mem::transmute_copy(&pherror)).into()
        }
        unsafe extern "system" fn PerformDRMPairing<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DRM_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fsync: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PerformDRMPairing(::core::mem::transmute_copy(&fsync)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDRMPairingStatus: GetDRMPairingStatus::<Identity, Impl, OFFSET>,
            PerformDRMPairing: PerformDRMPairing::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_DRMService_Impl, const OFFSET: isize>() -> IBDA_DRMService_Vtbl {
        unsafe extern "system" fn SetDRM<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DRMService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, puuidnewdrm: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDRM(::core::mem::transmute_copy(&puuidnewdrm)).into()
        }
        unsafe extern "system" fn GetDRMStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DRMService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrdrmuuidlist: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>, drmuuid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDRMStatus(::core::mem::transmute_copy(&pbstrdrmuuidlist), ::core::mem::transmute_copy(&drmuuid)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetDRM: SetDRM::<Identity, Impl, OFFSET>,
            GetDRMStatus: GetDRMStatus::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_DeviceControl_Impl, const OFFSET: isize>() -> IBDA_DeviceControl_Vtbl {
        unsafe extern "system" fn StartChanges<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DeviceControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StartChanges().into()
        }
        unsafe extern "system" fn CheckChanges<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DeviceControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CheckChanges().into()
        }
        unsafe extern "system" fn CommitChanges<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DeviceControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CommitChanges().into()
        }
        unsafe extern "system" fn GetChangeState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DeviceControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstate: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetChangeState(::core::mem::transmute_copy(&pstate)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartChanges: StartChanges::<Identity, Impl, OFFSET>,
            CheckChanges: CheckChanges::<Identity, Impl, OFFSET>,
            CommitChanges: CommitChanges::<Identity, Impl, OFFSET>,
            GetChangeState: GetChangeState::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IBDA_DeviceControl as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Ole"))]
pub trait IBDA_DiagnosticProperties_Impl: Sized + super::super::System::Com::StructuredStorage::IPropertyBag_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IBDA_DiagnosticProperties {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Ole"))]
impl IBDA_DiagnosticProperties_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DiagnosticProperties_Impl, const OFFSET: isize>() -> IBDA_DiagnosticProperties_Vtbl {
        Self { base__: super::super::System::Com::StructuredStorage::IPropertyBag_Vtbl::new::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>() -> IBDA_DigitalDemodulator_Vtbl {
        unsafe extern "system" fn SetModulationType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmodulationtype: *const ModulationType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetModulationType(::core::mem::transmute_copy(&pmodulationtype)).into()
        }
        unsafe extern "system" fn ModulationType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmodulationtype: *mut ModulationType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ModulationType(::core::mem::transmute_copy(&pmodulationtype)).into()
        }
        unsafe extern "system" fn SetInnerFECMethod<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfecmethod: *const FECMethod) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetInnerFECMethod(::core::mem::transmute_copy(&pfecmethod)).into()
        }
        unsafe extern "system" fn InnerFECMethod<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfecmethod: *mut FECMethod) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.InnerFECMethod(::core::mem::transmute_copy(&pfecmethod)).into()
        }
        unsafe extern "system" fn SetInnerFECRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfecrate: *const BinaryConvolutionCodeRate) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetInnerFECRate(::core::mem::transmute_copy(&pfecrate)).into()
        }
        unsafe extern "system" fn InnerFECRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfecrate: *mut BinaryConvolutionCodeRate) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.InnerFECRate(::core::mem::transmute_copy(&pfecrate)).into()
        }
        unsafe extern "system" fn SetOuterFECMethod<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfecmethod: *const FECMethod) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOuterFECMethod(::core::mem::transmute_copy(&pfecmethod)).into()
        }
        unsafe extern "system" fn OuterFECMethod<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfecmethod: *mut FECMethod) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OuterFECMethod(::core::mem::transmute_copy(&pfecmethod)).into()
        }
        unsafe extern "system" fn SetOuterFECRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfecrate: *const BinaryConvolutionCodeRate) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOuterFECRate(::core::mem::transmute_copy(&pfecrate)).into()
        }
        unsafe extern "system" fn OuterFECRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfecrate: *mut BinaryConvolutionCodeRate) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OuterFECRate(::core::mem::transmute_copy(&pfecrate)).into()
        }
        unsafe extern "system" fn SetSymbolRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psymbolrate: *const u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSymbolRate(::core::mem::transmute_copy(&psymbolrate)).into()
        }
        unsafe extern "system" fn SymbolRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psymbolrate: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SymbolRate(::core::mem::transmute_copy(&psymbolrate)).into()
        }
        unsafe extern "system" fn SetSpectralInversion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pspectralinversion: *const SpectralInversion) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSpectralInversion(::core::mem::transmute_copy(&pspectralinversion)).into()
        }
        unsafe extern "system" fn SpectralInversion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pspectralinversion: *mut SpectralInversion) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SpectralInversion(::core::mem::transmute_copy(&pspectralinversion)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetModulationType: SetModulationType::<Identity, Impl, OFFSET>,
            ModulationType: ModulationType::<Identity, Impl, OFFSET>,
            SetInnerFECMethod: SetInnerFECMethod::<Identity, Impl, OFFSET>,
            InnerFECMethod: InnerFECMethod::<Identity, Impl, OFFSET>,
            SetInnerFECRate: SetInnerFECRate::<Identity, Impl, OFFSET>,
            InnerFECRate: InnerFECRate::<Identity, Impl, OFFSET>,
            SetOuterFECMethod: SetOuterFECMethod::<Identity, Impl, OFFSET>,
            OuterFECMethod: OuterFECMethod::<Identity, Impl, OFFSET>,
            SetOuterFECRate: SetOuterFECRate::<Identity, Impl, OFFSET>,
            OuterFECRate: OuterFECRate::<Identity, Impl, OFFSET>,
            SetSymbolRate: SetSymbolRate::<Identity, Impl, OFFSET>,
            SymbolRate: SymbolRate::<Identity, Impl, OFFSET>,
            SetSpectralInversion: SetSpectralInversion::<Identity, Impl, OFFSET>,
            SpectralInversion: SpectralInversion::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_DigitalDemodulator2_Impl, const OFFSET: isize>() -> IBDA_DigitalDemodulator2_Vtbl {
        unsafe extern "system" fn SetGuardInterval<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguardinterval: *const GuardInterval) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetGuardInterval(::core::mem::transmute_copy(&pguardinterval)).into()
        }
        unsafe extern "system" fn GuardInterval<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguardinterval: *mut GuardInterval) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GuardInterval(::core::mem::transmute_copy(&pguardinterval)).into()
        }
        unsafe extern "system" fn SetTransmissionMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptransmissionmode: *const TransmissionMode) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTransmissionMode(::core::mem::transmute_copy(&ptransmissionmode)).into()
        }
        unsafe extern "system" fn TransmissionMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptransmissionmode: *mut TransmissionMode) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TransmissionMode(::core::mem::transmute_copy(&ptransmissionmode)).into()
        }
        unsafe extern "system" fn SetRollOff<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prolloff: *const RollOff) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRollOff(::core::mem::transmute_copy(&prolloff)).into()
        }
        unsafe extern "system" fn RollOff<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prolloff: *mut RollOff) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RollOff(::core::mem::transmute_copy(&prolloff)).into()
        }
        unsafe extern "system" fn SetPilot<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppilot: *const Pilot) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPilot(::core::mem::transmute_copy(&ppilot)).into()
        }
        unsafe extern "system" fn Pilot<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppilot: *mut Pilot) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Pilot(::core::mem::transmute_copy(&ppilot)).into()
        }
        Self {
            base__: IBDA_DigitalDemodulator_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetGuardInterval: SetGuardInterval::<Identity, Impl, OFFSET>,
            GuardInterval: GuardInterval::<Identity, Impl, OFFSET>,
            SetTransmissionMode: SetTransmissionMode::<Identity, Impl, OFFSET>,
            TransmissionMode: TransmissionMode::<Identity, Impl, OFFSET>,
            SetRollOff: SetRollOff::<Identity, Impl, OFFSET>,
            RollOff: RollOff::<Identity, Impl, OFFSET>,
            SetPilot: SetPilot::<Identity, Impl, OFFSET>,
            Pilot: Pilot::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_DigitalDemodulator3_Impl, const OFFSET: isize>() -> IBDA_DigitalDemodulator3_Vtbl {
        unsafe extern "system" fn SetSignalTimeouts<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psignaltimeouts: *const BDA_SIGNAL_TIMEOUTS) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSignalTimeouts(::core::mem::transmute_copy(&psignaltimeouts)).into()
        }
        unsafe extern "system" fn SignalTimeouts<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psignaltimeouts: *mut BDA_SIGNAL_TIMEOUTS) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SignalTimeouts(::core::mem::transmute_copy(&psignaltimeouts)).into()
        }
        unsafe extern "system" fn SetPLPNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pplpnumber: *const u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPLPNumber(::core::mem::transmute_copy(&pplpnumber)).into()
        }
        unsafe extern "system" fn PLPNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DigitalDemodulator3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pplpnumber: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PLPNumber(::core::mem::transmute_copy(&pplpnumber)).into()
        }
        Self {
            base__: IBDA_DigitalDemodulator2_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetSignalTimeouts: SetSignalTimeouts::<Identity, Impl, OFFSET>,
            SignalTimeouts: SignalTimeouts::<Identity, Impl, OFFSET>,
            SetPLPNumber: SetPLPNumber::<Identity, Impl, OFFSET>,
            PLPNumber: PLPNumber::<Identity, Impl, 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
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IBDA_DiseqCommand {}
#[cfg(feature = "Win32_Foundation")]
impl IBDA_DiseqCommand_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DiseqCommand_Impl, const OFFSET: isize>() -> IBDA_DiseqCommand_Vtbl {
        unsafe extern "system" fn SetEnableDiseqCommands<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DiseqCommand_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benable: super::super::Foundation::BOOLEAN) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetEnableDiseqCommands(::core::mem::transmute_copy(&benable)).into()
        }
        unsafe extern "system" fn SetDiseqLNBSource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DiseqCommand_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ullnbsource: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDiseqLNBSource(::core::mem::transmute_copy(&ullnbsource)).into()
        }
        unsafe extern "system" fn SetDiseqUseToneBurst<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DiseqCommand_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, busetoneburst: super::super::Foundation::BOOLEAN) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDiseqUseToneBurst(::core::mem::transmute_copy(&busetoneburst)).into()
        }
        unsafe extern "system" fn SetDiseqRepeats<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DiseqCommand_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulrepeats: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDiseqRepeats(::core::mem::transmute_copy(&ulrepeats)).into()
        }
        unsafe extern "system" fn put_DiseqSendCommand<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_DiseqCommand_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulrequestid: u32, ulcbcommandlen: u32, pbcommand: *const u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_DiseqSendCommand(::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<Impl = Impl>, Impl: IBDA_DiseqCommand_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulrequestid: u32, pulcbresponselen: *mut u32, pbresponse: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_DiseqResponse(::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, Impl, OFFSET>,
            SetDiseqLNBSource: SetDiseqLNBSource::<Identity, Impl, OFFSET>,
            SetDiseqUseToneBurst: SetDiseqUseToneBurst::<Identity, Impl, OFFSET>,
            SetDiseqRepeats: SetDiseqRepeats::<Identity, Impl, OFFSET>,
            put_DiseqSendCommand: put_DiseqSendCommand::<Identity, Impl, OFFSET>,
            get_DiseqResponse: get_DiseqResponse::<Identity, Impl, 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 ::core::option::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<Impl = Impl>, Impl: IBDA_EasMessage_Impl, const OFFSET: isize>() -> IBDA_EasMessage_Vtbl {
        unsafe extern "system" fn get_EasMessage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_EasMessage_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, uleventid: u32, ppeasobject: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_EasMessage(::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, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IBDA_EasMessage as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IBDA_Encoder {}
#[cfg(feature = "Win32_Foundation")]
impl IBDA_Encoder_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_Encoder_Impl, const OFFSET: isize>() -> IBDA_Encoder_Vtbl {
        unsafe extern "system" fn QueryCapabilities<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_Encoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, numaudiofmts: *mut u32, numvideofmts: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.QueryCapabilities(::core::mem::transmute_copy(&numaudiofmts), ::core::mem::transmute_copy(&numvideofmts)).into()
        }
        unsafe extern "system" fn EnumAudioCapability<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_Encoder_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EnumAudioCapability(::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<Impl = Impl>, Impl: IBDA_Encoder_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EnumVideoCapability(::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<Impl = Impl>, Impl: IBDA_Encoder_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetParameters(::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<Impl = Impl>, Impl: IBDA_Encoder_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetState(
                ::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, Impl, OFFSET>,
            EnumAudioCapability: EnumAudioCapability::<Identity, Impl, OFFSET>,
            EnumVideoCapability: EnumVideoCapability::<Identity, Impl, OFFSET>,
            SetParameters: SetParameters::<Identity, Impl, OFFSET>,
            GetState: GetState::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_EthernetFilter_Impl, const OFFSET: isize>() -> IBDA_EthernetFilter_Vtbl {
        unsafe extern "system" fn GetMulticastListSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_EthernetFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcbaddresses: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMulticastListSize(::core::mem::transmute_copy(&pulcbaddresses)).into()
        }
        unsafe extern "system" fn PutMulticastList<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_EthernetFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcbaddresses: u32, paddresslist: *const u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PutMulticastList(::core::mem::transmute_copy(&ulcbaddresses), ::core::mem::transmute_copy(&paddresslist)).into()
        }
        unsafe extern "system" fn GetMulticastList<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_EthernetFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcbaddresses: *mut u32, paddresslist: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMulticastList(::core::mem::transmute_copy(&pulcbaddresses), ::core::mem::transmute_copy(&paddresslist)).into()
        }
        unsafe extern "system" fn PutMulticastMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_EthernetFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulmodemask: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PutMulticastMode(::core::mem::transmute_copy(&ulmodemask)).into()
        }
        unsafe extern "system" fn GetMulticastMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_EthernetFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulmodemask: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMulticastMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulmodemask, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetMulticastListSize: GetMulticastListSize::<Identity, Impl, OFFSET>,
            PutMulticastList: PutMulticastList::<Identity, Impl, OFFSET>,
            GetMulticastList: GetMulticastList::<Identity, Impl, OFFSET>,
            PutMulticastMode: PutMulticastMode::<Identity, Impl, OFFSET>,
            GetMulticastMode: GetMulticastMode::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_EventingService_Impl, const OFFSET: isize>() -> IBDA_EventingService_Vtbl {
        unsafe extern "system" fn CompleteEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_EventingService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, uleventid: u32, uleventresult: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CompleteEvent(::core::mem::transmute_copy(&uleventid), ::core::mem::transmute_copy(&uleventresult)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CompleteEvent: CompleteEvent::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IBDA_EventingService as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IBDA_FDC {}
#[cfg(feature = "Win32_Foundation")]
impl IBDA_FDC_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FDC_Impl, const OFFSET: isize>() -> IBDA_FDC_Vtbl {
        unsafe extern "system" fn GetStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FDC_Impl, 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::ManuallyDrop<::windows::core::BSTR>, currenttidlist: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>, overflow: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetStatus(::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<Impl = Impl>, Impl: IBDA_FDC_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tableids: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RequestTables(::core::mem::transmute(&tableids)).into()
        }
        unsafe extern "system" fn AddPid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FDC_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pidstoadd: ::core::mem::ManuallyDrop<::windows::core::BSTR>, remainingfilterentries: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AddPid(::core::mem::transmute(&pidstoadd)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(remainingfilterentries, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RemovePid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FDC_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pidstoremove: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RemovePid(::core::mem::transmute(&pidstoremove)).into()
        }
        unsafe extern "system" fn AddTid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FDC_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tidstoadd: ::core::mem::ManuallyDrop<::windows::core::BSTR>, currenttidlist: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AddTid(::core::mem::transmute(&tidstoadd)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(currenttidlist, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RemoveTid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FDC_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tidstoremove: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RemoveTid(::core::mem::transmute(&tidstoremove)).into()
        }
        unsafe extern "system" fn GetTableSection<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FDC_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pid: *mut u32, maxbuffersize: u32, actualsize: *mut u32, secbuffer: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableSection(::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, Impl, OFFSET>,
            RequestTables: RequestTables::<Identity, Impl, OFFSET>,
            AddPid: AddPid::<Identity, Impl, OFFSET>,
            RemovePid: RemovePid::<Identity, Impl, OFFSET>,
            AddTid: AddTid::<Identity, Impl, OFFSET>,
            RemoveTid: RemoveTid::<Identity, Impl, OFFSET>,
            GetTableSection: GetTableSection::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_FrequencyFilter_Impl, const OFFSET: isize>() -> IBDA_FrequencyFilter_Vtbl {
        unsafe extern "system" fn SetAutotune<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FrequencyFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ultransponder: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAutotune(::core::mem::transmute_copy(&ultransponder)).into()
        }
        unsafe extern "system" fn Autotune<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FrequencyFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pultransponder: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Autotune(::core::mem::transmute_copy(&pultransponder)).into()
        }
        unsafe extern "system" fn SetFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FrequencyFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulfrequency: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFrequency(::core::mem::transmute_copy(&ulfrequency)).into()
        }
        unsafe extern "system" fn Frequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FrequencyFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulfrequency: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Frequency(::core::mem::transmute_copy(&pulfrequency)).into()
        }
        unsafe extern "system" fn SetPolarity<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FrequencyFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, polarity: Polarisation) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPolarity(::core::mem::transmute_copy(&polarity)).into()
        }
        unsafe extern "system" fn Polarity<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FrequencyFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppolarity: *mut Polarisation) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Polarity(::core::mem::transmute_copy(&ppolarity)).into()
        }
        unsafe extern "system" fn SetRange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FrequencyFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulrange: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRange(::core::mem::transmute_copy(&ulrange)).into()
        }
        unsafe extern "system" fn Range<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FrequencyFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulrange: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Range(::core::mem::transmute_copy(&pulrange)).into()
        }
        unsafe extern "system" fn SetBandwidth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FrequencyFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulbandwidth: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBandwidth(::core::mem::transmute_copy(&ulbandwidth)).into()
        }
        unsafe extern "system" fn Bandwidth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FrequencyFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulbandwidth: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Bandwidth(::core::mem::transmute_copy(&pulbandwidth)).into()
        }
        unsafe extern "system" fn SetFrequencyMultiplier<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FrequencyFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulmultiplier: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFrequencyMultiplier(::core::mem::transmute_copy(&ulmultiplier)).into()
        }
        unsafe extern "system" fn FrequencyMultiplier<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_FrequencyFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulmultiplier: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.FrequencyMultiplier(::core::mem::transmute_copy(&pulmultiplier)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAutotune: SetAutotune::<Identity, Impl, OFFSET>,
            Autotune: Autotune::<Identity, Impl, OFFSET>,
            SetFrequency: SetFrequency::<Identity, Impl, OFFSET>,
            Frequency: Frequency::<Identity, Impl, OFFSET>,
            SetPolarity: SetPolarity::<Identity, Impl, OFFSET>,
            Polarity: Polarity::<Identity, Impl, OFFSET>,
            SetRange: SetRange::<Identity, Impl, OFFSET>,
            Range: Range::<Identity, Impl, OFFSET>,
            SetBandwidth: SetBandwidth::<Identity, Impl, OFFSET>,
            Bandwidth: Bandwidth::<Identity, Impl, OFFSET>,
            SetFrequencyMultiplier: SetFrequencyMultiplier::<Identity, Impl, OFFSET>,
            FrequencyMultiplier: FrequencyMultiplier::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_GuideDataDeliveryService_Impl, const OFFSET: isize>() -> IBDA_GuideDataDeliveryService_Vtbl {
        unsafe extern "system" fn GetGuideDataType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_GuideDataDeliveryService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguiddatatype: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetGuideDataType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pguiddatatype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetGuideData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_GuideDataDeliveryService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcbbufferlen: *mut u32, pbbuffer: *mut u8, pulguidedatapercentageprogress: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetGuideData(::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<Impl = Impl>, Impl: IBDA_GuideDataDeliveryService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RequestGuideDataUpdate().into()
        }
        unsafe extern "system" fn GetTuneXmlFromServiceIdx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_GuideDataDeliveryService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ul64serviceidx: u64, pbstrtunexml: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTuneXmlFromServiceIdx(::core::mem::transmute_copy(&ul64serviceidx)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrtunexml, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServices<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_GuideDataDeliveryService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcbbufferlen: *mut u32, pbbuffer: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetServices(::core::mem::transmute_copy(&pulcbbufferlen), ::core::mem::transmute_copy(&pbbuffer)).into()
        }
        unsafe extern "system" fn GetServiceInfoFromTuneXml<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_GuideDataDeliveryService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bstrtunexml: ::core::mem::ManuallyDrop<::windows::core::BSTR>, pbstrservicedescription: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServiceInfoFromTuneXml(::core::mem::transmute(&bstrtunexml)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrservicedescription, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetGuideDataType: GetGuideDataType::<Identity, Impl, OFFSET>,
            GetGuideData: GetGuideData::<Identity, Impl, OFFSET>,
            RequestGuideDataUpdate: RequestGuideDataUpdate::<Identity, Impl, OFFSET>,
            GetTuneXmlFromServiceIdx: GetTuneXmlFromServiceIdx::<Identity, Impl, OFFSET>,
            GetServices: GetServices::<Identity, Impl, OFFSET>,
            GetServiceInfoFromTuneXml: GetServiceInfoFromTuneXml::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_IPSinkControl_Impl, const OFFSET: isize>() -> IBDA_IPSinkControl_Vtbl {
        unsafe extern "system" fn GetMulticastList<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPSinkControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcbsize: *mut u32, pbbuffer: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMulticastList(::core::mem::transmute_copy(&pulcbsize), ::core::mem::transmute_copy(&pbbuffer)).into()
        }
        unsafe extern "system" fn GetAdapterIPAddress<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPSinkControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcbsize: *mut u32, pbbuffer: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAdapterIPAddress(::core::mem::transmute_copy(&pulcbsize), ::core::mem::transmute_copy(&pbbuffer)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetMulticastList: GetMulticastList::<Identity, Impl, OFFSET>,
            GetAdapterIPAddress: GetAdapterIPAddress::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_IPSinkInfo_Impl, const OFFSET: isize>() -> IBDA_IPSinkInfo_Vtbl {
        unsafe extern "system" fn get_MulticastList<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPSinkInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcbaddresses: *mut u32, ppbaddresslist: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_MulticastList(::core::mem::transmute_copy(&pulcbaddresses), ::core::mem::transmute_copy(&ppbaddresslist)).into()
        }
        unsafe extern "system" fn AdapterIPAddress<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPSinkInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrbuffer: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AdapterIPAddress() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrbuffer, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AdapterDescription<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPSinkInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrbuffer: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AdapterDescription() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrbuffer, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            get_MulticastList: get_MulticastList::<Identity, Impl, OFFSET>,
            AdapterIPAddress: AdapterIPAddress::<Identity, Impl, OFFSET>,
            AdapterDescription: AdapterDescription::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_IPV4Filter_Impl, const OFFSET: isize>() -> IBDA_IPV4Filter_Vtbl {
        unsafe extern "system" fn GetMulticastListSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPV4Filter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcbaddresses: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMulticastListSize(::core::mem::transmute_copy(&pulcbaddresses)).into()
        }
        unsafe extern "system" fn PutMulticastList<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPV4Filter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcbaddresses: u32, paddresslist: *const u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PutMulticastList(::core::mem::transmute_copy(&ulcbaddresses), ::core::mem::transmute_copy(&paddresslist)).into()
        }
        unsafe extern "system" fn GetMulticastList<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPV4Filter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcbaddresses: *mut u32, paddresslist: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMulticastList(::core::mem::transmute_copy(&pulcbaddresses), ::core::mem::transmute_copy(&paddresslist)).into()
        }
        unsafe extern "system" fn PutMulticastMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPV4Filter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulmodemask: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PutMulticastMode(::core::mem::transmute_copy(&ulmodemask)).into()
        }
        unsafe extern "system" fn GetMulticastMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPV4Filter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulmodemask: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMulticastMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulmodemask, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetMulticastListSize: GetMulticastListSize::<Identity, Impl, OFFSET>,
            PutMulticastList: PutMulticastList::<Identity, Impl, OFFSET>,
            GetMulticastList: GetMulticastList::<Identity, Impl, OFFSET>,
            PutMulticastMode: PutMulticastMode::<Identity, Impl, OFFSET>,
            GetMulticastMode: GetMulticastMode::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_IPV6Filter_Impl, const OFFSET: isize>() -> IBDA_IPV6Filter_Vtbl {
        unsafe extern "system" fn GetMulticastListSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPV6Filter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcbaddresses: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMulticastListSize(::core::mem::transmute_copy(&pulcbaddresses)).into()
        }
        unsafe extern "system" fn PutMulticastList<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPV6Filter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcbaddresses: u32, paddresslist: *const u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PutMulticastList(::core::mem::transmute_copy(&ulcbaddresses), ::core::mem::transmute_copy(&paddresslist)).into()
        }
        unsafe extern "system" fn GetMulticastList<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPV6Filter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcbaddresses: *mut u32, paddresslist: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMulticastList(::core::mem::transmute_copy(&pulcbaddresses), ::core::mem::transmute_copy(&paddresslist)).into()
        }
        unsafe extern "system" fn PutMulticastMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPV6Filter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulmodemask: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PutMulticastMode(::core::mem::transmute_copy(&ulmodemask)).into()
        }
        unsafe extern "system" fn GetMulticastMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_IPV6Filter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulmodemask: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMulticastMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulmodemask, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetMulticastListSize: GetMulticastListSize::<Identity, Impl, OFFSET>,
            PutMulticastList: PutMulticastList::<Identity, Impl, OFFSET>,
            GetMulticastList: GetMulticastList::<Identity, Impl, OFFSET>,
            PutMulticastMode: PutMulticastMode::<Identity, Impl, OFFSET>,
            GetMulticastMode: GetMulticastMode::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_ISDBConditionalAccess_Impl, const OFFSET: isize>() -> IBDA_ISDBConditionalAccess_Vtbl {
        unsafe extern "system" fn SetIsdbCasRequest<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_ISDBConditionalAccess_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulrequestid: u32, ulcbrequestbufferlen: u32, pbrequestbuffer: *const u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetIsdbCasRequest(::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, Impl, 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<Impl = Impl>, Impl: IBDA_LNBInfo_Impl, const OFFSET: isize>() -> IBDA_LNBInfo_Vtbl {
        unsafe extern "system" fn SetLocalOscilatorFrequencyLowBand<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_LNBInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulloflow: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLocalOscilatorFrequencyLowBand(::core::mem::transmute_copy(&ulloflow)).into()
        }
        unsafe extern "system" fn LocalOscilatorFrequencyLowBand<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_LNBInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulloflow: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.LocalOscilatorFrequencyLowBand(::core::mem::transmute_copy(&pulloflow)).into()
        }
        unsafe extern "system" fn SetLocalOscilatorFrequencyHighBand<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_LNBInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ullofhigh: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLocalOscilatorFrequencyHighBand(::core::mem::transmute_copy(&ullofhigh)).into()
        }
        unsafe extern "system" fn LocalOscilatorFrequencyHighBand<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_LNBInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pullofhigh: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.LocalOscilatorFrequencyHighBand(::core::mem::transmute_copy(&pullofhigh)).into()
        }
        unsafe extern "system" fn SetHighLowSwitchFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_LNBInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulswitchfrequency: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetHighLowSwitchFrequency(::core::mem::transmute_copy(&ulswitchfrequency)).into()
        }
        unsafe extern "system" fn HighLowSwitchFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_LNBInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulswitchfrequency: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.HighLowSwitchFrequency(::core::mem::transmute_copy(&pulswitchfrequency)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetLocalOscilatorFrequencyLowBand: SetLocalOscilatorFrequencyLowBand::<Identity, Impl, OFFSET>,
            LocalOscilatorFrequencyLowBand: LocalOscilatorFrequencyLowBand::<Identity, Impl, OFFSET>,
            SetLocalOscilatorFrequencyHighBand: SetLocalOscilatorFrequencyHighBand::<Identity, Impl, OFFSET>,
            LocalOscilatorFrequencyHighBand: LocalOscilatorFrequencyHighBand::<Identity, Impl, OFFSET>,
            SetHighLowSwitchFrequency: SetHighLowSwitchFrequency::<Identity, Impl, OFFSET>,
            HighLowSwitchFrequency: HighLowSwitchFrequency::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_MUX_Impl, const OFFSET: isize>() -> IBDA_MUX_Vtbl {
        unsafe extern "system" fn SetPidList<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_MUX_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulpidlistcount: u32, pbpidlistbuffer: *const BDA_MUX_PIDLISTITEM) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPidList(::core::mem::transmute_copy(&ulpidlistcount), ::core::mem::transmute_copy(&pbpidlistbuffer)).into()
        }
        unsafe extern "system" fn GetPidList<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_MUX_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulpidlistcount: *mut u32, pbpidlistbuffer: *mut BDA_MUX_PIDLISTITEM) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPidList(::core::mem::transmute_copy(&pulpidlistcount), ::core::mem::transmute_copy(&pbpidlistbuffer)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetPidList: SetPidList::<Identity, Impl, OFFSET>,
            GetPidList: GetPidList::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_NameValueService_Impl, const OFFSET: isize>() -> IBDA_NameValueService_Vtbl {
        unsafe extern "system" fn GetValueNameByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_NameValueService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulindex: u32, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetValueNameByIndex(::core::mem::transmute_copy(&ulindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetValue<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_NameValueService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bstrname: ::core::mem::ManuallyDrop<::windows::core::BSTR>, bstrlanguage: ::core::mem::ManuallyDrop<::windows::core::BSTR>, pbstrvalue: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetValue(::core::mem::transmute(&bstrname), ::core::mem::transmute(&bstrlanguage)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetValue<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_NameValueService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, uldialogrequest: u32, bstrlanguage: ::core::mem::ManuallyDrop<::windows::core::BSTR>, bstrname: ::core::mem::ManuallyDrop<::windows::core::BSTR>, bstrvalue: ::core::mem::ManuallyDrop<::windows::core::BSTR>, ulreserved: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetValue(::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, Impl, OFFSET>,
            GetValue: GetValue::<Identity, Impl, OFFSET>,
            SetValue: SetValue::<Identity, Impl, 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: &::core::option::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<Impl = Impl>, Impl: IBDA_NetworkProvider_Impl, const OFFSET: isize>() -> IBDA_NetworkProvider_Vtbl {
        unsafe extern "system" fn PutSignalSource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_NetworkProvider_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulsignalsource: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PutSignalSource(::core::mem::transmute_copy(&ulsignalsource)).into()
        }
        unsafe extern "system" fn GetSignalSource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_NetworkProvider_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulsignalsource: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetSignalSource(::core::mem::transmute_copy(&pulsignalsource)).into()
        }
        unsafe extern "system" fn GetNetworkType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_NetworkProvider_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguidnetworktype: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetNetworkType(::core::mem::transmute_copy(&pguidnetworktype)).into()
        }
        unsafe extern "system" fn PutTuningSpace<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_NetworkProvider_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guidtuningspace: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PutTuningSpace(::core::mem::transmute_copy(&guidtuningspace)).into()
        }
        unsafe extern "system" fn GetTuningSpace<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_NetworkProvider_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguidtuingspace: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTuningSpace(::core::mem::transmute_copy(&pguidtuingspace)).into()
        }
        unsafe extern "system" fn RegisterDeviceFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_NetworkProvider_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, punkfiltercontrol: *mut ::core::ffi::c_void, ppvregisitrationcontext: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterDeviceFilter(::core::mem::transmute(&punkfiltercontrol), ::core::mem::transmute_copy(&ppvregisitrationcontext)).into()
        }
        unsafe extern "system" fn UnRegisterDeviceFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_NetworkProvider_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvregistrationcontext: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnRegisterDeviceFilter(::core::mem::transmute_copy(&pvregistrationcontext)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            PutSignalSource: PutSignalSource::<Identity, Impl, OFFSET>,
            GetSignalSource: GetSignalSource::<Identity, Impl, OFFSET>,
            GetNetworkType: GetNetworkType::<Identity, Impl, OFFSET>,
            PutTuningSpace: PutTuningSpace::<Identity, Impl, OFFSET>,
            GetTuningSpace: GetTuningSpace::<Identity, Impl, OFFSET>,
            RegisterDeviceFilter: RegisterDeviceFilter::<Identity, Impl, OFFSET>,
            UnRegisterDeviceFilter: UnRegisterDeviceFilter::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_NullTransform_Impl, const OFFSET: isize>() -> IBDA_NullTransform_Vtbl {
        unsafe extern "system" fn Start<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_NullTransform_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Start().into()
        }
        unsafe extern "system" fn Stop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_NullTransform_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Stop().into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Start: Start::<Identity, Impl, OFFSET>, Stop: Stop::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_PinControl_Impl, const OFFSET: isize>() -> IBDA_PinControl_Vtbl {
        unsafe extern "system" fn GetPinID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_PinControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulpinid: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPinID(::core::mem::transmute_copy(&pulpinid)).into()
        }
        unsafe extern "system" fn GetPinType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_PinControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulpintype: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPinType(::core::mem::transmute_copy(&pulpintype)).into()
        }
        unsafe extern "system" fn RegistrationContext<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_PinControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulregistrationctx: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegistrationContext(::core::mem::transmute_copy(&pulregistrationctx)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPinID: GetPinID::<Identity, Impl, OFFSET>,
            GetPinType: GetPinType::<Identity, Impl, OFFSET>,
            RegistrationContext: RegistrationContext::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_SignalProperties_Impl, const OFFSET: isize>() -> IBDA_SignalProperties_Vtbl {
        unsafe extern "system" fn PutNetworkType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalProperties_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guidnetworktype: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PutNetworkType(::core::mem::transmute_copy(&guidnetworktype)).into()
        }
        unsafe extern "system" fn GetNetworkType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalProperties_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguidnetworktype: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetNetworkType(::core::mem::transmute_copy(&pguidnetworktype)).into()
        }
        unsafe extern "system" fn PutSignalSource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalProperties_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulsignalsource: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PutSignalSource(::core::mem::transmute_copy(&ulsignalsource)).into()
        }
        unsafe extern "system" fn GetSignalSource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalProperties_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulsignalsource: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetSignalSource(::core::mem::transmute_copy(&pulsignalsource)).into()
        }
        unsafe extern "system" fn PutTuningSpace<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalProperties_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guidtuningspace: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PutTuningSpace(::core::mem::transmute_copy(&guidtuningspace)).into()
        }
        unsafe extern "system" fn GetTuningSpace<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalProperties_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguidtuingspace: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTuningSpace(::core::mem::transmute_copy(&pguidtuingspace)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            PutNetworkType: PutNetworkType::<Identity, Impl, OFFSET>,
            GetNetworkType: GetNetworkType::<Identity, Impl, OFFSET>,
            PutSignalSource: PutSignalSource::<Identity, Impl, OFFSET>,
            GetSignalSource: GetSignalSource::<Identity, Impl, OFFSET>,
            PutTuningSpace: PutTuningSpace::<Identity, Impl, OFFSET>,
            GetTuningSpace: GetTuningSpace::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IBDA_SignalProperties as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IBDA_SignalStatistics {}
#[cfg(feature = "Win32_Foundation")]
impl IBDA_SignalStatistics_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalStatistics_Impl, const OFFSET: isize>() -> IBDA_SignalStatistics_Vtbl {
        unsafe extern "system" fn SetSignalStrength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalStatistics_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ldbstrength: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSignalStrength(::core::mem::transmute_copy(&ldbstrength)).into()
        }
        unsafe extern "system" fn SignalStrength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalStatistics_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pldbstrength: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SignalStrength(::core::mem::transmute_copy(&pldbstrength)).into()
        }
        unsafe extern "system" fn SetSignalQuality<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalStatistics_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpercentquality: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSignalQuality(::core::mem::transmute_copy(&lpercentquality)).into()
        }
        unsafe extern "system" fn SignalQuality<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalStatistics_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plpercentquality: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SignalQuality(::core::mem::transmute_copy(&plpercentquality)).into()
        }
        unsafe extern "system" fn SetSignalPresent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalStatistics_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fpresent: super::super::Foundation::BOOLEAN) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSignalPresent(::core::mem::transmute_copy(&fpresent)).into()
        }
        unsafe extern "system" fn SignalPresent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalStatistics_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfpresent: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SignalPresent(::core::mem::transmute_copy(&pfpresent)).into()
        }
        unsafe extern "system" fn SetSignalLocked<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalStatistics_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, flocked: super::super::Foundation::BOOLEAN) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSignalLocked(::core::mem::transmute_copy(&flocked)).into()
        }
        unsafe extern "system" fn SignalLocked<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalStatistics_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pflocked: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SignalLocked(::core::mem::transmute_copy(&pflocked)).into()
        }
        unsafe extern "system" fn SetSampleTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalStatistics_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lmssampletime: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSampleTime(::core::mem::transmute_copy(&lmssampletime)).into()
        }
        unsafe extern "system" fn SampleTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_SignalStatistics_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plmssampletime: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SampleTime(::core::mem::transmute_copy(&plmssampletime)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetSignalStrength: SetSignalStrength::<Identity, Impl, OFFSET>,
            SignalStrength: SignalStrength::<Identity, Impl, OFFSET>,
            SetSignalQuality: SetSignalQuality::<Identity, Impl, OFFSET>,
            SignalQuality: SignalQuality::<Identity, Impl, OFFSET>,
            SetSignalPresent: SetSignalPresent::<Identity, Impl, OFFSET>,
            SignalPresent: SignalPresent::<Identity, Impl, OFFSET>,
            SetSignalLocked: SetSignalLocked::<Identity, Impl, OFFSET>,
            SignalLocked: SignalLocked::<Identity, Impl, OFFSET>,
            SetSampleTime: SetSampleTime::<Identity, Impl, OFFSET>,
            SampleTime: SampleTime::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IBDA_SignalStatistics as ::windows::core::Interface>::IID
    }
}
pub trait IBDA_TIF_REGISTRATION_Impl: Sized {
    fn RegisterTIFEx(&self, ptifinputpin: &::core::option::Option<IPin>, ppvregistrationcontext: *mut u32, ppmpeg2datacontrol: *mut ::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
    fn UnregisterTIF(&self, pvregistrationcontext: u32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IBDA_TIF_REGISTRATION {}
impl IBDA_TIF_REGISTRATION_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_TIF_REGISTRATION_Impl, const OFFSET: isize>() -> IBDA_TIF_REGISTRATION_Vtbl {
        unsafe extern "system" fn RegisterTIFEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_TIF_REGISTRATION_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptifinputpin: *mut ::core::ffi::c_void, ppvregistrationcontext: *mut u32, ppmpeg2datacontrol: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterTIFEx(::core::mem::transmute(&ptifinputpin), ::core::mem::transmute_copy(&ppvregistrationcontext), ::core::mem::transmute_copy(&ppmpeg2datacontrol)).into()
        }
        unsafe extern "system" fn UnregisterTIF<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_TIF_REGISTRATION_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvregistrationcontext: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnregisterTIF(::core::mem::transmute_copy(&pvregistrationcontext)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RegisterTIFEx: RegisterTIFEx::<Identity, Impl, OFFSET>,
            UnregisterTIF: UnregisterTIF::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IBDA_TIF_REGISTRATION as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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 ::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IBDA_Topology {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl IBDA_Topology_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_Topology_Impl, const OFFSET: isize>() -> IBDA_Topology_Vtbl {
        unsafe extern "system" fn GetNodeTypes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_Topology_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcnodetypes: *mut u32, ulcnodetypesmax: u32, rgulnodetypes: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetNodeTypes(::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<Impl = Impl>, Impl: IBDA_Topology_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcnodedescriptors: *mut u32, ulcnodedescriptorsmax: u32, rgnodedescriptors: *mut BDANODE_DESCRIPTOR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetNodeDescriptors(::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<Impl = Impl>, Impl: IBDA_Topology_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulnodetype: u32, pulcinterfaces: *mut u32, ulcinterfacesmax: u32, rgguidinterfaces: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetNodeInterfaces(::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<Impl = Impl>, Impl: IBDA_Topology_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcpintypes: *mut u32, ulcpintypesmax: u32, rgulpintypes: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPinTypes(::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<Impl = Impl>, Impl: IBDA_Topology_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcconnections: *mut u32, ulcconnectionsmax: u32, rgconnections: *mut BDA_TEMPLATE_CONNECTION) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTemplateConnections(::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<Impl = Impl>, Impl: IBDA_Topology_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulpintype: u32, pulpinid: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CreatePin(::core::mem::transmute_copy(&ulpintype), ::core::mem::transmute_copy(&pulpinid)).into()
        }
        unsafe extern "system" fn DeletePin<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_Topology_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulpinid: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DeletePin(::core::mem::transmute_copy(&ulpinid)).into()
        }
        unsafe extern "system" fn SetMediaType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_Topology_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulpinid: u32, pmediatype: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMediaType(::core::mem::transmute_copy(&ulpinid), ::core::mem::transmute_copy(&pmediatype)).into()
        }
        unsafe extern "system" fn SetMedium<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_Topology_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulpinid: u32, pmedium: *const REGPINMEDIUM) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMedium(::core::mem::transmute_copy(&ulpinid), ::core::mem::transmute_copy(&pmedium)).into()
        }
        unsafe extern "system" fn CreateTopology<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_Topology_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulinputpinid: u32, uloutputpinid: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CreateTopology(::core::mem::transmute_copy(&ulinputpinid), ::core::mem::transmute_copy(&uloutputpinid)).into()
        }
        unsafe extern "system" fn GetControlNode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_Topology_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetControlNode(::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, Impl, OFFSET>,
            GetNodeDescriptors: GetNodeDescriptors::<Identity, Impl, OFFSET>,
            GetNodeInterfaces: GetNodeInterfaces::<Identity, Impl, OFFSET>,
            GetPinTypes: GetPinTypes::<Identity, Impl, OFFSET>,
            GetTemplateConnections: GetTemplateConnections::<Identity, Impl, OFFSET>,
            CreatePin: CreatePin::<Identity, Impl, OFFSET>,
            DeletePin: DeletePin::<Identity, Impl, OFFSET>,
            SetMediaType: SetMediaType::<Identity, Impl, OFFSET>,
            SetMedium: SetMedium::<Identity, Impl, OFFSET>,
            CreateTopology: CreateTopology::<Identity, Impl, OFFSET>,
            GetControlNode: GetControlNode::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_TransportStreamInfo_Impl, const OFFSET: isize>() -> IBDA_TransportStreamInfo_Vtbl {
        unsafe extern "system" fn PatTableTickCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_TransportStreamInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppattickcount: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PatTableTickCount() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppattickcount, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), PatTableTickCount: PatTableTickCount::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_TransportStreamSelector_Impl, const OFFSET: isize>() -> IBDA_TransportStreamSelector_Vtbl {
        unsafe extern "system" fn SetTSID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_TransportStreamSelector_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ustsid: u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTSID(::core::mem::transmute_copy(&ustsid)).into()
        }
        unsafe extern "system" fn GetTSInformation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_TransportStreamSelector_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pultsinformationbufferlen: *mut u32, pbtsinformationbuffer: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTSInformation(::core::mem::transmute_copy(&pultsinformationbufferlen), ::core::mem::transmute_copy(&pbtsinformationbuffer)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetTSID: SetTSID::<Identity, Impl, OFFSET>,
            GetTSInformation: GetTSInformation::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_UserActivityService_Impl, const OFFSET: isize>() -> IBDA_UserActivityService_Vtbl {
        unsafe extern "system" fn SetCurrentTunerUseReason<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_UserActivityService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwusereason: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCurrentTunerUseReason(::core::mem::transmute_copy(&dwusereason)).into()
        }
        unsafe extern "system" fn GetUserActivityInterval<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_UserActivityService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwactivityinterval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetUserActivityInterval() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwactivityinterval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn UserActivityDetected<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_UserActivityService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UserActivityDetected().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetCurrentTunerUseReason: SetCurrentTunerUseReason::<Identity, Impl, OFFSET>,
            GetUserActivityInterval: GetUserActivityInterval::<Identity, Impl, OFFSET>,
            UserActivityDetected: UserActivityDetected::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_VoidTransform_Impl, const OFFSET: isize>() -> IBDA_VoidTransform_Vtbl {
        unsafe extern "system" fn Start<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_VoidTransform_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Start().into()
        }
        unsafe extern "system" fn Stop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_VoidTransform_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Stop().into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Start: Start::<Identity, Impl, OFFSET>, Stop: Stop::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_WMDRMSession_Impl, const OFFSET: isize>() -> IBDA_WMDRMSession_Vtbl {
        unsafe extern "system" fn GetStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_WMDRMSession_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetStatus(::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<Impl = Impl>, Impl: IBDA_WMDRMSession_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulrevinfolen: u32, pbrevinfo: *const u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRevInfo(::core::mem::transmute_copy(&ulrevinfolen), ::core::mem::transmute_copy(&pbrevinfo)).into()
        }
        unsafe extern "system" fn SetCrl<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_WMDRMSession_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcrllen: u32, pbcrllen: *const u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCrl(::core::mem::transmute_copy(&ulcrllen), ::core::mem::transmute_copy(&pbcrllen)).into()
        }
        unsafe extern "system" fn TransactMessage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_WMDRMSession_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcbrequest: u32, pbrequest: *const u8, pulcbresponse: *mut u32, pbresponse: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TransactMessage(::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<Impl = Impl>, Impl: IBDA_WMDRMSession_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, uuidkey: *const ::windows::core::GUID, pulpackagelen: *mut u32, pbpackage: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLicense(::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<Impl = Impl>, Impl: IBDA_WMDRMSession_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, uuidkey: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReissueLicense(::core::mem::transmute_copy(&uuidkey)).into()
        }
        unsafe extern "system" fn RenewLicense<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_WMDRMSession_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RenewLicense(::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<Impl = Impl>, Impl: IBDA_WMDRMSession_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulkeyinfolen: *mut u32, pbkeyinfo: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetKeyInfo(::core::mem::transmute_copy(&pulkeyinfolen), ::core::mem::transmute_copy(&pbkeyinfo)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetStatus: GetStatus::<Identity, Impl, OFFSET>,
            SetRevInfo: SetRevInfo::<Identity, Impl, OFFSET>,
            SetCrl: SetCrl::<Identity, Impl, OFFSET>,
            TransactMessage: TransactMessage::<Identity, Impl, OFFSET>,
            GetLicense: GetLicense::<Identity, Impl, OFFSET>,
            ReissueLicense: ReissueLicense::<Identity, Impl, OFFSET>,
            RenewLicense: RenewLicense::<Identity, Impl, OFFSET>,
            GetKeyInfo: GetKeyInfo::<Identity, Impl, 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<Impl = Impl>, Impl: IBDA_WMDRMTuner_Impl, const OFFSET: isize>() -> IBDA_WMDRMTuner_Vtbl {
        unsafe extern "system" fn PurchaseEntitlement<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_WMDRMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, uldialogrequest: u32, bstrlanguage: ::core::mem::ManuallyDrop<::windows::core::BSTR>, ulpurchasetokenlen: u32, pbpurchasetoken: *const u8, puldescramblestatus: *mut u32, pulcapturetokenlen: *mut u32, pbcapturetoken: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PurchaseEntitlement(::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<Impl = Impl>, Impl: IBDA_WMDRMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcapturetokenlen: u32, pbcapturetoken: *const u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CancelCaptureToken(::core::mem::transmute_copy(&ulcapturetokenlen), ::core::mem::transmute_copy(&pbcapturetoken)).into()
        }
        unsafe extern "system" fn SetPidProtection<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_WMDRMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulpid: u32, uuidkey: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPidProtection(::core::mem::transmute_copy(&ulpid), ::core::mem::transmute_copy(&uuidkey)).into()
        }
        unsafe extern "system" fn GetPidProtection<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_WMDRMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulpid: u32, uuidkey: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPidProtection(::core::mem::transmute_copy(&pulpid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(uuidkey, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSyncValue<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_WMDRMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulsyncvalue: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSyncValue(::core::mem::transmute_copy(&ulsyncvalue)).into()
        }
        unsafe extern "system" fn GetStartCodeProfile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBDA_WMDRMTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulstartcodeprofilelen: *mut u32, pbstartcodeprofile: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetStartCodeProfile(::core::mem::transmute_copy(&pulstartcodeprofilelen), ::core::mem::transmute_copy(&pbstartcodeprofile)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            PurchaseEntitlement: PurchaseEntitlement::<Identity, Impl, OFFSET>,
            CancelCaptureToken: CancelCaptureToken::<Identity, Impl, OFFSET>,
            SetPidProtection: SetPidProtection::<Identity, Impl, OFFSET>,
            GetPidProtection: GetPidProtection::<Identity, Impl, OFFSET>,
            SetSyncValue: SetSyncValue::<Identity, Impl, OFFSET>,
            GetStartCodeProfile: GetStartCodeProfile::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IBDA_WMDRMTuner as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IBPCSatelliteTuner {}
#[cfg(feature = "Win32_Foundation")]
impl IBPCSatelliteTuner_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBPCSatelliteTuner_Impl, const OFFSET: isize>() -> IBPCSatelliteTuner_Vtbl {
        unsafe extern "system" fn get_DefaultSubChannelTypes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBPCSatelliteTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pldefaultvideotype: *mut i32, pldefaultaudiotype: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_DefaultSubChannelTypes(::core::mem::transmute_copy(&pldefaultvideotype), ::core::mem::transmute_copy(&pldefaultaudiotype)).into()
        }
        unsafe extern "system" fn put_DefaultSubChannelTypes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBPCSatelliteTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ldefaultvideotype: i32, ldefaultaudiotype: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_DefaultSubChannelTypes(::core::mem::transmute_copy(&ldefaultvideotype), ::core::mem::transmute_copy(&ldefaultaudiotype)).into()
        }
        unsafe extern "system" fn IsTapingPermitted<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBPCSatelliteTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsTapingPermitted().into()
        }
        Self {
            base__: IAMTuner_Vtbl::new::<Identity, Impl, OFFSET>(),
            get_DefaultSubChannelTypes: get_DefaultSubChannelTypes::<Identity, Impl, OFFSET>,
            put_DefaultSubChannelTypes: put_DefaultSubChannelTypes::<Identity, Impl, OFFSET>,
            IsTapingPermitted: IsTapingPermitted::<Identity, Impl, 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) -> ::windows::core::Result<FILTER_INFO>;
    fn JoinFilterGraph(&self, pgraph: &::core::option::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<Impl = Impl>, Impl: IBaseFilter_Impl, const OFFSET: isize>() -> IBaseFilter_Vtbl {
        unsafe extern "system" fn EnumPins<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBaseFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumPins() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FindPin<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBaseFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, id: ::windows::core::PCWSTR, pppin: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FindPin(::core::mem::transmute(&id)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pppin, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryFilterInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBaseFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pinfo: *mut ::core::mem::ManuallyDrop<FILTER_INFO>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.QueryFilterInfo() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pinfo, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn JoinFilterGraph<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBaseFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pgraph: *mut ::core::ffi::c_void, pname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.JoinFilterGraph(::core::mem::transmute(&pgraph), ::core::mem::transmute(&pname)).into()
        }
        unsafe extern "system" fn QueryVendorInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBaseFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvendorinfo: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.QueryVendorInfo() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvendorinfo, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMediaFilter_Vtbl::new::<Identity, Impl, OFFSET>(),
            EnumPins: EnumPins::<Identity, Impl, OFFSET>,
            FindPin: FindPin::<Identity, Impl, OFFSET>,
            QueryFilterInfo: QueryFilterInfo::<Identity, Impl, OFFSET>,
            JoinFilterGraph: JoinFilterGraph::<Identity, Impl, OFFSET>,
            QueryVendorInfo: QueryVendorInfo::<Identity, Impl, 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<Impl = Impl>, Impl: IBaseVideoMixer_Impl, const OFFSET: isize>() -> IBaseVideoMixer_Vtbl {
        unsafe extern "system" fn SetLeadPin<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBaseVideoMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ipin: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLeadPin(::core::mem::transmute_copy(&ipin)).into()
        }
        unsafe extern "system" fn GetLeadPin<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBaseVideoMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pipin: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLeadPin() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pipin, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetInputPinCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBaseVideoMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pipincount: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetInputPinCount() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pipincount, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsUsingClock<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBaseVideoMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbvalue: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IsUsingClock() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetUsingClock<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBaseVideoMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bvalue: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetUsingClock(::core::mem::transmute_copy(&bvalue)).into()
        }
        unsafe extern "system" fn GetClockPeriod<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBaseVideoMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbvalue: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetClockPeriod() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetClockPeriod<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBaseVideoMixer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bvalue: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetClockPeriod(::core::mem::transmute_copy(&bvalue)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetLeadPin: SetLeadPin::<Identity, Impl, OFFSET>,
            GetLeadPin: GetLeadPin::<Identity, Impl, OFFSET>,
            GetInputPinCount: GetInputPinCount::<Identity, Impl, OFFSET>,
            IsUsingClock: IsUsingClock::<Identity, Impl, OFFSET>,
            SetUsingClock: SetUsingClock::<Identity, Impl, OFFSET>,
            GetClockPeriod: GetClockPeriod::<Identity, Impl, OFFSET>,
            SetClockPeriod: SetClockPeriod::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IBaseVideoMixer as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IBasicAudio {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IBasicAudio_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicAudio_Impl, const OFFSET: isize>() -> IBasicAudio_Vtbl {
        unsafe extern "system" fn SetVolume<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicAudio_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lvolume: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVolume(::core::mem::transmute_copy(&lvolume)).into()
        }
        unsafe extern "system" fn Volume<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicAudio_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plvolume: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Volume() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plvolume, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBalance<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicAudio_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lbalance: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBalance(::core::mem::transmute_copy(&lbalance)).into()
        }
        unsafe extern "system" fn Balance<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicAudio_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plbalance: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Balance() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plbalance, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetVolume: SetVolume::<Identity, Impl, OFFSET>,
            Volume: Volume::<Identity, Impl, OFFSET>,
            SetBalance: SetBalance::<Identity, Impl, OFFSET>,
            Balance: Balance::<Identity, Impl, 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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IBasicVideo {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IBasicVideo_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>() -> IBasicVideo_Vtbl {
        unsafe extern "system" fn AvgTimePerFrame<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pavgtimeperframe: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AvgTimePerFrame() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pavgtimeperframe, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn BitRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbitrate: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.BitRate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbitrate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn BitErrorRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbiterrorrate: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.BitErrorRate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbiterrorrate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VideoWidth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvideowidth: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VideoWidth() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvideowidth, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VideoHeight<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvideoheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VideoHeight() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvideoheight, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourceLeft<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sourceleft: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSourceLeft(::core::mem::transmute_copy(&sourceleft)).into()
        }
        unsafe extern "system" fn SourceLeft<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psourceleft: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SourceLeft() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(psourceleft, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourceWidth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sourcewidth: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSourceWidth(::core::mem::transmute_copy(&sourcewidth)).into()
        }
        unsafe extern "system" fn SourceWidth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psourcewidth: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SourceWidth() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(psourcewidth, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourceTop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sourcetop: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSourceTop(::core::mem::transmute_copy(&sourcetop)).into()
        }
        unsafe extern "system" fn SourceTop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psourcetop: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SourceTop() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(psourcetop, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourceHeight<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sourceheight: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSourceHeight(::core::mem::transmute_copy(&sourceheight)).into()
        }
        unsafe extern "system" fn SourceHeight<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psourceheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SourceHeight() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(psourceheight, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDestinationLeft<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, destinationleft: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDestinationLeft(::core::mem::transmute_copy(&destinationleft)).into()
        }
        unsafe extern "system" fn DestinationLeft<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdestinationleft: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DestinationLeft() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdestinationleft, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDestinationWidth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, destinationwidth: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDestinationWidth(::core::mem::transmute_copy(&destinationwidth)).into()
        }
        unsafe extern "system" fn DestinationWidth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdestinationwidth: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DestinationWidth() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdestinationwidth, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDestinationTop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, destinationtop: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDestinationTop(::core::mem::transmute_copy(&destinationtop)).into()
        }
        unsafe extern "system" fn DestinationTop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdestinationtop: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DestinationTop() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdestinationtop, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDestinationHeight<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, destinationheight: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDestinationHeight(::core::mem::transmute_copy(&destinationheight)).into()
        }
        unsafe extern "system" fn DestinationHeight<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdestinationheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DestinationHeight() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdestinationheight, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourcePosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, left: i32, top: i32, width: i32, height: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSourcePosition(::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<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pleft: *mut i32, ptop: *mut i32, pwidth: *mut i32, pheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetSourcePosition(::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<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDefaultSourcePosition().into()
        }
        unsafe extern "system" fn SetDestinationPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, left: i32, top: i32, width: i32, height: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDestinationPosition(::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<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pleft: *mut i32, ptop: *mut i32, pwidth: *mut i32, pheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDestinationPosition(::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<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDefaultDestinationPosition().into()
        }
        unsafe extern "system" fn GetVideoSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwidth: *mut i32, pheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetVideoSize(::core::mem::transmute_copy(&pwidth), ::core::mem::transmute_copy(&pheight)).into()
        }
        unsafe extern "system" fn GetVideoPaletteEntries<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, startindex: i32, entries: i32, pretrieved: *mut i32, ppalette: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetVideoPaletteEntries(::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<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbuffersize: *mut i32, pdibimage: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentImage(::core::mem::transmute_copy(&pbuffersize), ::core::mem::transmute_copy(&pdibimage)).into()
        }
        unsafe extern "system" fn IsUsingDefaultSource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsUsingDefaultSource().into()
        }
        unsafe extern "system" fn IsUsingDefaultDestination<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsUsingDefaultDestination().into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            AvgTimePerFrame: AvgTimePerFrame::<Identity, Impl, OFFSET>,
            BitRate: BitRate::<Identity, Impl, OFFSET>,
            BitErrorRate: BitErrorRate::<Identity, Impl, OFFSET>,
            VideoWidth: VideoWidth::<Identity, Impl, OFFSET>,
            VideoHeight: VideoHeight::<Identity, Impl, OFFSET>,
            SetSourceLeft: SetSourceLeft::<Identity, Impl, OFFSET>,
            SourceLeft: SourceLeft::<Identity, Impl, OFFSET>,
            SetSourceWidth: SetSourceWidth::<Identity, Impl, OFFSET>,
            SourceWidth: SourceWidth::<Identity, Impl, OFFSET>,
            SetSourceTop: SetSourceTop::<Identity, Impl, OFFSET>,
            SourceTop: SourceTop::<Identity, Impl, OFFSET>,
            SetSourceHeight: SetSourceHeight::<Identity, Impl, OFFSET>,
            SourceHeight: SourceHeight::<Identity, Impl, OFFSET>,
            SetDestinationLeft: SetDestinationLeft::<Identity, Impl, OFFSET>,
            DestinationLeft: DestinationLeft::<Identity, Impl, OFFSET>,
            SetDestinationWidth: SetDestinationWidth::<Identity, Impl, OFFSET>,
            DestinationWidth: DestinationWidth::<Identity, Impl, OFFSET>,
            SetDestinationTop: SetDestinationTop::<Identity, Impl, OFFSET>,
            DestinationTop: DestinationTop::<Identity, Impl, OFFSET>,
            SetDestinationHeight: SetDestinationHeight::<Identity, Impl, OFFSET>,
            DestinationHeight: DestinationHeight::<Identity, Impl, OFFSET>,
            SetSourcePosition: SetSourcePosition::<Identity, Impl, OFFSET>,
            GetSourcePosition: GetSourcePosition::<Identity, Impl, OFFSET>,
            SetDefaultSourcePosition: SetDefaultSourcePosition::<Identity, Impl, OFFSET>,
            SetDestinationPosition: SetDestinationPosition::<Identity, Impl, OFFSET>,
            GetDestinationPosition: GetDestinationPosition::<Identity, Impl, OFFSET>,
            SetDefaultDestinationPosition: SetDefaultDestinationPosition::<Identity, Impl, OFFSET>,
            GetVideoSize: GetVideoSize::<Identity, Impl, OFFSET>,
            GetVideoPaletteEntries: GetVideoPaletteEntries::<Identity, Impl, OFFSET>,
            GetCurrentImage: GetCurrentImage::<Identity, Impl, OFFSET>,
            IsUsingDefaultSource: IsUsingDefaultSource::<Identity, Impl, OFFSET>,
            IsUsingDefaultDestination: IsUsingDefaultDestination::<Identity, Impl, 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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IBasicVideo2_Impl: Sized + IBasicVideo_Impl {
    fn GetPreferredAspectRatio(&self, plaspectx: *mut i32, plaspecty: *mut i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IBasicVideo2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IBasicVideo2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo2_Impl, const OFFSET: isize>() -> IBasicVideo2_Vtbl {
        unsafe extern "system" fn GetPreferredAspectRatio<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBasicVideo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plaspectx: *mut i32, plaspecty: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPreferredAspectRatio(::core::mem::transmute_copy(&plaspectx), ::core::mem::transmute_copy(&plaspecty)).into()
        }
        Self { base__: IBasicVideo_Vtbl::new::<Identity, Impl, OFFSET>(), GetPreferredAspectRatio: GetPreferredAspectRatio::<Identity, Impl, 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<Impl = Impl>, Impl: IBroadcastEvent_Impl, const OFFSET: isize>() -> IBroadcastEvent_Vtbl {
        unsafe extern "system" fn Fire<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBroadcastEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, eventid: ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Fire(::core::mem::transmute(&eventid)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Fire: Fire::<Identity, Impl, 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<Impl = Impl>, Impl: IBroadcastEventEx_Impl, const OFFSET: isize>() -> IBroadcastEventEx_Vtbl {
        unsafe extern "system" fn FireEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBroadcastEventEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, eventid: ::windows::core::GUID, param1: u32, param2: u32, param3: u32, param4: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.FireEx(::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, Impl, OFFSET>(), FireEx: FireEx::<Identity, Impl, 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<Impl = Impl>, Impl: IBufferingTime_Impl, const OFFSET: isize>() -> IBufferingTime_Vtbl {
        unsafe extern "system" fn GetBufferingTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBufferingTime_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwmilliseconds: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetBufferingTime(::core::mem::transmute_copy(&pdwmilliseconds)).into()
        }
        unsafe extern "system" fn SetBufferingTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IBufferingTime_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwmilliseconds: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBufferingTime(::core::mem::transmute_copy(&dwmilliseconds)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetBufferingTime: GetBufferingTime::<Identity, Impl, OFFSET>,
            SetBufferingTime: SetBufferingTime::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IBufferingTime as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait ICAT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfTableDescriptors(&self) -> ::windows::core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn GetNextTable(&self, dwtimeout: u32) -> ::windows::core::Result<ICAT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn ConvertNextToCurrent(&self) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for ICAT {}
#[cfg(feature = "Win32_Foundation")]
impl ICAT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICAT_Impl, const OFFSET: isize>() -> ICAT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfTableDescriptors() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableDescriptorByIndex(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptorByTag(::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForNextTable(::core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwtimeout: u32, ppcat: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNextTable(::core::mem::transmute_copy(&dwtimeout)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcat, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForWhenCurrent(::core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConvertNextToCurrent().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, Impl, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, Impl, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, Impl, OFFSET>,
            GetNextTable: GetNextTable::<Identity, Impl, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, Impl, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ICAT 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<Impl = Impl>, Impl: ICCSubStreamFiltering_Impl, const OFFSET: isize>() -> ICCSubStreamFiltering_Vtbl {
        unsafe extern "system" fn SubstreamTypes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICCSubStreamFiltering_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptypes: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SubstreamTypes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ptypes, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSubstreamTypes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICCSubStreamFiltering_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, types: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSubstreamTypes(::core::mem::transmute_copy(&types)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SubstreamTypes: SubstreamTypes::<Identity, Impl, OFFSET>,
            SetSubstreamTypes: SetSubstreamTypes::<Identity, Impl, 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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>() -> ICameraControl_Vtbl {
        unsafe extern "system" fn get_Exposure<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Exposure(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Exposure<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Exposure(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Exposure<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_Exposure(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Focus(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Focus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Focus(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Focus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_Focus(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Iris(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Iris<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Iris(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Iris<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_Iris(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Zoom(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Zoom<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Zoom(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Zoom<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_Zoom(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plocularfocallength: *mut i32, plobjectivefocallengthmin: *mut i32, plobjectivefocallengthmax: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_FocalLengths(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Pan(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Pan<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Pan(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Pan<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_Pan(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Tilt(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Tilt<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Tilt(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Tilt<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_Tilt(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppanvalue: *mut i32, ptiltvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_PanTilt(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, panvalue: i32, tiltvalue: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_PanTilt(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Roll(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Roll<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Roll(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Roll<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_Roll(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_ExposureRelative(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_ExposureRelative<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_ExposureRelative(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_ExposureRelative<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_ExposureRelative(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_FocusRelative(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_FocusRelative<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_FocusRelative(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_FocusRelative<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_FocusRelative(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_IrisRelative(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_IrisRelative<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_IrisRelative(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_IrisRelative<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_IrisRelative(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_ZoomRelative(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_ZoomRelative<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_ZoomRelative(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_ZoomRelative<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_ZoomRelative(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_PanRelative(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_PanRelative<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_PanRelative(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn get_TiltRelative<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_TiltRelative(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_TiltRelative<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_TiltRelative(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_TiltRelative<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_TiltRelative(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppanvalue: *mut i32, ptiltvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_PanTiltRelative(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, panvalue: i32, tiltvalue: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_PanTiltRelative(::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<Impl = Impl>, Impl: ICameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_PanRelative(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_RollRelative(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_RollRelative<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_RollRelative(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_RollRelative<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_RollRelative(::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<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_ScanMode(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_ScanMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_ScanMode(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn get_PrivacyMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_PrivacyMode(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_PrivacyMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICameraControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_PrivacyMode(::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, Impl, OFFSET>,
            put_Exposure: put_Exposure::<Identity, Impl, OFFSET>,
            getRange_Exposure: getRange_Exposure::<Identity, Impl, OFFSET>,
            get_Focus: get_Focus::<Identity, Impl, OFFSET>,
            put_Focus: put_Focus::<Identity, Impl, OFFSET>,
            getRange_Focus: getRange_Focus::<Identity, Impl, OFFSET>,
            get_Iris: get_Iris::<Identity, Impl, OFFSET>,
            put_Iris: put_Iris::<Identity, Impl, OFFSET>,
            getRange_Iris: getRange_Iris::<Identity, Impl, OFFSET>,
            get_Zoom: get_Zoom::<Identity, Impl, OFFSET>,
            put_Zoom: put_Zoom::<Identity, Impl, OFFSET>,
            getRange_Zoom: getRange_Zoom::<Identity, Impl, OFFSET>,
            get_FocalLengths: get_FocalLengths::<Identity, Impl, OFFSET>,
            get_Pan: get_Pan::<Identity, Impl, OFFSET>,
            put_Pan: put_Pan::<Identity, Impl, OFFSET>,
            getRange_Pan: getRange_Pan::<Identity, Impl, OFFSET>,
            get_Tilt: get_Tilt::<Identity, Impl, OFFSET>,
            put_Tilt: put_Tilt::<Identity, Impl, OFFSET>,
            getRange_Tilt: getRange_Tilt::<Identity, Impl, OFFSET>,
            get_PanTilt: get_PanTilt::<Identity, Impl, OFFSET>,
            put_PanTilt: put_PanTilt::<Identity, Impl, OFFSET>,
            get_Roll: get_Roll::<Identity, Impl, OFFSET>,
            put_Roll: put_Roll::<Identity, Impl, OFFSET>,
            getRange_Roll: getRange_Roll::<Identity, Impl, OFFSET>,
            get_ExposureRelative: get_ExposureRelative::<Identity, Impl, OFFSET>,
            put_ExposureRelative: put_ExposureRelative::<Identity, Impl, OFFSET>,
            getRange_ExposureRelative: getRange_ExposureRelative::<Identity, Impl, OFFSET>,
            get_FocusRelative: get_FocusRelative::<Identity, Impl, OFFSET>,
            put_FocusRelative: put_FocusRelative::<Identity, Impl, OFFSET>,
            getRange_FocusRelative: getRange_FocusRelative::<Identity, Impl, OFFSET>,
            get_IrisRelative: get_IrisRelative::<Identity, Impl, OFFSET>,
            put_IrisRelative: put_IrisRelative::<Identity, Impl, OFFSET>,
            getRange_IrisRelative: getRange_IrisRelative::<Identity, Impl, OFFSET>,
            get_ZoomRelative: get_ZoomRelative::<Identity, Impl, OFFSET>,
            put_ZoomRelative: put_ZoomRelative::<Identity, Impl, OFFSET>,
            getRange_ZoomRelative: getRange_ZoomRelative::<Identity, Impl, OFFSET>,
            get_PanRelative: get_PanRelative::<Identity, Impl, OFFSET>,
            put_PanRelative: put_PanRelative::<Identity, Impl, OFFSET>,
            get_TiltRelative: get_TiltRelative::<Identity, Impl, OFFSET>,
            put_TiltRelative: put_TiltRelative::<Identity, Impl, OFFSET>,
            getRange_TiltRelative: getRange_TiltRelative::<Identity, Impl, OFFSET>,
            get_PanTiltRelative: get_PanTiltRelative::<Identity, Impl, OFFSET>,
            put_PanTiltRelative: put_PanTiltRelative::<Identity, Impl, OFFSET>,
            getRange_PanRelative: getRange_PanRelative::<Identity, Impl, OFFSET>,
            get_RollRelative: get_RollRelative::<Identity, Impl, OFFSET>,
            put_RollRelative: put_RollRelative::<Identity, Impl, OFFSET>,
            getRange_RollRelative: getRange_RollRelative::<Identity, Impl, OFFSET>,
            get_ScanMode: get_ScanMode::<Identity, Impl, OFFSET>,
            put_ScanMode: put_ScanMode::<Identity, Impl, OFFSET>,
            get_PrivacyMode: get_PrivacyMode::<Identity, Impl, OFFSET>,
            put_PrivacyMode: put_PrivacyMode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ICameraControl as ::windows::core::Interface>::IID
    }
}
pub trait ICaptionServiceDescriptor_Impl: Sized {
    fn GetNumberOfServices(&self) -> ::windows::core::Result<u8>;
    fn GetLanguageCode(&self, bindex: u8, langcode: *mut u8) -> ::windows::core::Result<()>;
    fn GetCaptionServiceNumber(&self, bindex: u8) -> ::windows::core::Result<u8>;
    fn GetCCType(&self, bindex: u8) -> ::windows::core::Result<u8>;
    fn GetEasyReader(&self, bindex: u8) -> ::windows::core::Result<u8>;
    fn GetWideAspectRatio(&self, bindex: u8) -> ::windows::core::Result<u8>;
}
impl ::windows::core::RuntimeName for ICaptionServiceDescriptor {}
impl ICaptionServiceDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptionServiceDescriptor_Impl, const OFFSET: isize>() -> ICaptionServiceDescriptor_Vtbl {
        unsafe extern "system" fn GetNumberOfServices<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptionServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNumberOfServices() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLanguageCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptionServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindex: u8, langcode: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLanguageCode(::core::mem::transmute_copy(&bindex), ::core::mem::transmute_copy(&langcode)).into()
        }
        unsafe extern "system" fn GetCaptionServiceNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptionServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCaptionServiceNumber(::core::mem::transmute_copy(&bindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCCType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptionServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCCType(::core::mem::transmute_copy(&bindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEasyReader<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptionServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEasyReader(::core::mem::transmute_copy(&bindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetWideAspectRatio<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptionServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetWideAspectRatio(::core::mem::transmute_copy(&bindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNumberOfServices: GetNumberOfServices::<Identity, Impl, OFFSET>,
            GetLanguageCode: GetLanguageCode::<Identity, Impl, OFFSET>,
            GetCaptionServiceNumber: GetCaptionServiceNumber::<Identity, Impl, OFFSET>,
            GetCCType: GetCCType::<Identity, Impl, OFFSET>,
            GetEasyReader: GetEasyReader::<Identity, Impl, OFFSET>,
            GetWideAspectRatio: GetWideAspectRatio::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ICaptionServiceDescriptor as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ICaptureGraphBuilder_Impl: Sized {
    fn SetFiltergraph(&self, pfg: &::core::option::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 ::core::option::Option<IBaseFilter>, ppsink: *mut ::core::option::Option<IFileSinkFilter>) -> ::windows::core::Result<()>;
    fn FindInterface(&self, pcategory: *const ::windows::core::GUID, pf: &::core::option::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: &::core::option::Option<::windows::core::IUnknown>, pfcompressor: &::core::option::Option<IBaseFilter>, pfrenderer: &::core::option::Option<IBaseFilter>) -> ::windows::core::Result<()>;
    fn ControlStream(&self, pcategory: *const ::windows::core::GUID, pfilter: &::core::option::Option<IBaseFilter>, pstart: *mut i64, pstop: *mut 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: &::core::option::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<Impl = Impl>, Impl: ICaptureGraphBuilder_Impl, const OFFSET: isize>() -> ICaptureGraphBuilder_Vtbl {
        unsafe extern "system" fn SetFiltergraph<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptureGraphBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfg: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFiltergraph(::core::mem::transmute(&pfg)).into()
        }
        unsafe extern "system" fn GetFiltergraph<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptureGraphBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppfg: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFiltergraph() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppfg, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputFileName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptureGraphBuilder_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOutputFileName(::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<Impl = Impl>, Impl: ICaptureGraphBuilder_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.FindInterface(::core::mem::transmute_copy(&pcategory), ::core::mem::transmute(&pf), ::core::mem::transmute_copy(&riid), ::core::mem::transmute_copy(&ppint)).into()
        }
        unsafe extern "system" fn RenderStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptureGraphBuilder_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RenderStream(::core::mem::transmute_copy(&pcategory), ::core::mem::transmute(&psource), ::core::mem::transmute(&pfcompressor), ::core::mem::transmute(&pfrenderer)).into()
        }
        unsafe extern "system" fn ControlStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptureGraphBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcategory: *const ::windows::core::GUID, pfilter: *mut ::core::ffi::c_void, pstart: *mut i64, pstop: *mut i64, wstartcookie: u16, wstopcookie: u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ControlStream(::core::mem::transmute_copy(&pcategory), ::core::mem::transmute(&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<Impl = Impl>, Impl: ICaptureGraphBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpstr: ::windows::core::PCWSTR, dwlsize: u64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AllocCapFile(::core::mem::transmute(&lpstr), ::core::mem::transmute_copy(&dwlsize)).into()
        }
        unsafe extern "system" fn CopyCaptureFile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptureGraphBuilder_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CopyCaptureFile(::core::mem::transmute(&lpwstrold), ::core::mem::transmute(&lpwstrnew), ::core::mem::transmute_copy(&fallowescabort), ::core::mem::transmute(&pcallback)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFiltergraph: SetFiltergraph::<Identity, Impl, OFFSET>,
            GetFiltergraph: GetFiltergraph::<Identity, Impl, OFFSET>,
            SetOutputFileName: SetOutputFileName::<Identity, Impl, OFFSET>,
            FindInterface: FindInterface::<Identity, Impl, OFFSET>,
            RenderStream: RenderStream::<Identity, Impl, OFFSET>,
            ControlStream: ControlStream::<Identity, Impl, OFFSET>,
            AllocCapFile: AllocCapFile::<Identity, Impl, OFFSET>,
            CopyCaptureFile: CopyCaptureFile::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ICaptureGraphBuilder as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
pub trait ICaptureGraphBuilder2_Impl: Sized {
    fn SetFiltergraph(&self, pfg: &::core::option::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 ::core::option::Option<IBaseFilter>, ppsink: *mut ::core::option::Option<IFileSinkFilter>) -> ::windows::core::Result<()>;
    fn FindInterface(&self, pcategory: *const ::windows::core::GUID, ptype: *const ::windows::core::GUID, pf: &::core::option::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: &::core::option::Option<::windows::core::IUnknown>, pfcompressor: &::core::option::Option<IBaseFilter>, pfrenderer: &::core::option::Option<IBaseFilter>) -> ::windows::core::Result<()>;
    fn ControlStream(&self, pcategory: *const ::windows::core::GUID, ptype: *const ::windows::core::GUID, pfilter: &::core::option::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: &::core::option::Option<IAMCopyCaptureFileProgress>) -> ::windows::core::Result<()>;
    fn FindPin(&self, psource: &::core::option::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(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
impl ::windows::core::RuntimeName for ICaptureGraphBuilder2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
impl ICaptureGraphBuilder2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptureGraphBuilder2_Impl, const OFFSET: isize>() -> ICaptureGraphBuilder2_Vtbl {
        unsafe extern "system" fn SetFiltergraph<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptureGraphBuilder2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfg: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFiltergraph(::core::mem::transmute(&pfg)).into()
        }
        unsafe extern "system" fn GetFiltergraph<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptureGraphBuilder2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppfg: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFiltergraph() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppfg, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputFileName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptureGraphBuilder2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOutputFileName(::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<Impl = Impl>, Impl: ICaptureGraphBuilder2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.FindInterface(::core::mem::transmute_copy(&pcategory), ::core::mem::transmute_copy(&ptype), ::core::mem::transmute(&pf), ::core::mem::transmute_copy(&riid), ::core::mem::transmute_copy(&ppint)).into()
        }
        unsafe extern "system" fn RenderStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptureGraphBuilder2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RenderStream(::core::mem::transmute_copy(&pcategory), ::core::mem::transmute_copy(&ptype), ::core::mem::transmute(&psource), ::core::mem::transmute(&pfcompressor), ::core::mem::transmute(&pfrenderer)).into()
        }
        unsafe extern "system" fn ControlStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptureGraphBuilder2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ControlStream(::core::mem::transmute_copy(&pcategory), ::core::mem::transmute_copy(&ptype), ::core::mem::transmute(&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<Impl = Impl>, Impl: ICaptureGraphBuilder2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpstr: ::windows::core::PCWSTR, dwlsize: u64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AllocCapFile(::core::mem::transmute(&lpstr), ::core::mem::transmute_copy(&dwlsize)).into()
        }
        unsafe extern "system" fn CopyCaptureFile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptureGraphBuilder2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CopyCaptureFile(::core::mem::transmute(&lpwstrold), ::core::mem::transmute(&lpwstrnew), ::core::mem::transmute_copy(&fallowescabort), ::core::mem::transmute(&pcallback)).into()
        }
        unsafe extern "system" fn FindPin<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICaptureGraphBuilder2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FindPin(::core::mem::transmute(&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)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pppin, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFiltergraph: SetFiltergraph::<Identity, Impl, OFFSET>,
            GetFiltergraph: GetFiltergraph::<Identity, Impl, OFFSET>,
            SetOutputFileName: SetOutputFileName::<Identity, Impl, OFFSET>,
            FindInterface: FindInterface::<Identity, Impl, OFFSET>,
            RenderStream: RenderStream::<Identity, Impl, OFFSET>,
            ControlStream: ControlStream::<Identity, Impl, OFFSET>,
            AllocCapFile: AllocCapFile::<Identity, Impl, OFFSET>,
            CopyCaptureFile: CopyCaptureFile::<Identity, Impl, OFFSET>,
            FindPin: FindPin::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ICaptureGraphBuilder2 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IChannelIDTuneRequest_Impl: Sized + ITuneRequest_Impl {
    fn ChannelID(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn SetChannelID(&self, channelid: &::windows::core::BSTR) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IChannelIDTuneRequest {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IChannelIDTuneRequest_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IChannelIDTuneRequest_Impl, const OFFSET: isize>() -> IChannelIDTuneRequest_Vtbl {
        unsafe extern "system" fn ChannelID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IChannelIDTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, channelid: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ChannelID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(channelid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetChannelID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IChannelIDTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, channelid: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetChannelID(::core::mem::transmute(&channelid)).into()
        }
        Self {
            base__: ITuneRequest_Vtbl::new::<Identity, Impl, OFFSET>(),
            ChannelID: ChannelID::<Identity, Impl, OFFSET>,
            SetChannelID: SetChannelID::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IChannelIDTuneRequest as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuneRequest as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IChannelTuneRequest_Impl: Sized + ITuneRequest_Impl {
    fn Channel(&self) -> ::windows::core::Result<i32>;
    fn SetChannel(&self, channel: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IChannelTuneRequest {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IChannelTuneRequest_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IChannelTuneRequest_Impl, const OFFSET: isize>() -> IChannelTuneRequest_Vtbl {
        unsafe extern "system" fn Channel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IChannelTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, channel: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Channel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(channel, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IChannelTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, channel: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetChannel(::core::mem::transmute_copy(&channel)).into()
        }
        Self {
            base__: ITuneRequest_Vtbl::new::<Identity, Impl, OFFSET>(),
            Channel: Channel::<Identity, Impl, OFFSET>,
            SetChannel: SetChannel::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IChannelTuneRequest as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuneRequest as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IComponent_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Type(&self) -> ::windows::core::Result<IComponentType>;
    fn SetType(&self, ct: &::core::option::Option<IComponentType>) -> ::windows::core::Result<()>;
    fn DescLangID(&self) -> ::windows::core::Result<i32>;
    fn SetDescLangID(&self, langid: i32) -> ::windows::core::Result<()>;
    fn Status(&self) -> ::windows::core::Result<ComponentStatus>;
    fn SetStatus(&self, status: ComponentStatus) -> ::windows::core::Result<()>;
    fn Description(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn SetDescription(&self, description: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<IComponent>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IComponent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IComponent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponent_Impl, const OFFSET: isize>() -> IComponent_Vtbl {
        unsafe extern "system" fn Type<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ct: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Type() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ct, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ct: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetType(::core::mem::transmute(&ct)).into()
        }
        unsafe extern "system" fn DescLangID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, langid: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DescLangID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(langid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDescLangID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, langid: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDescLangID(::core::mem::transmute_copy(&langid)).into()
        }
        unsafe extern "system" fn Status<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, status: *mut ComponentStatus) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Status() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(status, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, status: ComponentStatus) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStatus(::core::mem::transmute_copy(&status)).into()
        }
        unsafe extern "system" fn Description<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, description: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Description() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(description, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDescription<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, description: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDescription(::core::mem::transmute(&description)).into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newcomponent: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newcomponent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Type: Type::<Identity, Impl, OFFSET>,
            SetType: SetType::<Identity, Impl, OFFSET>,
            DescLangID: DescLangID::<Identity, Impl, OFFSET>,
            SetDescLangID: SetDescLangID::<Identity, Impl, OFFSET>,
            Status: Status::<Identity, Impl, OFFSET>,
            SetStatus: SetStatus::<Identity, Impl, OFFSET>,
            Description: Description::<Identity, Impl, OFFSET>,
            SetDescription: SetDescription::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IComponent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IComponentType_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Category(&self) -> ::windows::core::Result<ComponentCategory>;
    fn SetCategory(&self, category: ComponentCategory) -> ::windows::core::Result<()>;
    fn MediaMajorType(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn SetMediaMajorType(&self, mediamajortype: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn _MediaMajorType(&self) -> ::windows::core::Result<::windows::core::GUID>;
    fn Set_MediaMajorType(&self, mediamajortypeguid: *const ::windows::core::GUID) -> ::windows::core::Result<()>;
    fn MediaSubType(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn SetMediaSubType(&self, mediasubtype: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn _MediaSubType(&self) -> ::windows::core::Result<::windows::core::GUID>;
    fn Set_MediaSubType(&self, mediasubtypeguid: *const ::windows::core::GUID) -> ::windows::core::Result<()>;
    fn MediaFormatType(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn SetMediaFormatType(&self, mediaformattype: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn _MediaFormatType(&self) -> ::windows::core::Result<::windows::core::GUID>;
    fn Set_MediaFormatType(&self, mediaformattypeguid: *const ::windows::core::GUID) -> ::windows::core::Result<()>;
    fn MediaType(&self) -> ::windows::core::Result<super::MediaFoundation::AM_MEDIA_TYPE>;
    fn SetMediaType(&self, mediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<IComponentType>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IComponentType {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IComponentType_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>() -> IComponentType_Vtbl {
        unsafe extern "system" fn Category<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, category: *mut ComponentCategory) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Category() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(category, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCategory<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, category: ComponentCategory) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCategory(::core::mem::transmute_copy(&category)).into()
        }
        unsafe extern "system" fn MediaMajorType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediamajortype: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MediaMajorType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(mediamajortype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMediaMajorType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediamajortype: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMediaMajorType(::core::mem::transmute(&mediamajortype)).into()
        }
        unsafe extern "system" fn _MediaMajorType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediamajortypeguid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._MediaMajorType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(mediamajortypeguid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_MediaMajorType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediamajortypeguid: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set_MediaMajorType(::core::mem::transmute_copy(&mediamajortypeguid)).into()
        }
        unsafe extern "system" fn MediaSubType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediasubtype: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MediaSubType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(mediasubtype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMediaSubType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediasubtype: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMediaSubType(::core::mem::transmute(&mediasubtype)).into()
        }
        unsafe extern "system" fn _MediaSubType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediasubtypeguid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._MediaSubType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(mediasubtypeguid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_MediaSubType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediasubtypeguid: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set_MediaSubType(::core::mem::transmute_copy(&mediasubtypeguid)).into()
        }
        unsafe extern "system" fn MediaFormatType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediaformattype: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MediaFormatType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(mediaformattype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMediaFormatType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediaformattype: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMediaFormatType(::core::mem::transmute(&mediaformattype)).into()
        }
        unsafe extern "system" fn _MediaFormatType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediaformattypeguid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._MediaFormatType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(mediaformattypeguid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_MediaFormatType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediaformattypeguid: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set_MediaFormatType(::core::mem::transmute_copy(&mediaformattypeguid)).into()
        }
        unsafe extern "system" fn MediaType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediatype: *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MediaType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(mediatype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMediaType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediatype: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMediaType(::core::mem::transmute_copy(&mediatype)).into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newct: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newct, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Category: Category::<Identity, Impl, OFFSET>,
            SetCategory: SetCategory::<Identity, Impl, OFFSET>,
            MediaMajorType: MediaMajorType::<Identity, Impl, OFFSET>,
            SetMediaMajorType: SetMediaMajorType::<Identity, Impl, OFFSET>,
            _MediaMajorType: _MediaMajorType::<Identity, Impl, OFFSET>,
            Set_MediaMajorType: Set_MediaMajorType::<Identity, Impl, OFFSET>,
            MediaSubType: MediaSubType::<Identity, Impl, OFFSET>,
            SetMediaSubType: SetMediaSubType::<Identity, Impl, OFFSET>,
            _MediaSubType: _MediaSubType::<Identity, Impl, OFFSET>,
            Set_MediaSubType: Set_MediaSubType::<Identity, Impl, OFFSET>,
            MediaFormatType: MediaFormatType::<Identity, Impl, OFFSET>,
            SetMediaFormatType: SetMediaFormatType::<Identity, Impl, OFFSET>,
            _MediaFormatType: _MediaFormatType::<Identity, Impl, OFFSET>,
            Set_MediaFormatType: Set_MediaFormatType::<Identity, Impl, OFFSET>,
            MediaType: MediaType::<Identity, Impl, OFFSET>,
            SetMediaType: SetMediaType::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IComponentType as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IComponentTypes_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> ::windows::core::Result<i32>;
    fn _NewEnum(&self) -> ::windows::core::Result<super::super::System::Ole::IEnumVARIANT>;
    fn EnumComponentTypes(&self) -> ::windows::core::Result<IEnumComponentTypes>;
    fn get_Item(&self, index: &super::super::System::Com::VARIANT) -> ::windows::core::Result<IComponentType>;
    fn put_Item(&self, index: &super::super::System::Com::VARIANT, componenttype: &::core::option::Option<IComponentType>) -> ::windows::core::Result<()>;
    fn Add(&self, componenttype: &::core::option::Option<IComponentType>) -> ::windows::core::Result<super::super::System::Com::VARIANT>;
    fn Remove(&self, index: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<IComponentTypes>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IComponentTypes {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IComponentTypes_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentTypes_Impl, const OFFSET: isize>() -> IComponentTypes_Vtbl {
        unsafe extern "system" fn Count<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, count: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Count() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(count, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppnewenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._NewEnum() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppnewenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumComponentTypes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppnewenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumComponentTypes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppnewenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, componenttype: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_Item(::core::mem::transmute(&index)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(componenttype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_Item<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, componenttype: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Item(::core::mem::transmute(&index), ::core::mem::transmute(&componenttype)).into()
        }
        unsafe extern "system" fn Add<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, componenttype: *mut ::core::ffi::c_void, newindex: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Add(::core::mem::transmute(&componenttype)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newindex, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Remove<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Remove(::core::mem::transmute(&index)).into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newlist: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newlist, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Count: Count::<Identity, Impl, OFFSET>,
            _NewEnum: _NewEnum::<Identity, Impl, OFFSET>,
            EnumComponentTypes: EnumComponentTypes::<Identity, Impl, OFFSET>,
            get_Item: get_Item::<Identity, Impl, OFFSET>,
            put_Item: put_Item::<Identity, Impl, OFFSET>,
            Add: Add::<Identity, Impl, OFFSET>,
            Remove: Remove::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IComponentTypes as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IComponents_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> ::windows::core::Result<i32>;
    fn _NewEnum(&self) -> ::windows::core::Result<super::super::System::Ole::IEnumVARIANT>;
    fn EnumComponents(&self) -> ::windows::core::Result<IEnumComponents>;
    fn get_Item(&self, index: &super::super::System::Com::VARIANT) -> ::windows::core::Result<IComponent>;
    fn Add(&self, component: &::core::option::Option<IComponent>) -> ::windows::core::Result<super::super::System::Com::VARIANT>;
    fn Remove(&self, index: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<IComponents>;
    fn put_Item(&self, index: &super::super::System::Com::VARIANT, ppcomponent: &::core::option::Option<IComponent>) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IComponents {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IComponents_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponents_Impl, const OFFSET: isize>() -> IComponents_Vtbl {
        unsafe extern "system" fn Count<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponents_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, count: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Count() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(count, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponents_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppnewenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._NewEnum() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppnewenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumComponents<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponents_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppnewenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumComponents() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppnewenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponents_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, ppcomponent: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_Item(::core::mem::transmute(&index)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcomponent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponents_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, component: *mut ::core::ffi::c_void, newindex: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Add(::core::mem::transmute(&component)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newindex, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Remove<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponents_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Remove(::core::mem::transmute(&index)).into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponents_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newlist: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newlist, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_Item<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponents_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, ppcomponent: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Item(::core::mem::transmute(&index), ::core::mem::transmute(&ppcomponent)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Count: Count::<Identity, Impl, OFFSET>,
            _NewEnum: _NewEnum::<Identity, Impl, OFFSET>,
            EnumComponents: EnumComponents::<Identity, Impl, OFFSET>,
            get_Item: get_Item::<Identity, Impl, OFFSET>,
            Add: Add::<Identity, Impl, OFFSET>,
            Remove: Remove::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
            put_Item: put_Item::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IComponents as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IComponentsOld_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> ::windows::core::Result<i32>;
    fn _NewEnum(&self) -> ::windows::core::Result<super::super::System::Ole::IEnumVARIANT>;
    fn EnumComponents(&self) -> ::windows::core::Result<IEnumComponents>;
    fn get_Item(&self, index: &super::super::System::Com::VARIANT) -> ::windows::core::Result<IComponent>;
    fn Add(&self, component: &::core::option::Option<IComponent>) -> ::windows::core::Result<super::super::System::Com::VARIANT>;
    fn Remove(&self, index: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<IComponents>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IComponentsOld {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IComponentsOld_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentsOld_Impl, const OFFSET: isize>() -> IComponentsOld_Vtbl {
        unsafe extern "system" fn Count<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentsOld_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, count: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Count() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(count, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentsOld_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppnewenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._NewEnum() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppnewenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumComponents<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentsOld_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppnewenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumComponents() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppnewenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentsOld_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, ppcomponent: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_Item(::core::mem::transmute(&index)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcomponent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentsOld_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, component: *mut ::core::ffi::c_void, newindex: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Add(::core::mem::transmute(&component)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newindex, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Remove<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentsOld_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Remove(::core::mem::transmute(&index)).into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IComponentsOld_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newlist: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newlist, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Count: Count::<Identity, Impl, OFFSET>,
            _NewEnum: _NewEnum::<Identity, Impl, OFFSET>,
            EnumComponents: EnumComponents::<Identity, Impl, OFFSET>,
            get_Item: get_Item::<Identity, Impl, OFFSET>,
            Add: Add::<Identity, Impl, OFFSET>,
            Remove: Remove::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IComponentsOld as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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: &::core::option::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(all(feature = "Win32_Foundation", feature = "Win32_Media_WindowsMediaFormat"))]
impl ::windows::core::RuntimeName for IConfigAsfWriter {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_WindowsMediaFormat"))]
impl IConfigAsfWriter_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAsfWriter_Impl, const OFFSET: isize>() -> IConfigAsfWriter_Vtbl {
        unsafe extern "system" fn ConfigureFilterUsingProfileId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAsfWriter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwprofileid: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConfigureFilterUsingProfileId(::core::mem::transmute_copy(&dwprofileid)).into()
        }
        unsafe extern "system" fn GetCurrentProfileId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAsfWriter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwprofileid: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentProfileId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwprofileid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ConfigureFilterUsingProfileGuid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAsfWriter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guidprofile: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConfigureFilterUsingProfileGuid(::core::mem::transmute_copy(&guidprofile)).into()
        }
        unsafe extern "system" fn GetCurrentProfileGuid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAsfWriter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pprofileguid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentProfileGuid() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pprofileguid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ConfigureFilterUsingProfile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAsfWriter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pprofile: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConfigureFilterUsingProfile(::core::mem::transmute(&pprofile)).into()
        }
        unsafe extern "system" fn GetCurrentProfile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAsfWriter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppprofile: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentProfile() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppprofile, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetIndexMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAsfWriter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindexfile: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetIndexMode(::core::mem::transmute_copy(&bindexfile)).into()
        }
        unsafe extern "system" fn GetIndexMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAsfWriter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbindexfile: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetIndexMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbindexfile, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ConfigureFilterUsingProfileId: ConfigureFilterUsingProfileId::<Identity, Impl, OFFSET>,
            GetCurrentProfileId: GetCurrentProfileId::<Identity, Impl, OFFSET>,
            ConfigureFilterUsingProfileGuid: ConfigureFilterUsingProfileGuid::<Identity, Impl, OFFSET>,
            GetCurrentProfileGuid: GetCurrentProfileGuid::<Identity, Impl, OFFSET>,
            ConfigureFilterUsingProfile: ConfigureFilterUsingProfile::<Identity, Impl, OFFSET>,
            GetCurrentProfile: GetCurrentProfile::<Identity, Impl, OFFSET>,
            SetIndexMode: SetIndexMode::<Identity, Impl, OFFSET>,
            GetIndexMode: GetIndexMode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IConfigAsfWriter as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_WindowsMediaFormat"))]
pub trait IConfigAsfWriter2_Impl: Sized + IConfigAsfWriter_Impl {
    fn StreamNumFromPin(&self, ppin: &::core::option::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(all(feature = "Win32_Foundation", feature = "Win32_Media_WindowsMediaFormat"))]
impl ::windows::core::RuntimeName for IConfigAsfWriter2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_WindowsMediaFormat"))]
impl IConfigAsfWriter2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAsfWriter2_Impl, const OFFSET: isize>() -> IConfigAsfWriter2_Vtbl {
        unsafe extern "system" fn StreamNumFromPin<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAsfWriter2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppin: *mut ::core::ffi::c_void, pwstreamnum: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.StreamNumFromPin(::core::mem::transmute(&ppin)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwstreamnum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetParam<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAsfWriter2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwparam: u32, dwparam1: u32, dwparam2: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetParam(::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<Impl = Impl>, Impl: IConfigAsfWriter2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwparam: u32, pdwparam1: *mut u32, pdwparam2: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetParam(::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<Impl = Impl>, Impl: IConfigAsfWriter2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ResetMultiPassState().into()
        }
        Self {
            base__: IConfigAsfWriter_Vtbl::new::<Identity, Impl, OFFSET>(),
            StreamNumFromPin: StreamNumFromPin::<Identity, Impl, OFFSET>,
            SetParam: SetParam::<Identity, Impl, OFFSET>,
            GetParam: GetParam::<Identity, Impl, OFFSET>,
            ResetMultiPassState: ResetMultiPassState::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IConfigAsfWriter2 as ::windows::core::Interface>::IID || iid == &<IConfigAsfWriter as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IConfigAviMux {}
#[cfg(feature = "Win32_Foundation")]
impl IConfigAviMux_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAviMux_Impl, const OFFSET: isize>() -> IConfigAviMux_Vtbl {
        unsafe extern "system" fn SetMasterStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAviMux_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, istream: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMasterStream(::core::mem::transmute_copy(&istream)).into()
        }
        unsafe extern "system" fn GetMasterStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAviMux_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstream: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMasterStream() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstream, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputCompatibilityIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAviMux_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, foldindex: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOutputCompatibilityIndex(::core::mem::transmute_copy(&foldindex)).into()
        }
        unsafe extern "system" fn GetOutputCompatibilityIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigAviMux_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfoldindex: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOutputCompatibilityIndex() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfoldindex, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetMasterStream: SetMasterStream::<Identity, Impl, OFFSET>,
            GetMasterStream: GetMasterStream::<Identity, Impl, OFFSET>,
            SetOutputCompatibilityIndex: SetOutputCompatibilityIndex::<Identity, Impl, OFFSET>,
            GetOutputCompatibilityIndex: GetOutputCompatibilityIndex::<Identity, Impl, 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<Impl = Impl>, Impl: IConfigInterleaving_Impl, const OFFSET: isize>() -> IConfigInterleaving_Vtbl {
        unsafe extern "system" fn SetMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigInterleaving_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: InterleavingMode) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMode(::core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn Mode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigInterleaving_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmode: *mut InterleavingMode) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Mode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_Interleaving<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigInterleaving_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prtinterleave: *const i64, prtpreroll: *const i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Interleaving(::core::mem::transmute_copy(&prtinterleave), ::core::mem::transmute_copy(&prtpreroll)).into()
        }
        unsafe extern "system" fn get_Interleaving<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IConfigInterleaving_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prtinterleave: *mut i64, prtpreroll: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Interleaving(::core::mem::transmute_copy(&prtinterleave), ::core::mem::transmute_copy(&prtpreroll)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetMode: SetMode::<Identity, Impl, OFFSET>,
            Mode: Mode::<Identity, Impl, OFFSET>,
            put_Interleaving: put_Interleaving::<Identity, Impl, OFFSET>,
            get_Interleaving: get_Interleaving::<Identity, Impl, 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 ::core::option::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<Impl = Impl>, Impl: ICreateDevEnum_Impl, const OFFSET: isize>() -> ICreateDevEnum_Vtbl {
        unsafe extern "system" fn CreateClassEnumerator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICreateDevEnum_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CreateClassEnumerator(::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, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ICreateDevEnum as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Registry")]
pub trait ICreatePropBagOnRegKey_Impl: Sized {
    fn Create(&self, hkey: super::super::System::Registry::HKEY, subkey: &::windows::core::PCWSTR, uloptions: u32, samdesired: u32, iid: *const ::windows::core::GUID, ppbag: *mut *mut ::core::ffi::c_void) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_System_Registry")]
impl ::windows::core::RuntimeName for ICreatePropBagOnRegKey {}
#[cfg(feature = "Win32_System_Registry")]
impl ICreatePropBagOnRegKey_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICreatePropBagOnRegKey_Impl, const OFFSET: isize>() -> ICreatePropBagOnRegKey_Vtbl {
        unsafe extern "system" fn Create<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ICreatePropBagOnRegKey_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hkey: super::super::System::Registry::HKEY, subkey: ::windows::core::PCWSTR, uloptions: u32, samdesired: u32, iid: *const ::windows::core::GUID, ppbag: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Create(::core::mem::transmute_copy(&hkey), ::core::mem::transmute(&subkey), ::core::mem::transmute_copy(&uloptions), ::core::mem::transmute_copy(&samdesired), ::core::mem::transmute_copy(&iid), ::core::mem::transmute_copy(&ppbag)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Create: Create::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ICreatePropBagOnRegKey as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
pub trait IDDrawExclModeVideo_Impl: Sized {
    fn SetDDrawObject(&self, pddrawobject: &::core::option::Option<super::super::Graphics::DirectDraw::IDirectDraw>) -> ::windows::core::Result<()>;
    fn GetDDrawObject(&self, ppddrawobject: *mut ::core::option::Option<super::super::Graphics::DirectDraw::IDirectDraw>, pbusingexternal: *mut super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
    fn SetDDrawSurface(&self, pddrawsurface: &::core::option::Option<super::super::Graphics::DirectDraw::IDirectDrawSurface>) -> ::windows::core::Result<()>;
    fn GetDDrawSurface(&self, ppddrawsurface: *mut ::core::option::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: &::core::option::Option<IDDrawExclModeVideoCallback>, dwflags: u32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl ::windows::core::RuntimeName for IDDrawExclModeVideo {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl IDDrawExclModeVideo_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDDrawExclModeVideo_Impl, const OFFSET: isize>() -> IDDrawExclModeVideo_Vtbl {
        unsafe extern "system" fn SetDDrawObject<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDDrawExclModeVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pddrawobject: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDDrawObject(::core::mem::transmute(&pddrawobject)).into()
        }
        unsafe extern "system" fn GetDDrawObject<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDDrawExclModeVideo_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDDrawObject(::core::mem::transmute_copy(&ppddrawobject), ::core::mem::transmute_copy(&pbusingexternal)).into()
        }
        unsafe extern "system" fn SetDDrawSurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDDrawExclModeVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pddrawsurface: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDDrawSurface(::core::mem::transmute(&pddrawsurface)).into()
        }
        unsafe extern "system" fn GetDDrawSurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDDrawExclModeVideo_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDDrawSurface(::core::mem::transmute_copy(&ppddrawsurface), ::core::mem::transmute_copy(&pbusingexternal)).into()
        }
        unsafe extern "system" fn SetDrawParameters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDDrawExclModeVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prcsource: *const super::super::Foundation::RECT, prctarget: *const super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDrawParameters(::core::mem::transmute_copy(&prcsource), ::core::mem::transmute_copy(&prctarget)).into()
        }
        unsafe extern "system" fn GetNativeVideoProps<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDDrawExclModeVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwvideowidth: *mut u32, pdwvideoheight: *mut u32, pdwpictaspectratiox: *mut u32, pdwpictaspectratioy: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetNativeVideoProps(::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<Impl = Impl>, Impl: IDDrawExclModeVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcallback: *mut ::core::ffi::c_void, dwflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCallbackInterface(::core::mem::transmute(&pcallback), ::core::mem::transmute_copy(&dwflags)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetDDrawObject: SetDDrawObject::<Identity, Impl, OFFSET>,
            GetDDrawObject: GetDDrawObject::<Identity, Impl, OFFSET>,
            SetDDrawSurface: SetDDrawSurface::<Identity, Impl, OFFSET>,
            GetDDrawSurface: GetDDrawSurface::<Identity, Impl, OFFSET>,
            SetDrawParameters: SetDrawParameters::<Identity, Impl, OFFSET>,
            GetNativeVideoProps: GetNativeVideoProps::<Identity, Impl, OFFSET>,
            SetCallbackInterface: SetCallbackInterface::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDDrawExclModeVideo as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDDrawExclModeVideoCallback {}
#[cfg(feature = "Win32_Foundation")]
impl IDDrawExclModeVideoCallback_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDDrawExclModeVideoCallback_Impl, const OFFSET: isize>() -> IDDrawExclModeVideoCallback_Vtbl {
        unsafe extern "system" fn OnUpdateOverlay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDDrawExclModeVideoCallback_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnUpdateOverlay(::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<Impl = Impl>, Impl: IDDrawExclModeVideoCallback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pkey: *const COLORKEY, dwcolor: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnUpdateColorKey(::core::mem::transmute_copy(&pkey), ::core::mem::transmute_copy(&dwcolor)).into()
        }
        unsafe extern "system" fn OnUpdateSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDDrawExclModeVideoCallback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwwidth: u32, dwheight: u32, dwarwidth: u32, dwarheight: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnUpdateSize(::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, Impl, OFFSET>,
            OnUpdateColorKey: OnUpdateColorKey::<Identity, Impl, OFFSET>,
            OnUpdateSize: OnUpdateSize::<Identity, Impl, 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<Impl = Impl>, Impl: IDMOWrapperFilter_Impl, const OFFSET: isize>() -> IDMOWrapperFilter_Vtbl {
        unsafe extern "system" fn Init<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDMOWrapperFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, clsiddmo: *const ::windows::core::GUID, catdmo: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Init(::core::mem::transmute_copy(&clsiddmo), ::core::mem::transmute_copy(&catdmo)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Init: Init::<Identity, Impl, 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<Impl = Impl>, Impl: IDShowPlugin_Impl, const OFFSET: isize>() -> IDShowPlugin_Vtbl {
        unsafe extern "system" fn URL<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDShowPlugin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, purl: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.URL(::core::mem::transmute_copy(&purl)).into()
        }
        unsafe extern "system" fn UserAgent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDShowPlugin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, puseragent: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UserAgent(::core::mem::transmute_copy(&puseragent)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            URL: URL::<Identity, Impl, OFFSET>,
            UserAgent: UserAgent::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDShowPlugin as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IDTFilter_Impl: Sized {
    fn EvalRatObjOK(&self) -> ::windows::core::Result<::windows::core::HRESULT>;
    fn GetCurrRating(&self, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, plbfenattr: *mut i32) -> ::windows::core::Result<()>;
    fn get_BlockedRatingAttributes(&self, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel) -> ::windows::core::Result<i32>;
    fn put_BlockedRatingAttributes(&self, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel, lbfattrs: i32) -> ::windows::core::Result<()>;
    fn BlockUnRated(&self) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn SetBlockUnRated(&self, fblockunratedshows: super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
    fn BlockUnRatedDelay(&self) -> ::windows::core::Result<i32>;
    fn SetBlockUnRatedDelay(&self, msecsdelaybeforeblock: i32) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDTFilter {}
#[cfg(feature = "Win32_Foundation")]
impl IDTFilter_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter_Impl, const OFFSET: isize>() -> IDTFilter_Vtbl {
        unsafe extern "system" fn EvalRatObjOK<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phrcocreateretval: *mut ::windows::core::HRESULT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EvalRatObjOK() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(phrcocreateretval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrRating<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, plbfenattr: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrRating(::core::mem::transmute_copy(&pensystem), ::core::mem::transmute_copy(&penrating), ::core::mem::transmute_copy(&plbfenattr)).into()
        }
        unsafe extern "system" fn get_BlockedRatingAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel, plbfenattr: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_BlockedRatingAttributes(::core::mem::transmute_copy(&ensystem), ::core::mem::transmute_copy(&enlevel)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plbfenattr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_BlockedRatingAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel, lbfattrs: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_BlockedRatingAttributes(::core::mem::transmute_copy(&ensystem), ::core::mem::transmute_copy(&enlevel), ::core::mem::transmute_copy(&lbfattrs)).into()
        }
        unsafe extern "system" fn BlockUnRated<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfblockunratedshows: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.BlockUnRated() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfblockunratedshows, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBlockUnRated<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fblockunratedshows: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBlockUnRated(::core::mem::transmute_copy(&fblockunratedshows)).into()
        }
        unsafe extern "system" fn BlockUnRatedDelay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmsecsdelaybeforeblock: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.BlockUnRatedDelay() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmsecsdelaybeforeblock, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBlockUnRatedDelay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, msecsdelaybeforeblock: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBlockUnRatedDelay(::core::mem::transmute_copy(&msecsdelaybeforeblock)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            EvalRatObjOK: EvalRatObjOK::<Identity, Impl, OFFSET>,
            GetCurrRating: GetCurrRating::<Identity, Impl, OFFSET>,
            get_BlockedRatingAttributes: get_BlockedRatingAttributes::<Identity, Impl, OFFSET>,
            put_BlockedRatingAttributes: put_BlockedRatingAttributes::<Identity, Impl, OFFSET>,
            BlockUnRated: BlockUnRated::<Identity, Impl, OFFSET>,
            SetBlockUnRated: SetBlockUnRated::<Identity, Impl, OFFSET>,
            BlockUnRatedDelay: BlockUnRatedDelay::<Identity, Impl, OFFSET>,
            SetBlockUnRatedDelay: SetBlockUnRatedDelay::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDTFilter as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IDTFilter2_Impl: Sized + IDTFilter_Impl {
    fn ChallengeUrl(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn GetCurrLicenseExpDate(&self, prottype: *const ProtType) -> ::windows::core::Result<i32>;
    fn GetLastErrorCode(&self) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDTFilter2 {}
#[cfg(feature = "Win32_Foundation")]
impl IDTFilter2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter2_Impl, const OFFSET: isize>() -> IDTFilter2_Vtbl {
        unsafe extern "system" fn ChallengeUrl<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrchallengeurl: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ChallengeUrl() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrchallengeurl, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrLicenseExpDate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prottype: *const ProtType, lpdatetime: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrLicenseExpDate(::core::mem::transmute_copy(&prottype)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpdatetime, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastErrorCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLastErrorCode().into()
        }
        Self {
            base__: IDTFilter_Vtbl::new::<Identity, Impl, OFFSET>(),
            ChallengeUrl: ChallengeUrl::<Identity, Impl, OFFSET>,
            GetCurrLicenseExpDate: GetCurrLicenseExpDate::<Identity, Impl, OFFSET>,
            GetLastErrorCode: GetLastErrorCode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDTFilter2 as ::windows::core::Interface>::IID || iid == &<IDTFilter as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IDTFilter3_Impl: Sized + IDTFilter2_Impl {
    fn GetProtectionType(&self) -> ::windows::core::Result<ProtType>;
    fn LicenseHasExpirationDate(&self) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn SetRights(&self, bstrrights: &::windows::core::BSTR) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDTFilter3 {}
#[cfg(feature = "Win32_Foundation")]
impl IDTFilter3_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter3_Impl, const OFFSET: isize>() -> IDTFilter3_Vtbl {
        unsafe extern "system" fn GetProtectionType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pprotectiontype: *mut ProtType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetProtectionType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pprotectiontype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn LicenseHasExpirationDate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pflicensehasexpirationdate: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.LicenseHasExpirationDate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pflicensehasexpirationdate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRights<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilter3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bstrrights: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRights(::core::mem::transmute(&bstrrights)).into()
        }
        Self {
            base__: IDTFilter2_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetProtectionType: GetProtectionType::<Identity, Impl, OFFSET>,
            LicenseHasExpirationDate: LicenseHasExpirationDate::<Identity, Impl, OFFSET>,
            SetRights: SetRights::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDTFilter3 as ::windows::core::Interface>::IID || iid == &<IDTFilter as ::windows::core::Interface>::IID || iid == &<IDTFilter2 as ::windows::core::Interface>::IID
    }
}
pub trait IDTFilterConfig_Impl: Sized {
    fn GetSecureChannelObject(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
}
impl ::windows::core::RuntimeName for IDTFilterConfig {}
impl IDTFilterConfig_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilterConfig_Impl, const OFFSET: isize>() -> IDTFilterConfig_Vtbl {
        unsafe extern "system" fn GetSecureChannelObject<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilterConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunkdrmsecurechannel: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSecureChannelObject() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunkdrmsecurechannel, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetSecureChannelObject: GetSecureChannelObject::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDTFilterConfig as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDTFilterEvents_Impl: Sized + super::super::System::Com::IDispatch_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IDTFilterEvents {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDTFilterEvents_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilterEvents_Impl, const OFFSET: isize>() -> IDTFilterEvents_Vtbl {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDTFilterEvents as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
pub trait IDTFilterLicenseRenewal_Impl: Sized {
    fn GetLicenseRenewalData(&self, ppwszfilename: *mut ::windows::core::PWSTR, ppwszexpiredkid: *mut ::windows::core::PWSTR, ppwsztunerid: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IDTFilterLicenseRenewal {}
impl IDTFilterLicenseRenewal_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilterLicenseRenewal_Impl, const OFFSET: isize>() -> IDTFilterLicenseRenewal_Vtbl {
        unsafe extern "system" fn GetLicenseRenewalData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDTFilterLicenseRenewal_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppwszfilename: *mut ::windows::core::PWSTR, ppwszexpiredkid: *mut ::windows::core::PWSTR, ppwsztunerid: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLicenseRenewalData(::core::mem::transmute_copy(&ppwszfilename), ::core::mem::transmute_copy(&ppwszexpiredkid), ::core::mem::transmute_copy(&ppwsztunerid)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetLicenseRenewalData: GetLicenseRenewalData::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDTFilterLicenseRenewal as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDVBCLocator_Impl: Sized + IDigitalLocator_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IDVBCLocator {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDVBCLocator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBCLocator_Impl, const OFFSET: isize>() -> IDVBCLocator_Vtbl {
        Self { base__: IDigitalLocator_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVBCLocator as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ILocator as ::windows::core::Interface>::IID || iid == &<IDigitalLocator as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDVBSLocator_Impl: Sized + IDigitalLocator_Impl {
    fn SignalPolarisation(&self) -> ::windows::core::Result<Polarisation>;
    fn SetSignalPolarisation(&self, polarisationval: Polarisation) -> ::windows::core::Result<()>;
    fn WestPosition(&self) -> ::windows::core::Result<i16>;
    fn SetWestPosition(&self, westlongitude: i16) -> ::windows::core::Result<()>;
    fn OrbitalPosition(&self) -> ::windows::core::Result<i32>;
    fn SetOrbitalPosition(&self, longitude: i32) -> ::windows::core::Result<()>;
    fn Azimuth(&self) -> ::windows::core::Result<i32>;
    fn SetAzimuth(&self, azimuth: i32) -> ::windows::core::Result<()>;
    fn Elevation(&self) -> ::windows::core::Result<i32>;
    fn SetElevation(&self, elevation: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IDVBSLocator {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDVBSLocator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator_Impl, const OFFSET: isize>() -> IDVBSLocator_Vtbl {
        unsafe extern "system" fn SignalPolarisation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, polarisationval: *mut Polarisation) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SignalPolarisation() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(polarisationval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSignalPolarisation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, polarisationval: Polarisation) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSignalPolarisation(::core::mem::transmute_copy(&polarisationval)).into()
        }
        unsafe extern "system" fn WestPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, westlongitude: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.WestPosition() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(westlongitude, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWestPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, westlongitude: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetWestPosition(::core::mem::transmute_copy(&westlongitude)).into()
        }
        unsafe extern "system" fn OrbitalPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, longitude: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.OrbitalPosition() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(longitude, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOrbitalPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, longitude: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOrbitalPosition(::core::mem::transmute_copy(&longitude)).into()
        }
        unsafe extern "system" fn Azimuth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, azimuth: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Azimuth() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(azimuth, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAzimuth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, azimuth: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAzimuth(::core::mem::transmute_copy(&azimuth)).into()
        }
        unsafe extern "system" fn Elevation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, elevation: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Elevation() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(elevation, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetElevation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, elevation: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetElevation(::core::mem::transmute_copy(&elevation)).into()
        }
        Self {
            base__: IDigitalLocator_Vtbl::new::<Identity, Impl, OFFSET>(),
            SignalPolarisation: SignalPolarisation::<Identity, Impl, OFFSET>,
            SetSignalPolarisation: SetSignalPolarisation::<Identity, Impl, OFFSET>,
            WestPosition: WestPosition::<Identity, Impl, OFFSET>,
            SetWestPosition: SetWestPosition::<Identity, Impl, OFFSET>,
            OrbitalPosition: OrbitalPosition::<Identity, Impl, OFFSET>,
            SetOrbitalPosition: SetOrbitalPosition::<Identity, Impl, OFFSET>,
            Azimuth: Azimuth::<Identity, Impl, OFFSET>,
            SetAzimuth: SetAzimuth::<Identity, Impl, OFFSET>,
            Elevation: Elevation::<Identity, Impl, OFFSET>,
            SetElevation: SetElevation::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVBSLocator as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ILocator as ::windows::core::Interface>::IID || iid == &<IDigitalLocator as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDVBSLocator2_Impl: Sized + IDVBSLocator_Impl {
    fn DiseqLNBSource(&self) -> ::windows::core::Result<LNB_Source>;
    fn SetDiseqLNBSource(&self, diseqlnbsourceval: LNB_Source) -> ::windows::core::Result<()>;
    fn LocalOscillatorOverrideLow(&self) -> ::windows::core::Result<i32>;
    fn SetLocalOscillatorOverrideLow(&self, localoscillatoroverridelowval: i32) -> ::windows::core::Result<()>;
    fn LocalOscillatorOverrideHigh(&self) -> ::windows::core::Result<i32>;
    fn SetLocalOscillatorOverrideHigh(&self, localoscillatoroverridehighval: i32) -> ::windows::core::Result<()>;
    fn LocalLNBSwitchOverride(&self) -> ::windows::core::Result<i32>;
    fn SetLocalLNBSwitchOverride(&self, locallnbswitchoverrideval: i32) -> ::windows::core::Result<()>;
    fn LocalSpectralInversionOverride(&self) -> ::windows::core::Result<SpectralInversion>;
    fn SetLocalSpectralInversionOverride(&self, localspectralinversionoverrideval: SpectralInversion) -> ::windows::core::Result<()>;
    fn SignalRollOff(&self) -> ::windows::core::Result<RollOff>;
    fn SetSignalRollOff(&self, rolloffval: RollOff) -> ::windows::core::Result<()>;
    fn SignalPilot(&self) -> ::windows::core::Result<Pilot>;
    fn SetSignalPilot(&self, pilotval: Pilot) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IDVBSLocator2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDVBSLocator2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>() -> IDVBSLocator2_Vtbl {
        unsafe extern "system" fn DiseqLNBSource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, diseqlnbsourceval: *mut LNB_Source) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DiseqLNBSource() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(diseqlnbsourceval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDiseqLNBSource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, diseqlnbsourceval: LNB_Source) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDiseqLNBSource(::core::mem::transmute_copy(&diseqlnbsourceval)).into()
        }
        unsafe extern "system" fn LocalOscillatorOverrideLow<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, localoscillatoroverridelowval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.LocalOscillatorOverrideLow() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(localoscillatoroverridelowval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLocalOscillatorOverrideLow<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, localoscillatoroverridelowval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLocalOscillatorOverrideLow(::core::mem::transmute_copy(&localoscillatoroverridelowval)).into()
        }
        unsafe extern "system" fn LocalOscillatorOverrideHigh<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, localoscillatoroverridehighval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.LocalOscillatorOverrideHigh() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(localoscillatoroverridehighval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLocalOscillatorOverrideHigh<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, localoscillatoroverridehighval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLocalOscillatorOverrideHigh(::core::mem::transmute_copy(&localoscillatoroverridehighval)).into()
        }
        unsafe extern "system" fn LocalLNBSwitchOverride<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, locallnbswitchoverrideval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.LocalLNBSwitchOverride() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(locallnbswitchoverrideval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLocalLNBSwitchOverride<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, locallnbswitchoverrideval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLocalLNBSwitchOverride(::core::mem::transmute_copy(&locallnbswitchoverrideval)).into()
        }
        unsafe extern "system" fn LocalSpectralInversionOverride<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, localspectralinversionoverrideval: *mut SpectralInversion) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.LocalSpectralInversionOverride() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(localspectralinversionoverrideval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLocalSpectralInversionOverride<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, localspectralinversionoverrideval: SpectralInversion) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLocalSpectralInversionOverride(::core::mem::transmute_copy(&localspectralinversionoverrideval)).into()
        }
        unsafe extern "system" fn SignalRollOff<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rolloffval: *mut RollOff) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SignalRollOff() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(rolloffval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSignalRollOff<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rolloffval: RollOff) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSignalRollOff(::core::mem::transmute_copy(&rolloffval)).into()
        }
        unsafe extern "system" fn SignalPilot<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pilotval: *mut Pilot) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SignalPilot() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pilotval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSignalPilot<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pilotval: Pilot) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSignalPilot(::core::mem::transmute_copy(&pilotval)).into()
        }
        Self {
            base__: IDVBSLocator_Vtbl::new::<Identity, Impl, OFFSET>(),
            DiseqLNBSource: DiseqLNBSource::<Identity, Impl, OFFSET>,
            SetDiseqLNBSource: SetDiseqLNBSource::<Identity, Impl, OFFSET>,
            LocalOscillatorOverrideLow: LocalOscillatorOverrideLow::<Identity, Impl, OFFSET>,
            SetLocalOscillatorOverrideLow: SetLocalOscillatorOverrideLow::<Identity, Impl, OFFSET>,
            LocalOscillatorOverrideHigh: LocalOscillatorOverrideHigh::<Identity, Impl, OFFSET>,
            SetLocalOscillatorOverrideHigh: SetLocalOscillatorOverrideHigh::<Identity, Impl, OFFSET>,
            LocalLNBSwitchOverride: LocalLNBSwitchOverride::<Identity, Impl, OFFSET>,
            SetLocalLNBSwitchOverride: SetLocalLNBSwitchOverride::<Identity, Impl, OFFSET>,
            LocalSpectralInversionOverride: LocalSpectralInversionOverride::<Identity, Impl, OFFSET>,
            SetLocalSpectralInversionOverride: SetLocalSpectralInversionOverride::<Identity, Impl, OFFSET>,
            SignalRollOff: SignalRollOff::<Identity, Impl, OFFSET>,
            SetSignalRollOff: SetSignalRollOff::<Identity, Impl, OFFSET>,
            SignalPilot: SignalPilot::<Identity, Impl, OFFSET>,
            SetSignalPilot: SetSignalPilot::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVBSLocator2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ILocator as ::windows::core::Interface>::IID || iid == &<IDigitalLocator as ::windows::core::Interface>::IID || iid == &<IDVBSLocator as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDVBSTuningSpace_Impl: Sized + IDVBTuningSpace2_Impl {
    fn LowOscillator(&self) -> ::windows::core::Result<i32>;
    fn SetLowOscillator(&self, lowoscillator: i32) -> ::windows::core::Result<()>;
    fn HighOscillator(&self) -> ::windows::core::Result<i32>;
    fn SetHighOscillator(&self, highoscillator: i32) -> ::windows::core::Result<()>;
    fn LNBSwitch(&self) -> ::windows::core::Result<i32>;
    fn SetLNBSwitch(&self, lnbswitch: i32) -> ::windows::core::Result<()>;
    fn InputRange(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn SetInputRange(&self, inputrange: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn SpectralInversion(&self) -> ::windows::core::Result<SpectralInversion>;
    fn SetSpectralInversion(&self, spectralinversionval: SpectralInversion) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IDVBSTuningSpace {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDVBSTuningSpace_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSTuningSpace_Impl, const OFFSET: isize>() -> IDVBSTuningSpace_Vtbl {
        unsafe extern "system" fn LowOscillator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lowoscillator: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.LowOscillator() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lowoscillator, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLowOscillator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lowoscillator: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLowOscillator(::core::mem::transmute_copy(&lowoscillator)).into()
        }
        unsafe extern "system" fn HighOscillator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, highoscillator: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.HighOscillator() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(highoscillator, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetHighOscillator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, highoscillator: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetHighOscillator(::core::mem::transmute_copy(&highoscillator)).into()
        }
        unsafe extern "system" fn LNBSwitch<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lnbswitch: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.LNBSwitch() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lnbswitch, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLNBSwitch<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lnbswitch: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLNBSwitch(::core::mem::transmute_copy(&lnbswitch)).into()
        }
        unsafe extern "system" fn InputRange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, inputrange: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.InputRange() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(inputrange, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetInputRange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, inputrange: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetInputRange(::core::mem::transmute(&inputrange)).into()
        }
        unsafe extern "system" fn SpectralInversion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, spectralinversionval: *mut SpectralInversion) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SpectralInversion() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(spectralinversionval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSpectralInversion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBSTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, spectralinversionval: SpectralInversion) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSpectralInversion(::core::mem::transmute_copy(&spectralinversionval)).into()
        }
        Self {
            base__: IDVBTuningSpace2_Vtbl::new::<Identity, Impl, OFFSET>(),
            LowOscillator: LowOscillator::<Identity, Impl, OFFSET>,
            SetLowOscillator: SetLowOscillator::<Identity, Impl, OFFSET>,
            HighOscillator: HighOscillator::<Identity, Impl, OFFSET>,
            SetHighOscillator: SetHighOscillator::<Identity, Impl, OFFSET>,
            LNBSwitch: LNBSwitch::<Identity, Impl, OFFSET>,
            SetLNBSwitch: SetLNBSwitch::<Identity, Impl, OFFSET>,
            InputRange: InputRange::<Identity, Impl, OFFSET>,
            SetInputRange: SetInputRange::<Identity, Impl, OFFSET>,
            SpectralInversion: SpectralInversion::<Identity, Impl, OFFSET>,
            SetSpectralInversion: SetSpectralInversion::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVBSTuningSpace as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuningSpace as ::windows::core::Interface>::IID || iid == &<IDVBTuningSpace as ::windows::core::Interface>::IID || iid == &<IDVBTuningSpace2 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDVBTLocator_Impl: Sized + IDigitalLocator_Impl {
    fn Bandwidth(&self) -> ::windows::core::Result<i32>;
    fn SetBandwidth(&self, bandwidthval: i32) -> ::windows::core::Result<()>;
    fn LPInnerFEC(&self) -> ::windows::core::Result<FECMethod>;
    fn SetLPInnerFEC(&self, fec: FECMethod) -> ::windows::core::Result<()>;
    fn LPInnerFECRate(&self) -> ::windows::core::Result<BinaryConvolutionCodeRate>;
    fn SetLPInnerFECRate(&self, fec: BinaryConvolutionCodeRate) -> ::windows::core::Result<()>;
    fn HAlpha(&self) -> ::windows::core::Result<HierarchyAlpha>;
    fn SetHAlpha(&self, alpha: HierarchyAlpha) -> ::windows::core::Result<()>;
    fn Guard(&self) -> ::windows::core::Result<GuardInterval>;
    fn SetGuard(&self, gi: GuardInterval) -> ::windows::core::Result<()>;
    fn Mode(&self) -> ::windows::core::Result<TransmissionMode>;
    fn SetMode(&self, mode: TransmissionMode) -> ::windows::core::Result<()>;
    fn OtherFrequencyInUse(&self) -> ::windows::core::Result<i16>;
    fn SetOtherFrequencyInUse(&self, otherfrequencyinuseval: i16) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IDVBTLocator {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDVBTLocator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>() -> IDVBTLocator_Vtbl {
        unsafe extern "system" fn Bandwidth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bandwidthval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Bandwidth() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(bandwidthval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBandwidth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bandwidthval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBandwidth(::core::mem::transmute_copy(&bandwidthval)).into()
        }
        unsafe extern "system" fn LPInnerFEC<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fec: *mut FECMethod) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.LPInnerFEC() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(fec, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLPInnerFEC<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fec: FECMethod) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLPInnerFEC(::core::mem::transmute_copy(&fec)).into()
        }
        unsafe extern "system" fn LPInnerFECRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fec: *mut BinaryConvolutionCodeRate) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.LPInnerFECRate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(fec, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLPInnerFECRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fec: BinaryConvolutionCodeRate) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLPInnerFECRate(::core::mem::transmute_copy(&fec)).into()
        }
        unsafe extern "system" fn HAlpha<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, alpha: *mut HierarchyAlpha) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.HAlpha() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(alpha, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetHAlpha<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, alpha: HierarchyAlpha) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetHAlpha(::core::mem::transmute_copy(&alpha)).into()
        }
        unsafe extern "system" fn Guard<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, gi: *mut GuardInterval) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Guard() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(gi, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetGuard<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, gi: GuardInterval) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetGuard(::core::mem::transmute_copy(&gi)).into()
        }
        unsafe extern "system" fn Mode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: *mut TransmissionMode) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Mode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(mode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: TransmissionMode) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMode(::core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn OtherFrequencyInUse<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, otherfrequencyinuseval: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.OtherFrequencyInUse() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(otherfrequencyinuseval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOtherFrequencyInUse<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, otherfrequencyinuseval: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOtherFrequencyInUse(::core::mem::transmute_copy(&otherfrequencyinuseval)).into()
        }
        Self {
            base__: IDigitalLocator_Vtbl::new::<Identity, Impl, OFFSET>(),
            Bandwidth: Bandwidth::<Identity, Impl, OFFSET>,
            SetBandwidth: SetBandwidth::<Identity, Impl, OFFSET>,
            LPInnerFEC: LPInnerFEC::<Identity, Impl, OFFSET>,
            SetLPInnerFEC: SetLPInnerFEC::<Identity, Impl, OFFSET>,
            LPInnerFECRate: LPInnerFECRate::<Identity, Impl, OFFSET>,
            SetLPInnerFECRate: SetLPInnerFECRate::<Identity, Impl, OFFSET>,
            HAlpha: HAlpha::<Identity, Impl, OFFSET>,
            SetHAlpha: SetHAlpha::<Identity, Impl, OFFSET>,
            Guard: Guard::<Identity, Impl, OFFSET>,
            SetGuard: SetGuard::<Identity, Impl, OFFSET>,
            Mode: Mode::<Identity, Impl, OFFSET>,
            SetMode: SetMode::<Identity, Impl, OFFSET>,
            OtherFrequencyInUse: OtherFrequencyInUse::<Identity, Impl, OFFSET>,
            SetOtherFrequencyInUse: SetOtherFrequencyInUse::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVBTLocator as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ILocator as ::windows::core::Interface>::IID || iid == &<IDigitalLocator as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDVBTLocator2_Impl: Sized + IDVBTLocator_Impl {
    fn PhysicalLayerPipeId(&self) -> ::windows::core::Result<i32>;
    fn SetPhysicalLayerPipeId(&self, physicallayerpipeidval: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IDVBTLocator2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDVBTLocator2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator2_Impl, const OFFSET: isize>() -> IDVBTLocator2_Vtbl {
        unsafe extern "system" fn PhysicalLayerPipeId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, physicallayerpipeidval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PhysicalLayerPipeId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(physicallayerpipeidval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPhysicalLayerPipeId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTLocator2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, physicallayerpipeidval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPhysicalLayerPipeId(::core::mem::transmute_copy(&physicallayerpipeidval)).into()
        }
        Self {
            base__: IDVBTLocator_Vtbl::new::<Identity, Impl, OFFSET>(),
            PhysicalLayerPipeId: PhysicalLayerPipeId::<Identity, Impl, OFFSET>,
            SetPhysicalLayerPipeId: SetPhysicalLayerPipeId::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVBTLocator2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ILocator as ::windows::core::Interface>::IID || iid == &<IDigitalLocator as ::windows::core::Interface>::IID || iid == &<IDVBTLocator as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDVBTuneRequest_Impl: Sized + ITuneRequest_Impl {
    fn ONID(&self) -> ::windows::core::Result<i32>;
    fn SetONID(&self, onid: i32) -> ::windows::core::Result<()>;
    fn TSID(&self) -> ::windows::core::Result<i32>;
    fn SetTSID(&self, tsid: i32) -> ::windows::core::Result<()>;
    fn SID(&self) -> ::windows::core::Result<i32>;
    fn SetSID(&self, sid: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IDVBTuneRequest {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDVBTuneRequest_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTuneRequest_Impl, const OFFSET: isize>() -> IDVBTuneRequest_Vtbl {
        unsafe extern "system" fn ONID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, onid: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ONID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(onid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetONID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, onid: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetONID(::core::mem::transmute_copy(&onid)).into()
        }
        unsafe extern "system" fn TSID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tsid: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TSID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tsid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTSID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tsid: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTSID(::core::mem::transmute_copy(&tsid)).into()
        }
        unsafe extern "system" fn SID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sid: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(sid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sid: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSID(::core::mem::transmute_copy(&sid)).into()
        }
        Self {
            base__: ITuneRequest_Vtbl::new::<Identity, Impl, OFFSET>(),
            ONID: ONID::<Identity, Impl, OFFSET>,
            SetONID: SetONID::<Identity, Impl, OFFSET>,
            TSID: TSID::<Identity, Impl, OFFSET>,
            SetTSID: SetTSID::<Identity, Impl, OFFSET>,
            SID: SID::<Identity, Impl, OFFSET>,
            SetSID: SetSID::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVBTuneRequest as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuneRequest as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDVBTuningSpace_Impl: Sized + ITuningSpace_Impl {
    fn SystemType(&self) -> ::windows::core::Result<DVBSystemType>;
    fn SetSystemType(&self, systype: DVBSystemType) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IDVBTuningSpace {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDVBTuningSpace_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTuningSpace_Impl, const OFFSET: isize>() -> IDVBTuningSpace_Vtbl {
        unsafe extern "system" fn SystemType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, systype: *mut DVBSystemType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SystemType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(systype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSystemType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, systype: DVBSystemType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSystemType(::core::mem::transmute_copy(&systype)).into()
        }
        Self {
            base__: ITuningSpace_Vtbl::new::<Identity, Impl, OFFSET>(),
            SystemType: SystemType::<Identity, Impl, OFFSET>,
            SetSystemType: SetSystemType::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVBTuningSpace as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuningSpace as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDVBTuningSpace2_Impl: Sized + IDVBTuningSpace_Impl {
    fn NetworkID(&self) -> ::windows::core::Result<i32>;
    fn SetNetworkID(&self, networkid: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IDVBTuningSpace2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDVBTuningSpace2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTuningSpace2_Impl, const OFFSET: isize>() -> IDVBTuningSpace2_Vtbl {
        unsafe extern "system" fn NetworkID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTuningSpace2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, networkid: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.NetworkID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(networkid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetNetworkID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVBTuningSpace2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, networkid: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetNetworkID(::core::mem::transmute_copy(&networkid)).into()
        }
        Self {
            base__: IDVBTuningSpace_Vtbl::new::<Identity, Impl, OFFSET>(),
            NetworkID: NetworkID::<Identity, Impl, OFFSET>,
            SetNetworkID: SetNetworkID::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVBTuningSpace2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuningSpace as ::windows::core::Interface>::IID || iid == &<IDVBTuningSpace as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IDVB_BAT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetBouquetId(&self) -> ::windows::core::Result<u16>;
    fn GetCountOfTableDescriptors(&self) -> ::windows::core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32, ppdescriptor: *const ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordTransportStreamId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordOriginalNetworkId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn GetNextTable(&self) -> ::windows::core::Result<IDVB_BAT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn ConvertNextToCurrent(&self) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDVB_BAT {}
#[cfg(feature = "Win32_Foundation")]
impl IDVB_BAT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>() -> IDVB_BAT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBouquetId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetBouquetId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfTableDescriptors() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, ppdescriptor: *const *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptorByIndex(::core::mem::transmute_copy(&dwindex), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptorByTag(::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTransportStreamId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordTransportStreamId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordOriginalNetworkId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordOriginalNetworkId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfDescriptors(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptorByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordDescriptorByTag(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForNextTable(::core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppbat: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNextTable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppbat, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForWhenCurrent(::core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_BAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConvertNextToCurrent().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetBouquetId: GetBouquetId::<Identity, Impl, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, Impl, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordTransportStreamId: GetRecordTransportStreamId::<Identity, Impl, OFFSET>,
            GetRecordOriginalNetworkId: GetRecordOriginalNetworkId::<Identity, Impl, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, Impl, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, Impl, OFFSET>,
            GetNextTable: GetNextTable::<Identity, Impl, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, Impl, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVB_BAT as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IDVB_DIT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>) -> ::windows::core::Result<()>;
    fn GetTransitionFlag(&self) -> ::windows::core::Result<super::super::Foundation::BOOL>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDVB_DIT {}
#[cfg(feature = "Win32_Foundation")]
impl IDVB_DIT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_DIT_Impl, const OFFSET: isize>() -> IDVB_DIT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_DIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist)).into()
        }
        unsafe extern "system" fn GetTransitionFlag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_DIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfval: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTransitionFlag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetTransitionFlag: GetTransitionFlag::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVB_DIT as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IDVB_EIT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetServiceId(&self) -> ::windows::core::Result<u16>;
    fn GetTransportStreamId(&self) -> ::windows::core::Result<u16>;
    fn GetOriginalNetworkId(&self) -> ::windows::core::Result<u16>;
    fn GetSegmentLastSectionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetLastTableId(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordEventId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordStartTime(&self, dwrecordindex: u32) -> ::windows::core::Result<MPEG_DATE_AND_TIME>;
    fn GetRecordDuration(&self, dwrecordindex: u32) -> ::windows::core::Result<MPEG_TIME>;
    fn GetRecordRunningStatus(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordFreeCAMode(&self, dwrecordindex: u32) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn GetNextTable(&self) -> ::windows::core::Result<IDVB_EIT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn ConvertNextToCurrent(&self) -> ::windows::core::Result<()>;
    fn GetVersionHash(&self) -> ::windows::core::Result<u32>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDVB_EIT {}
#[cfg(feature = "Win32_Foundation")]
impl IDVB_EIT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>() -> IDVB_EIT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServiceId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransportStreamId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTransportStreamId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalNetworkId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOriginalNetworkId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSegmentLastSectionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSegmentLastSectionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastTableId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLastTableId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEventId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordEventId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordStartTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pmdtval: *mut MPEG_DATE_AND_TIME) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordStartTime(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmdtval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDuration<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pmdval: *mut MPEG_TIME) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDuration(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmdval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRunningStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordRunningStatus(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordFreeCAMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordFreeCAMode(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfDescriptors(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptorByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordDescriptorByTag(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForNextTable(::core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppeit: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNextTable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppeit, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForWhenCurrent(::core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConvertNextToCurrent().into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwversionhash: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionHash() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwversionhash, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetServiceId: GetServiceId::<Identity, Impl, OFFSET>,
            GetTransportStreamId: GetTransportStreamId::<Identity, Impl, OFFSET>,
            GetOriginalNetworkId: GetOriginalNetworkId::<Identity, Impl, OFFSET>,
            GetSegmentLastSectionNumber: GetSegmentLastSectionNumber::<Identity, Impl, OFFSET>,
            GetLastTableId: GetLastTableId::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordEventId: GetRecordEventId::<Identity, Impl, OFFSET>,
            GetRecordStartTime: GetRecordStartTime::<Identity, Impl, OFFSET>,
            GetRecordDuration: GetRecordDuration::<Identity, Impl, OFFSET>,
            GetRecordRunningStatus: GetRecordRunningStatus::<Identity, Impl, OFFSET>,
            GetRecordFreeCAMode: GetRecordFreeCAMode::<Identity, Impl, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, Impl, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, Impl, OFFSET>,
            GetNextTable: GetNextTable::<Identity, Impl, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, Impl, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, Impl, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVB_EIT as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IDVB_EIT2_Impl: Sized + IDVB_EIT_Impl {
    fn GetSegmentInfo(&self, pbtid: *mut u8, pbsegment: *mut u8) -> ::windows::core::Result<()>;
    fn GetRecordSection(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDVB_EIT2 {}
#[cfg(feature = "Win32_Foundation")]
impl IDVB_EIT2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT2_Impl, const OFFSET: isize>() -> IDVB_EIT2_Vtbl {
        unsafe extern "system" fn GetSegmentInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbtid: *mut u8, pbsegment: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetSegmentInfo(::core::mem::transmute_copy(&pbtid), ::core::mem::transmute_copy(&pbsegment)).into()
        }
        unsafe extern "system" fn GetRecordSection<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_EIT2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordSection(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IDVB_EIT_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetSegmentInfo: GetSegmentInfo::<Identity, Impl, OFFSET>,
            GetRecordSection: GetRecordSection::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVB_EIT2 as ::windows::core::Interface>::IID || iid == &<IDVB_EIT as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IDVB_NIT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetNetworkId(&self) -> ::windows::core::Result<u16>;
    fn GetCountOfTableDescriptors(&self) -> ::windows::core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordTransportStreamId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordOriginalNetworkId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn GetNextTable(&self) -> ::windows::core::Result<IDVB_NIT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn ConvertNextToCurrent(&self) -> ::windows::core::Result<()>;
    fn GetVersionHash(&self) -> ::windows::core::Result<u32>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDVB_NIT {}
#[cfg(feature = "Win32_Foundation")]
impl IDVB_NIT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>() -> IDVB_NIT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNetworkId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNetworkId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfTableDescriptors() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableDescriptorByIndex(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptorByTag(::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTransportStreamId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordTransportStreamId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordOriginalNetworkId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordOriginalNetworkId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfDescriptors(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptorByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordDescriptorByTag(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForNextTable(::core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppnit: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNextTable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppnit, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForWhenCurrent(::core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConvertNextToCurrent().into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_NIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwversionhash: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionHash() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwversionhash, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetNetworkId: GetNetworkId::<Identity, Impl, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, Impl, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordTransportStreamId: GetRecordTransportStreamId::<Identity, Impl, OFFSET>,
            GetRecordOriginalNetworkId: GetRecordOriginalNetworkId::<Identity, Impl, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, Impl, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, Impl, OFFSET>,
            GetNextTable: GetNextTable::<Identity, Impl, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, Impl, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, Impl, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVB_NIT as ::windows::core::Interface>::IID
    }
}
pub trait IDVB_RST_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>) -> ::windows::core::Result<()>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordTransportStreamId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordOriginalNetworkId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordServiceId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordEventId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordRunningStatus(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
}
impl ::windows::core::RuntimeName for IDVB_RST {}
impl IDVB_RST_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_RST_Impl, const OFFSET: isize>() -> IDVB_RST_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_RST_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_RST_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTransportStreamId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_RST_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordTransportStreamId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordOriginalNetworkId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_RST_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordOriginalNetworkId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_RST_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordServiceId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEventId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_RST_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordEventId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRunningStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_RST_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordRunningStatus(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordTransportStreamId: GetRecordTransportStreamId::<Identity, Impl, OFFSET>,
            GetRecordOriginalNetworkId: GetRecordOriginalNetworkId::<Identity, Impl, OFFSET>,
            GetRecordServiceId: GetRecordServiceId::<Identity, Impl, OFFSET>,
            GetRecordEventId: GetRecordEventId::<Identity, Impl, OFFSET>,
            GetRecordRunningStatus: GetRecordRunningStatus::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVB_RST as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IDVB_SDT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetTransportStreamId(&self) -> ::windows::core::Result<u16>;
    fn GetOriginalNetworkId(&self) -> ::windows::core::Result<u16>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordServiceId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordEITScheduleFlag(&self, dwrecordindex: u32) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn GetRecordEITPresentFollowingFlag(&self, dwrecordindex: u32) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn GetRecordRunningStatus(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordFreeCAMode(&self, dwrecordindex: u32) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn GetNextTable(&self) -> ::windows::core::Result<IDVB_SDT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn ConvertNextToCurrent(&self) -> ::windows::core::Result<()>;
    fn GetVersionHash(&self) -> ::windows::core::Result<u32>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDVB_SDT {}
#[cfg(feature = "Win32_Foundation")]
impl IDVB_SDT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>() -> IDVB_SDT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransportStreamId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTransportStreamId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalNetworkId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOriginalNetworkId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordServiceId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEITScheduleFlag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordEITScheduleFlag(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEITPresentFollowingFlag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordEITPresentFollowingFlag(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRunningStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordRunningStatus(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordFreeCAMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordFreeCAMode(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfDescriptors(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptorByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordDescriptorByTag(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForNextTable(::core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppsdt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNextTable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppsdt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForWhenCurrent(::core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConvertNextToCurrent().into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwversionhash: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionHash() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwversionhash, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetTransportStreamId: GetTransportStreamId::<Identity, Impl, OFFSET>,
            GetOriginalNetworkId: GetOriginalNetworkId::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordServiceId: GetRecordServiceId::<Identity, Impl, OFFSET>,
            GetRecordEITScheduleFlag: GetRecordEITScheduleFlag::<Identity, Impl, OFFSET>,
            GetRecordEITPresentFollowingFlag: GetRecordEITPresentFollowingFlag::<Identity, Impl, OFFSET>,
            GetRecordRunningStatus: GetRecordRunningStatus::<Identity, Impl, OFFSET>,
            GetRecordFreeCAMode: GetRecordFreeCAMode::<Identity, Impl, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, Impl, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, Impl, OFFSET>,
            GetNextTable: GetNextTable::<Identity, Impl, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, Impl, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, Impl, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVB_SDT as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IDVB_SIT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfTableDescriptors(&self) -> ::windows::core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordServiceId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordRunningStatus(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn GetNextTable(&self, dwtimeout: u32) -> ::windows::core::Result<IDVB_SIT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn ConvertNextToCurrent(&self) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDVB_SIT {}
#[cfg(feature = "Win32_Foundation")]
impl IDVB_SIT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>() -> IDVB_SIT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfTableDescriptors() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableDescriptorByIndex(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptorByTag(::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordServiceId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRunningStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordRunningStatus(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfDescriptors(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptorByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordDescriptorByTag(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForNextTable(::core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwtimeout: u32, ppsit: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNextTable(::core::mem::transmute_copy(&dwtimeout)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppsit, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForWhenCurrent(::core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_SIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConvertNextToCurrent().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, Impl, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordServiceId: GetRecordServiceId::<Identity, Impl, OFFSET>,
            GetRecordRunningStatus: GetRecordRunningStatus::<Identity, Impl, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, Impl, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, Impl, OFFSET>,
            GetNextTable: GetNextTable::<Identity, Impl, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, Impl, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVB_SIT as ::windows::core::Interface>::IID
    }
}
pub trait IDVB_ST_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>) -> ::windows::core::Result<()>;
    fn GetDataLength(&self) -> ::windows::core::Result<u16>;
    fn GetData(&self) -> ::windows::core::Result<*mut u8>;
}
impl ::windows::core::RuntimeName for IDVB_ST {}
impl IDVB_ST_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_ST_Impl, const OFFSET: isize>() -> IDVB_ST_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_ST_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist)).into()
        }
        unsafe extern "system" fn GetDataLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_ST_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDataLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_ST_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppdata: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetData() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdata, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetDataLength: GetDataLength::<Identity, Impl, OFFSET>,
            GetData: GetData::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVB_ST as ::windows::core::Interface>::IID
    }
}
pub trait IDVB_TDT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>) -> ::windows::core::Result<()>;
    fn GetUTCTime(&self) -> ::windows::core::Result<MPEG_DATE_AND_TIME>;
}
impl ::windows::core::RuntimeName for IDVB_TDT {}
impl IDVB_TDT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_TDT_Impl, const OFFSET: isize>() -> IDVB_TDT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_TDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist)).into()
        }
        unsafe extern "system" fn GetUTCTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_TDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmdtval: *mut MPEG_DATE_AND_TIME) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetUTCTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmdtval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetUTCTime: GetUTCTime::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVB_TDT as ::windows::core::Interface>::IID
    }
}
pub trait IDVB_TOT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>) -> ::windows::core::Result<()>;
    fn GetUTCTime(&self) -> ::windows::core::Result<MPEG_DATE_AND_TIME>;
    fn GetCountOfTableDescriptors(&self) -> ::windows::core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IDVB_TOT {}
impl IDVB_TOT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_TOT_Impl, const OFFSET: isize>() -> IDVB_TOT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_TOT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist)).into()
        }
        unsafe extern "system" fn GetUTCTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_TOT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmdtval: *mut MPEG_DATE_AND_TIME) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetUTCTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmdtval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_TOT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfTableDescriptors() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_TOT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableDescriptorByIndex(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVB_TOT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptorByTag(::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetUTCTime: GetUTCTime::<Identity, Impl, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, Impl, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVB_TOT 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<Impl = Impl>, Impl: IDVEnc_Impl, const OFFSET: isize>() -> IDVEnc_Vtbl {
        unsafe extern "system" fn get_IFormatResolution<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVEnc_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_IFormatResolution(::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<Impl = Impl>, Impl: IDVEnc_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, videoformat: i32, dvformat: i32, resolution: i32, fdvinfo: u8, sdvinfo: *const DVINFO) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_IFormatResolution(::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, Impl, OFFSET>,
            put_IFormatResolution: put_IFormatResolution::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDVEnc as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IDVRGB219_Impl: Sized {
    fn SetRGB219(&self, bstate: super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDVRGB219 {}
#[cfg(feature = "Win32_Foundation")]
impl IDVRGB219_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVRGB219_Impl, const OFFSET: isize>() -> IDVRGB219_Vtbl {
        unsafe extern "system" fn SetRGB219<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVRGB219_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bstate: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRGB219(::core::mem::transmute_copy(&bstate)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetRGB219: SetRGB219::<Identity, Impl, 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<Impl = Impl>, Impl: IDVSplitter_Impl, const OFFSET: isize>() -> IDVSplitter_Vtbl {
        unsafe extern "system" fn DiscardAlternateVideoFrames<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDVSplitter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ndiscard: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DiscardAlternateVideoFrames(::core::mem::transmute_copy(&ndiscard)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            DiscardAlternateVideoFrames: DiscardAlternateVideoFrames::<Identity, Impl, 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<Impl = Impl>, Impl: IDecimateVideoImage_Impl, const OFFSET: isize>() -> IDecimateVideoImage_Vtbl {
        unsafe extern "system" fn SetDecimationImageSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDecimateVideoImage_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lwidth: i32, lheight: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDecimationImageSize(::core::mem::transmute_copy(&lwidth), ::core::mem::transmute_copy(&lheight)).into()
        }
        unsafe extern "system" fn ResetDecimationImageSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDecimateVideoImage_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ResetDecimationImageSize().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetDecimationImageSize: SetDecimationImageSize::<Identity, Impl, OFFSET>,
            ResetDecimationImageSize: ResetDecimationImageSize::<Identity, Impl, 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<Impl = Impl>, Impl: IDeferredCommand_Impl, const OFFSET: isize>() -> IDeferredCommand_Vtbl {
        unsafe extern "system" fn Cancel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDeferredCommand_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Cancel().into()
        }
        unsafe extern "system" fn Confidence<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDeferredCommand_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pconfidence: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Confidence() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pconfidence, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Postpone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDeferredCommand_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newtime: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Postpone(::core::mem::transmute_copy(&newtime)).into()
        }
        unsafe extern "system" fn GetHResult<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDeferredCommand_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phrresult: *mut ::windows::core::HRESULT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetHResult() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(phrresult, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Cancel: Cancel::<Identity, Impl, OFFSET>,
            Confidence: Confidence::<Identity, Impl, OFFSET>,
            Postpone: Postpone::<Identity, Impl, OFFSET>,
            GetHResult: GetHResult::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDeferredCommand as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDigitalCableLocator_Impl: Sized + IATSCLocator2_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IDigitalCableLocator {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDigitalCableLocator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableLocator_Impl, const OFFSET: isize>() -> IDigitalCableLocator_Vtbl {
        Self { base__: IATSCLocator2_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDigitalCableLocator as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ILocator as ::windows::core::Interface>::IID || iid == &<IDigitalLocator as ::windows::core::Interface>::IID || iid == &<IATSCLocator as ::windows::core::Interface>::IID || iid == &<IATSCLocator2 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDigitalCableTuneRequest_Impl: Sized + IATSCChannelTuneRequest_Impl {
    fn MajorChannel(&self) -> ::windows::core::Result<i32>;
    fn SetMajorChannel(&self, majorchannel: i32) -> ::windows::core::Result<()>;
    fn SourceID(&self) -> ::windows::core::Result<i32>;
    fn SetSourceID(&self, sourceid: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IDigitalCableTuneRequest {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDigitalCableTuneRequest_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableTuneRequest_Impl, const OFFSET: isize>() -> IDigitalCableTuneRequest_Vtbl {
        unsafe extern "system" fn MajorChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmajorchannel: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MajorChannel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmajorchannel, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMajorChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, majorchannel: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMajorChannel(::core::mem::transmute_copy(&majorchannel)).into()
        }
        unsafe extern "system" fn SourceID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psourceid: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SourceID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(psourceid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourceID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableTuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sourceid: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSourceID(::core::mem::transmute_copy(&sourceid)).into()
        }
        Self {
            base__: IATSCChannelTuneRequest_Vtbl::new::<Identity, Impl, OFFSET>(),
            MajorChannel: MajorChannel::<Identity, Impl, OFFSET>,
            SetMajorChannel: SetMajorChannel::<Identity, Impl, OFFSET>,
            SourceID: SourceID::<Identity, Impl, OFFSET>,
            SetSourceID: SetSourceID::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDigitalCableTuneRequest as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuneRequest as ::windows::core::Interface>::IID || iid == &<IChannelTuneRequest as ::windows::core::Interface>::IID || iid == &<IATSCChannelTuneRequest as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDigitalCableTuningSpace_Impl: Sized + IATSCTuningSpace_Impl {
    fn MinMajorChannel(&self) -> ::windows::core::Result<i32>;
    fn SetMinMajorChannel(&self, newminmajorchannelval: i32) -> ::windows::core::Result<()>;
    fn MaxMajorChannel(&self) -> ::windows::core::Result<i32>;
    fn SetMaxMajorChannel(&self, newmaxmajorchannelval: i32) -> ::windows::core::Result<()>;
    fn MinSourceID(&self) -> ::windows::core::Result<i32>;
    fn SetMinSourceID(&self, newminsourceidval: i32) -> ::windows::core::Result<()>;
    fn MaxSourceID(&self) -> ::windows::core::Result<i32>;
    fn SetMaxSourceID(&self, newmaxsourceidval: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IDigitalCableTuningSpace {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDigitalCableTuningSpace_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableTuningSpace_Impl, const OFFSET: isize>() -> IDigitalCableTuningSpace_Vtbl {
        unsafe extern "system" fn MinMajorChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, minmajorchannelval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MinMajorChannel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(minmajorchannelval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMinMajorChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newminmajorchannelval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMinMajorChannel(::core::mem::transmute_copy(&newminmajorchannelval)).into()
        }
        unsafe extern "system" fn MaxMajorChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, maxmajorchannelval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MaxMajorChannel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(maxmajorchannelval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxMajorChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newmaxmajorchannelval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMaxMajorChannel(::core::mem::transmute_copy(&newmaxmajorchannelval)).into()
        }
        unsafe extern "system" fn MinSourceID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, minsourceidval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MinSourceID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(minsourceidval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMinSourceID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newminsourceidval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMinSourceID(::core::mem::transmute_copy(&newminsourceidval)).into()
        }
        unsafe extern "system" fn MaxSourceID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, maxsourceidval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MaxSourceID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(maxsourceidval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxSourceID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalCableTuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newmaxsourceidval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMaxSourceID(::core::mem::transmute_copy(&newmaxsourceidval)).into()
        }
        Self {
            base__: IATSCTuningSpace_Vtbl::new::<Identity, Impl, OFFSET>(),
            MinMajorChannel: MinMajorChannel::<Identity, Impl, OFFSET>,
            SetMinMajorChannel: SetMinMajorChannel::<Identity, Impl, OFFSET>,
            MaxMajorChannel: MaxMajorChannel::<Identity, Impl, OFFSET>,
            SetMaxMajorChannel: SetMaxMajorChannel::<Identity, Impl, OFFSET>,
            MinSourceID: MinSourceID::<Identity, Impl, OFFSET>,
            SetMinSourceID: SetMinSourceID::<Identity, Impl, OFFSET>,
            MaxSourceID: MaxSourceID::<Identity, Impl, OFFSET>,
            SetMaxSourceID: SetMaxSourceID::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDigitalCableTuningSpace as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuningSpace as ::windows::core::Interface>::IID || iid == &<IAnalogTVTuningSpace as ::windows::core::Interface>::IID || iid == &<IATSCTuningSpace as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDigitalLocator_Impl: Sized + ILocator_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IDigitalLocator {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDigitalLocator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDigitalLocator_Impl, const OFFSET: isize>() -> IDigitalLocator_Vtbl {
        Self { base__: ILocator_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDigitalLocator as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ILocator as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
pub trait IDirectDrawMediaSample_Impl: Sized {
    fn GetSurfaceAndReleaseLock(&self, ppdirectdrawsurface: *mut ::core::option::Option<super::super::Graphics::DirectDraw::IDirectDrawSurface>, prect: *mut super::super::Foundation::RECT) -> ::windows::core::Result<()>;
    fn LockMediaSamplePointer(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl ::windows::core::RuntimeName for IDirectDrawMediaSample {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl IDirectDrawMediaSample_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawMediaSample_Impl, const OFFSET: isize>() -> IDirectDrawMediaSample_Vtbl {
        unsafe extern "system" fn GetSurfaceAndReleaseLock<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawMediaSample_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetSurfaceAndReleaseLock(::core::mem::transmute_copy(&ppdirectdrawsurface), ::core::mem::transmute_copy(&prect)).into()
        }
        unsafe extern "system" fn LockMediaSamplePointer<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.LockMediaSamplePointer().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSurfaceAndReleaseLock: GetSurfaceAndReleaseLock::<Identity, Impl, OFFSET>,
            LockMediaSamplePointer: LockMediaSamplePointer::<Identity, Impl, 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<Impl = Impl>, Impl: IDirectDrawMediaSampleAllocator_Impl, const OFFSET: isize>() -> IDirectDrawMediaSampleAllocator_Vtbl {
        unsafe extern "system" fn GetDirectDraw<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawMediaSampleAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppdirectdraw: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDirectDraw() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdirectdraw, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetDirectDraw: GetDirectDraw::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDirectDrawMediaSampleAllocator as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
pub trait IDirectDrawMediaStream_Impl: Sized + IMediaStream_Impl {
    fn GetFormat(&self, pddsdcurrent: *mut super::super::Graphics::DirectDraw::DDSURFACEDESC, ppdirectdrawpalette: *mut ::core::option::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: &::core::option::Option<super::super::Graphics::DirectDraw::IDirectDrawPalette>) -> ::windows::core::Result<()>;
    fn GetDirectDraw(&self) -> ::windows::core::Result<super::super::Graphics::DirectDraw::IDirectDraw>;
    fn SetDirectDraw(&self, pdirectdraw: &::core::option::Option<super::super::Graphics::DirectDraw::IDirectDraw>) -> ::windows::core::Result<()>;
    fn CreateSample(&self, psurface: &::core::option::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(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl ::windows::core::RuntimeName for IDirectDrawMediaStream {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl IDirectDrawMediaStream_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawMediaStream_Impl, const OFFSET: isize>() -> IDirectDrawMediaStream_Vtbl {
        unsafe extern "system" fn GetFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawMediaStream_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetFormat(::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<Impl = Impl>, Impl: IDirectDrawMediaStream_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFormat(::core::mem::transmute_copy(&pddsurfacedesc), ::core::mem::transmute(&pdirectdrawpalette)).into()
        }
        unsafe extern "system" fn GetDirectDraw<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppdirectdraw: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDirectDraw() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdirectdraw, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDirectDraw<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdirectdraw: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDirectDraw(::core::mem::transmute(&pdirectdraw)).into()
        }
        unsafe extern "system" fn CreateSample<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawMediaStream_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CreateSample(::core::mem::transmute(&psurface), ::core::mem::transmute_copy(&prect), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppsample, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTimePerFrame<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pframetime: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTimePerFrame() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pframetime, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMediaStream_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetFormat: GetFormat::<Identity, Impl, OFFSET>,
            SetFormat: SetFormat::<Identity, Impl, OFFSET>,
            GetDirectDraw: GetDirectDraw::<Identity, Impl, OFFSET>,
            SetDirectDraw: SetDirectDraw::<Identity, Impl, OFFSET>,
            CreateSample: CreateSample::<Identity, Impl, OFFSET>,
            GetTimePerFrame: GetTimePerFrame::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDirectDrawMediaStream as ::windows::core::Interface>::IID || iid == &<IMediaStream as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
pub trait IDirectDrawStreamSample_Impl: Sized + IStreamSample_Impl {
    fn GetSurface(&self, ppdirectdrawsurface: *mut ::core::option::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(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl ::windows::core::RuntimeName for IDirectDrawStreamSample {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl IDirectDrawStreamSample_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawStreamSample_Impl, const OFFSET: isize>() -> IDirectDrawStreamSample_Vtbl {
        unsafe extern "system" fn GetSurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawStreamSample_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetSurface(::core::mem::transmute_copy(&ppdirectdrawsurface), ::core::mem::transmute_copy(&prect)).into()
        }
        unsafe extern "system" fn SetRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawStreamSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prect: *const super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRect(::core::mem::transmute_copy(&prect)).into()
        }
        Self {
            base__: IStreamSample_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetSurface: GetSurface::<Identity, Impl, OFFSET>,
            SetRect: SetRect::<Identity, Impl, 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) -> ::windows::core::Result<super::super::Graphics::DirectDraw::DDCAPS_DX7>;
    fn GetEmulatedCaps(&self) -> ::windows::core::Result<super::super::Graphics::DirectDraw::DDCAPS_DX7>;
    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: &::core::option::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<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>() -> IDirectDrawVideo_Vtbl {
        unsafe extern "system" fn GetSwitches<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pswitches: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSwitches() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pswitches, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSwitches<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, switches: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSwitches(::core::mem::transmute_copy(&switches)).into()
        }
        unsafe extern "system" fn GetCaps<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcaps: *mut super::super::Graphics::DirectDraw::DDCAPS_DX7) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCaps() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcaps, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEmulatedCaps<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcaps: *mut super::super::Graphics::DirectDraw::DDCAPS_DX7) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEmulatedCaps() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcaps, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSurfaceDesc<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psurfacedesc: *mut super::super::Graphics::DirectDraw::DDSURFACEDESC) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetSurfaceDesc(::core::mem::transmute_copy(&psurfacedesc)).into()
        }
        unsafe extern "system" fn GetFourCCCodes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcount: *mut u32, pcodes: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetFourCCCodes(::core::mem::transmute_copy(&pcount), ::core::mem::transmute_copy(&pcodes)).into()
        }
        unsafe extern "system" fn SetDirectDraw<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdirectdraw: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDirectDraw(::core::mem::transmute(&pdirectdraw)).into()
        }
        unsafe extern "system" fn GetDirectDraw<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppdirectdraw: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDirectDraw() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdirectdraw, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSurfaceType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psurfacetype: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSurfaceType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(psurfacetype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefault<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDefault().into()
        }
        unsafe extern "system" fn UseScanLine<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, usescanline: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UseScanLine(::core::mem::transmute_copy(&usescanline)).into()
        }
        unsafe extern "system" fn CanUseScanLine<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, usescanline: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CanUseScanLine() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(usescanline, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn UseOverlayStretch<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, useoverlaystretch: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UseOverlayStretch(::core::mem::transmute_copy(&useoverlaystretch)).into()
        }
        unsafe extern "system" fn CanUseOverlayStretch<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, useoverlaystretch: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CanUseOverlayStretch() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(useoverlaystretch, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn UseWhenFullScreen<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, usewhenfullscreen: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UseWhenFullScreen(::core::mem::transmute_copy(&usewhenfullscreen)).into()
        }
        unsafe extern "system" fn WillUseFullScreen<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDirectDrawVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, usewhenfullscreen: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.WillUseFullScreen() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(usewhenfullscreen, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSwitches: GetSwitches::<Identity, Impl, OFFSET>,
            SetSwitches: SetSwitches::<Identity, Impl, OFFSET>,
            GetCaps: GetCaps::<Identity, Impl, OFFSET>,
            GetEmulatedCaps: GetEmulatedCaps::<Identity, Impl, OFFSET>,
            GetSurfaceDesc: GetSurfaceDesc::<Identity, Impl, OFFSET>,
            GetFourCCCodes: GetFourCCCodes::<Identity, Impl, OFFSET>,
            SetDirectDraw: SetDirectDraw::<Identity, Impl, OFFSET>,
            GetDirectDraw: GetDirectDraw::<Identity, Impl, OFFSET>,
            GetSurfaceType: GetSurfaceType::<Identity, Impl, OFFSET>,
            SetDefault: SetDefault::<Identity, Impl, OFFSET>,
            UseScanLine: UseScanLine::<Identity, Impl, OFFSET>,
            CanUseScanLine: CanUseScanLine::<Identity, Impl, OFFSET>,
            UseOverlayStretch: UseOverlayStretch::<Identity, Impl, OFFSET>,
            CanUseOverlayStretch: CanUseOverlayStretch::<Identity, Impl, OFFSET>,
            UseWhenFullScreen: UseWhenFullScreen::<Identity, Impl, OFFSET>,
            WillUseFullScreen: WillUseFullScreen::<Identity, Impl, 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: &::core::option::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<Impl = Impl>, Impl: IDistributorNotify_Impl, const OFFSET: isize>() -> IDistributorNotify_Vtbl {
        unsafe extern "system" fn Stop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDistributorNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Stop().into()
        }
        unsafe extern "system" fn Pause<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDistributorNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Pause().into()
        }
        unsafe extern "system" fn Run<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDistributorNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tstart: i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Run(::core::mem::transmute_copy(&tstart)).into()
        }
        unsafe extern "system" fn SetSyncSource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDistributorNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pclock: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSyncSource(::core::mem::transmute(&pclock)).into()
        }
        unsafe extern "system" fn NotifyGraphChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDistributorNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NotifyGraphChange().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Stop: Stop::<Identity, Impl, OFFSET>,
            Pause: Pause::<Identity, Impl, OFFSET>,
            Run: Run::<Identity, Impl, OFFSET>,
            SetSyncSource: SetSyncSource::<Identity, Impl, OFFSET>,
            NotifyGraphChange: NotifyGraphChange::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDistributorNotify as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IDrawVideoImage {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl IDrawVideoImage_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDrawVideoImage_Impl, const OFFSET: isize>() -> IDrawVideoImage_Vtbl {
        unsafe extern "system" fn DrawVideoImageBegin<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDrawVideoImage_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DrawVideoImageBegin().into()
        }
        unsafe extern "system" fn DrawVideoImageEnd<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDrawVideoImage_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DrawVideoImageEnd().into()
        }
        unsafe extern "system" fn DrawVideoImageDraw<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDrawVideoImage_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DrawVideoImageDraw(::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, Impl, OFFSET>,
            DrawVideoImageEnd: DrawVideoImageEnd::<Identity, Impl, OFFSET>,
            DrawVideoImageDraw: DrawVideoImageDraw::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDrawVideoImage as ::windows::core::Interface>::IID
    }
}
pub trait IDvbCableDeliverySystemDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetFrequency(&self) -> ::windows::core::Result<u32>;
    fn GetFECOuter(&self) -> ::windows::core::Result<u8>;
    fn GetModulation(&self) -> ::windows::core::Result<u8>;
    fn GetSymbolRate(&self) -> ::windows::core::Result<u32>;
    fn GetFECInner(&self) -> ::windows::core::Result<u8>;
}
impl ::windows::core::RuntimeName for IDvbCableDeliverySystemDescriptor {}
impl IDvbCableDeliverySystemDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbCableDeliverySystemDescriptor_Impl, const OFFSET: isize>() -> IDvbCableDeliverySystemDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbCableDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbCableDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbCableDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFrequency() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFECOuter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbCableDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFECOuter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetModulation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbCableDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetModulation() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSymbolRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbCableDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSymbolRate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFECInner<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbCableDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFECInner() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetFrequency: GetFrequency::<Identity, Impl, OFFSET>,
            GetFECOuter: GetFECOuter::<Identity, Impl, OFFSET>,
            GetModulation: GetModulation::<Identity, Impl, OFFSET>,
            GetSymbolRate: GetSymbolRate::<Identity, Impl, OFFSET>,
            GetFECInner: GetFECInner::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbCableDeliverySystemDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbComponentDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetStreamContent(&self) -> ::windows::core::Result<u8>;
    fn GetComponentType(&self) -> ::windows::core::Result<u8>;
    fn GetComponentTag(&self) -> ::windows::core::Result<u8>;
    fn GetLanguageCode(&self, pszcode: *mut u8) -> ::windows::core::Result<()>;
    fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
}
impl ::windows::core::RuntimeName for IDvbComponentDescriptor {}
impl IDvbComponentDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbComponentDescriptor_Impl, const OFFSET: isize>() -> IDvbComponentDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStreamContent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStreamContent() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComponentType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetComponentType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComponentTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetComponentTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLanguageCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszcode: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLanguageCode(::core::mem::transmute_copy(&pszcode)).into()
        }
        unsafe extern "system" fn GetTextW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrtext: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTextW(::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrtext, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetStreamContent: GetStreamContent::<Identity, Impl, OFFSET>,
            GetComponentType: GetComponentType::<Identity, Impl, OFFSET>,
            GetComponentTag: GetComponentTag::<Identity, Impl, OFFSET>,
            GetLanguageCode: GetLanguageCode::<Identity, Impl, OFFSET>,
            GetTextW: GetTextW::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbComponentDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbContentDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordContentNibbles(&self, brecordindex: u8, pbvallevel1: *mut u8, pbvallevel2: *mut u8) -> ::windows::core::Result<()>;
    fn GetRecordUserNibbles(&self, brecordindex: u8, pbval1: *mut u8, pbval2: *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IDvbContentDescriptor {}
impl IDvbContentDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbContentDescriptor_Impl, const OFFSET: isize>() -> IDvbContentDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordContentNibbles<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbvallevel1: *mut u8, pbvallevel2: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordContentNibbles(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&pbvallevel1), ::core::mem::transmute_copy(&pbvallevel2)).into()
        }
        unsafe extern "system" fn GetRecordUserNibbles<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval1: *mut u8, pbval2: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordUserNibbles(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&pbval1), ::core::mem::transmute_copy(&pbval2)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordContentNibbles: GetRecordContentNibbles::<Identity, Impl, OFFSET>,
            GetRecordUserNibbles: GetRecordUserNibbles::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbContentDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbContentIdentifierDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordCrid(&self, brecordindex: u8, pbtype: *mut u8, pblocation: *mut u8, pblength: *mut u8, ppbbytes: *mut *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IDvbContentIdentifierDescriptor {}
impl IDvbContentIdentifierDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbContentIdentifierDescriptor_Impl, const OFFSET: isize>() -> IDvbContentIdentifierDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbContentIdentifierDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbContentIdentifierDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbContentIdentifierDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCrid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbContentIdentifierDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbtype: *mut u8, pblocation: *mut u8, pblength: *mut u8, ppbbytes: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordCrid(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&pbtype), ::core::mem::transmute_copy(&pblocation), ::core::mem::transmute_copy(&pblength), ::core::mem::transmute_copy(&ppbbytes)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordCrid: GetRecordCrid::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbContentIdentifierDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbDataBroadcastDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetDataBroadcastID(&self) -> ::windows::core::Result<u16>;
    fn GetComponentTag(&self) -> ::windows::core::Result<u8>;
    fn GetSelectorLength(&self) -> ::windows::core::Result<u8>;
    fn GetSelectorBytes(&self, pblen: *mut u8, pbval: *mut u8) -> ::windows::core::Result<()>;
    fn GetLangID(&self) -> ::windows::core::Result<u32>;
    fn GetTextLength(&self) -> ::windows::core::Result<u8>;
    fn GetText(&self, pblen: *mut u8, pbval: *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IDvbDataBroadcastDescriptor {}
impl IDvbDataBroadcastDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastDescriptor_Impl, const OFFSET: isize>() -> IDvbDataBroadcastDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataBroadcastID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDataBroadcastID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComponentTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetComponentTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSelectorLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSelectorLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSelectorBytes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pblen: *mut u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetSelectorBytes(::core::mem::transmute_copy(&pblen), ::core::mem::transmute_copy(&pbval)).into()
        }
        unsafe extern "system" fn GetLangID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLangID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTextLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTextLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetText<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pblen: *mut u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetText(::core::mem::transmute_copy(&pblen), ::core::mem::transmute_copy(&pbval)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetDataBroadcastID: GetDataBroadcastID::<Identity, Impl, OFFSET>,
            GetComponentTag: GetComponentTag::<Identity, Impl, OFFSET>,
            GetSelectorLength: GetSelectorLength::<Identity, Impl, OFFSET>,
            GetSelectorBytes: GetSelectorBytes::<Identity, Impl, OFFSET>,
            GetLangID: GetLangID::<Identity, Impl, OFFSET>,
            GetTextLength: GetTextLength::<Identity, Impl, OFFSET>,
            GetText: GetText::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbDataBroadcastDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbDataBroadcastIDDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetDataBroadcastID(&self) -> ::windows::core::Result<u16>;
    fn GetIDSelectorBytes(&self, pblen: *mut u8, pbval: *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IDvbDataBroadcastIDDescriptor {}
impl IDvbDataBroadcastIDDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastIDDescriptor_Impl, const OFFSET: isize>() -> IDvbDataBroadcastIDDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastIDDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastIDDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataBroadcastID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastIDDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDataBroadcastID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetIDSelectorBytes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDataBroadcastIDDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pblen: *mut u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetIDSelectorBytes(::core::mem::transmute_copy(&pblen), ::core::mem::transmute_copy(&pbval)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetDataBroadcastID: GetDataBroadcastID::<Identity, Impl, OFFSET>,
            GetIDSelectorBytes: GetIDSelectorBytes::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbDataBroadcastIDDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbDefaultAuthorityDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetDefaultAuthority(&self, pblength: *mut u8, ppbbytes: *mut *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IDvbDefaultAuthorityDescriptor {}
impl IDvbDefaultAuthorityDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDefaultAuthorityDescriptor_Impl, const OFFSET: isize>() -> IDvbDefaultAuthorityDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDefaultAuthorityDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDefaultAuthorityDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDefaultAuthority<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbDefaultAuthorityDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pblength: *mut u8, ppbbytes: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDefaultAuthority(::core::mem::transmute_copy(&pblength), ::core::mem::transmute_copy(&ppbbytes)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetDefaultAuthority: GetDefaultAuthority::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbDefaultAuthorityDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbExtendedEventDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetDescriptorNumber(&self) -> ::windows::core::Result<u8>;
    fn GetLastDescriptorNumber(&self) -> ::windows::core::Result<u8>;
    fn GetLanguageCode(&self, pszcode: *mut u8) -> ::windows::core::Result<()>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordItemW(&self, brecordindex: u8, convmode: DVB_STRCONV_MODE, pbstrdesc: *mut ::windows::core::BSTR, pbstritem: *mut ::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn GetConcatenatedItemW(&self, pfollowingdescriptor: &::core::option::Option<IDvbExtendedEventDescriptor>, convmode: DVB_STRCONV_MODE, pbstrdesc: *mut ::windows::core::BSTR, pbstritem: *mut ::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
    fn GetConcatenatedTextW(&self, followingdescriptor: &::core::option::Option<IDvbExtendedEventDescriptor>, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
    fn GetRecordItemRawBytes(&self, brecordindex: u8, ppbrawitem: *mut *mut u8, pbitemlength: *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IDvbExtendedEventDescriptor {}
impl IDvbExtendedEventDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbExtendedEventDescriptor_Impl, const OFFSET: isize>() -> IDvbExtendedEventDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbExtendedEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbExtendedEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDescriptorNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbExtendedEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDescriptorNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastDescriptorNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbExtendedEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLastDescriptorNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLanguageCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbExtendedEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszcode: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLanguageCode(::core::mem::transmute_copy(&pszcode)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbExtendedEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordItemW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbExtendedEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, convmode: DVB_STRCONV_MODE, pbstrdesc: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>, pbstritem: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordItemW(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&convmode), ::core::mem::transmute_copy(&pbstrdesc), ::core::mem::transmute_copy(&pbstritem)).into()
        }
        unsafe extern "system" fn GetConcatenatedItemW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbExtendedEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfollowingdescriptor: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrdesc: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>, pbstritem: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetConcatenatedItemW(::core::mem::transmute(&pfollowingdescriptor), ::core::mem::transmute_copy(&convmode), ::core::mem::transmute_copy(&pbstrdesc), ::core::mem::transmute_copy(&pbstritem)).into()
        }
        unsafe extern "system" fn GetTextW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbExtendedEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrtext: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTextW(::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrtext, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetConcatenatedTextW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbExtendedEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, followingdescriptor: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrtext: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetConcatenatedTextW(::core::mem::transmute(&followingdescriptor), ::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrtext, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordItemRawBytes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbExtendedEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, ppbrawitem: *mut *mut u8, pbitemlength: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordItemRawBytes(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&ppbrawitem), ::core::mem::transmute_copy(&pbitemlength)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetDescriptorNumber: GetDescriptorNumber::<Identity, Impl, OFFSET>,
            GetLastDescriptorNumber: GetLastDescriptorNumber::<Identity, Impl, OFFSET>,
            GetLanguageCode: GetLanguageCode::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordItemW: GetRecordItemW::<Identity, Impl, OFFSET>,
            GetConcatenatedItemW: GetConcatenatedItemW::<Identity, Impl, OFFSET>,
            GetTextW: GetTextW::<Identity, Impl, OFFSET>,
            GetConcatenatedTextW: GetConcatenatedTextW::<Identity, Impl, OFFSET>,
            GetRecordItemRawBytes: GetRecordItemRawBytes::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbExtendedEventDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbFrequencyListDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCodingType(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordCentreFrequency(&self, brecordindex: u8) -> ::windows::core::Result<u32>;
}
impl ::windows::core::RuntimeName for IDvbFrequencyListDescriptor {}
impl IDvbFrequencyListDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbFrequencyListDescriptor_Impl, const OFFSET: isize>() -> IDvbFrequencyListDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbFrequencyListDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbFrequencyListDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCodingType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbFrequencyListDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCodingType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbFrequencyListDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCentreFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbFrequencyListDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCentreFrequency(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCodingType: GetCodingType::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordCentreFrequency: GetRecordCentreFrequency::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbFrequencyListDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbHDSimulcastLogicalChannelDescriptor_Impl: Sized + IDvbLogicalChannelDescriptor2_Impl {}
impl ::windows::core::RuntimeName for IDvbHDSimulcastLogicalChannelDescriptor {}
impl IDvbHDSimulcastLogicalChannelDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbHDSimulcastLogicalChannelDescriptor_Impl, const OFFSET: isize>() -> IDvbHDSimulcastLogicalChannelDescriptor_Vtbl {
        Self { base__: IDvbLogicalChannelDescriptor2_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbHDSimulcastLogicalChannelDescriptor as ::windows::core::Interface>::IID || iid == &<IDvbLogicalChannelDescriptor as ::windows::core::Interface>::IID || iid == &<IDvbLogicalChannelDescriptor2 as ::windows::core::Interface>::IID
    }
}
pub trait IDvbLinkageDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetTSId(&self) -> ::windows::core::Result<u16>;
    fn GetONId(&self) -> ::windows::core::Result<u16>;
    fn GetServiceId(&self) -> ::windows::core::Result<u16>;
    fn GetLinkageType(&self) -> ::windows::core::Result<u8>;
    fn GetPrivateDataLength(&self) -> ::windows::core::Result<u8>;
    fn GetPrivateData(&self, pblen: *mut u8, pbdata: *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IDvbLinkageDescriptor {}
impl IDvbLinkageDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLinkageDescriptor_Impl, const OFFSET: isize>() -> IDvbLinkageDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLinkageDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLinkageDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTSId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLinkageDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTSId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetONId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLinkageDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetONId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLinkageDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServiceId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLinkageType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLinkageDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLinkageType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPrivateDataLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLinkageDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPrivateDataLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPrivateData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLinkageDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pblen: *mut u8, pbdata: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPrivateData(::core::mem::transmute_copy(&pblen), ::core::mem::transmute_copy(&pbdata)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetTSId: GetTSId::<Identity, Impl, OFFSET>,
            GetONId: GetONId::<Identity, Impl, OFFSET>,
            GetServiceId: GetServiceId::<Identity, Impl, OFFSET>,
            GetLinkageType: GetLinkageType::<Identity, Impl, OFFSET>,
            GetPrivateDataLength: GetPrivateDataLength::<Identity, Impl, OFFSET>,
            GetPrivateData: GetPrivateData::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbLinkageDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbLogicalChannel2Descriptor_Impl: Sized + IDvbLogicalChannelDescriptor2_Impl {
    fn GetCountOfLists(&self) -> ::windows::core::Result<u8>;
    fn GetListId(&self, blistindex: u8) -> ::windows::core::Result<u8>;
    fn GetListNameW(&self, blistindex: u8, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
    fn GetListCountryCode(&self, blistindex: u8, pszcode: *mut u8) -> ::windows::core::Result<()>;
    fn GetListCountOfRecords(&self, bchannellistindex: u8) -> ::windows::core::Result<u8>;
    fn GetListRecordServiceId(&self, blistindex: u8, brecordindex: u8) -> ::windows::core::Result<u16>;
    fn GetListRecordLogicalChannelNumber(&self, blistindex: u8, brecordindex: u8) -> ::windows::core::Result<u16>;
    fn GetListRecordLogicalChannelAndVisibility(&self, blistindex: u8, brecordindex: u8) -> ::windows::core::Result<u16>;
}
impl ::windows::core::RuntimeName for IDvbLogicalChannel2Descriptor {}
impl IDvbLogicalChannel2Descriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannel2Descriptor_Impl, const OFFSET: isize>() -> IDvbLogicalChannel2Descriptor_Vtbl {
        unsafe extern "system" fn GetCountOfLists<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannel2Descriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfLists() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetListId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannel2Descriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, blistindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetListId(::core::mem::transmute_copy(&blistindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetListNameW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannel2Descriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, blistindex: u8, convmode: DVB_STRCONV_MODE, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetListNameW(::core::mem::transmute_copy(&blistindex), ::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetListCountryCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannel2Descriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, blistindex: u8, pszcode: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetListCountryCode(::core::mem::transmute_copy(&blistindex), ::core::mem::transmute_copy(&pszcode)).into()
        }
        unsafe extern "system" fn GetListCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannel2Descriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bchannellistindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetListCountOfRecords(::core::mem::transmute_copy(&bchannellistindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetListRecordServiceId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannel2Descriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, blistindex: u8, brecordindex: u8, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetListRecordServiceId(::core::mem::transmute_copy(&blistindex), ::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetListRecordLogicalChannelNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannel2Descriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, blistindex: u8, brecordindex: u8, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetListRecordLogicalChannelNumber(::core::mem::transmute_copy(&blistindex), ::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetListRecordLogicalChannelAndVisibility<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannel2Descriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, blistindex: u8, brecordindex: u8, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetListRecordLogicalChannelAndVisibility(::core::mem::transmute_copy(&blistindex), ::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IDvbLogicalChannelDescriptor2_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetCountOfLists: GetCountOfLists::<Identity, Impl, OFFSET>,
            GetListId: GetListId::<Identity, Impl, OFFSET>,
            GetListNameW: GetListNameW::<Identity, Impl, OFFSET>,
            GetListCountryCode: GetListCountryCode::<Identity, Impl, OFFSET>,
            GetListCountOfRecords: GetListCountOfRecords::<Identity, Impl, OFFSET>,
            GetListRecordServiceId: GetListRecordServiceId::<Identity, Impl, OFFSET>,
            GetListRecordLogicalChannelNumber: GetListRecordLogicalChannelNumber::<Identity, Impl, OFFSET>,
            GetListRecordLogicalChannelAndVisibility: GetListRecordLogicalChannelAndVisibility::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbLogicalChannel2Descriptor as ::windows::core::Interface>::IID || iid == &<IDvbLogicalChannelDescriptor as ::windows::core::Interface>::IID || iid == &<IDvbLogicalChannelDescriptor2 as ::windows::core::Interface>::IID
    }
}
pub trait IDvbLogicalChannelDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordServiceId(&self, brecordindex: u8) -> ::windows::core::Result<u16>;
    fn GetRecordLogicalChannelNumber(&self, brecordindex: u8) -> ::windows::core::Result<u16>;
}
impl ::windows::core::RuntimeName for IDvbLogicalChannelDescriptor {}
impl IDvbLogicalChannelDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannelDescriptor_Impl, const OFFSET: isize>() -> IDvbLogicalChannelDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannelDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannelDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannelDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannelDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordServiceId(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordLogicalChannelNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannelDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordLogicalChannelNumber(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordServiceId: GetRecordServiceId::<Identity, Impl, OFFSET>,
            GetRecordLogicalChannelNumber: GetRecordLogicalChannelNumber::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbLogicalChannelDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbLogicalChannelDescriptor2_Impl: Sized + IDvbLogicalChannelDescriptor_Impl {
    fn GetRecordLogicalChannelAndVisibility(&self, brecordindex: u8) -> ::windows::core::Result<u16>;
}
impl ::windows::core::RuntimeName for IDvbLogicalChannelDescriptor2 {}
impl IDvbLogicalChannelDescriptor2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannelDescriptor2_Impl, const OFFSET: isize>() -> IDvbLogicalChannelDescriptor2_Vtbl {
        unsafe extern "system" fn GetRecordLogicalChannelAndVisibility<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbLogicalChannelDescriptor2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordLogicalChannelAndVisibility(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IDvbLogicalChannelDescriptor_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetRecordLogicalChannelAndVisibility: GetRecordLogicalChannelAndVisibility::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbLogicalChannelDescriptor2 as ::windows::core::Interface>::IID || iid == &<IDvbLogicalChannelDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbMultilingualServiceNameDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordLangId(&self, brecordindex: u8) -> ::windows::core::Result<u32>;
    fn GetRecordServiceProviderNameW(&self, brecordindex: u8, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
    fn GetRecordServiceNameW(&self, brecordindex: u8, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
}
impl ::windows::core::RuntimeName for IDvbMultilingualServiceNameDescriptor {}
impl IDvbMultilingualServiceNameDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbMultilingualServiceNameDescriptor_Impl, const OFFSET: isize>() -> IDvbMultilingualServiceNameDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbMultilingualServiceNameDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbMultilingualServiceNameDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbMultilingualServiceNameDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordLangId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbMultilingualServiceNameDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, ulval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordLangId(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ulval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceProviderNameW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbMultilingualServiceNameDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, convmode: DVB_STRCONV_MODE, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordServiceProviderNameW(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceNameW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbMultilingualServiceNameDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, convmode: DVB_STRCONV_MODE, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordServiceNameW(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordLangId: GetRecordLangId::<Identity, Impl, OFFSET>,
            GetRecordServiceProviderNameW: GetRecordServiceProviderNameW::<Identity, Impl, OFFSET>,
            GetRecordServiceNameW: GetRecordServiceNameW::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbMultilingualServiceNameDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbNetworkNameDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetNetworkName(&self) -> ::windows::core::Result<*mut u8>;
    fn GetNetworkNameW(&self, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
}
impl ::windows::core::RuntimeName for IDvbNetworkNameDescriptor {}
impl IDvbNetworkNameDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbNetworkNameDescriptor_Impl, const OFFSET: isize>() -> IDvbNetworkNameDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbNetworkNameDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbNetworkNameDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNetworkName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbNetworkNameDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszname: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNetworkName() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pszname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNetworkNameW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbNetworkNameDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNetworkNameW(::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetNetworkName: GetNetworkName::<Identity, Impl, OFFSET>,
            GetNetworkNameW: GetNetworkNameW::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbNetworkNameDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbParentalRatingDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordRating(&self, brecordindex: u8, pszcountrycode: *mut u8, pbval: *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IDvbParentalRatingDescriptor {}
impl IDvbParentalRatingDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbParentalRatingDescriptor_Impl, const OFFSET: isize>() -> IDvbParentalRatingDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbParentalRatingDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbParentalRatingDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbParentalRatingDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRating<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbParentalRatingDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pszcountrycode: *mut u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordRating(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&pszcountrycode), ::core::mem::transmute_copy(&pbval)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordRating: GetRecordRating::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbParentalRatingDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbPrivateDataSpecifierDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetPrivateDataSpecifier(&self) -> ::windows::core::Result<u32>;
}
impl ::windows::core::RuntimeName for IDvbPrivateDataSpecifierDescriptor {}
impl IDvbPrivateDataSpecifierDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbPrivateDataSpecifierDescriptor_Impl, const OFFSET: isize>() -> IDvbPrivateDataSpecifierDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbPrivateDataSpecifierDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbPrivateDataSpecifierDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPrivateDataSpecifier<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbPrivateDataSpecifierDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPrivateDataSpecifier() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetPrivateDataSpecifier: GetPrivateDataSpecifier::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbPrivateDataSpecifierDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbSatelliteDeliverySystemDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetFrequency(&self) -> ::windows::core::Result<u32>;
    fn GetOrbitalPosition(&self) -> ::windows::core::Result<u16>;
    fn GetWestEastFlag(&self) -> ::windows::core::Result<u8>;
    fn GetPolarization(&self) -> ::windows::core::Result<u8>;
    fn GetModulation(&self) -> ::windows::core::Result<u8>;
    fn GetSymbolRate(&self) -> ::windows::core::Result<u32>;
    fn GetFECInner(&self) -> ::windows::core::Result<u8>;
}
impl ::windows::core::RuntimeName for IDvbSatelliteDeliverySystemDescriptor {}
impl IDvbSatelliteDeliverySystemDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSatelliteDeliverySystemDescriptor_Impl, const OFFSET: isize>() -> IDvbSatelliteDeliverySystemDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSatelliteDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSatelliteDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSatelliteDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFrequency() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOrbitalPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSatelliteDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOrbitalPosition() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetWestEastFlag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSatelliteDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetWestEastFlag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPolarization<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSatelliteDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPolarization() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetModulation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSatelliteDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetModulation() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSymbolRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSatelliteDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSymbolRate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFECInner<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSatelliteDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFECInner() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetFrequency: GetFrequency::<Identity, Impl, OFFSET>,
            GetOrbitalPosition: GetOrbitalPosition::<Identity, Impl, OFFSET>,
            GetWestEastFlag: GetWestEastFlag::<Identity, Impl, OFFSET>,
            GetPolarization: GetPolarization::<Identity, Impl, OFFSET>,
            GetModulation: GetModulation::<Identity, Impl, OFFSET>,
            GetSymbolRate: GetSymbolRate::<Identity, Impl, OFFSET>,
            GetFECInner: GetFECInner::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbSatelliteDeliverySystemDescriptor as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IDvbServiceAttributeDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordServiceId(&self, brecordindex: u8) -> ::windows::core::Result<u16>;
    fn GetRecordNumericSelectionFlag(&self, brecordindex: u8) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn GetRecordVisibleServiceFlag(&self, brecordindex: u8) -> ::windows::core::Result<super::super::Foundation::BOOL>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDvbServiceAttributeDescriptor {}
#[cfg(feature = "Win32_Foundation")]
impl IDvbServiceAttributeDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceAttributeDescriptor_Impl, const OFFSET: isize>() -> IDvbServiceAttributeDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceAttributeDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceAttributeDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceAttributeDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceAttributeDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordServiceId(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordNumericSelectionFlag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceAttributeDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pfval: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordNumericSelectionFlag(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordVisibleServiceFlag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceAttributeDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pfval: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordVisibleServiceFlag(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordServiceId: GetRecordServiceId::<Identity, Impl, OFFSET>,
            GetRecordNumericSelectionFlag: GetRecordNumericSelectionFlag::<Identity, Impl, OFFSET>,
            GetRecordVisibleServiceFlag: GetRecordVisibleServiceFlag::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbServiceAttributeDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbServiceDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetServiceType(&self) -> ::windows::core::Result<u8>;
    fn GetServiceProviderName(&self) -> ::windows::core::Result<*mut u8>;
    fn GetServiceProviderNameW(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn GetServiceName(&self) -> ::windows::core::Result<*mut u8>;
    fn GetProcessedServiceName(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn GetServiceNameEmphasized(&self) -> ::windows::core::Result<::windows::core::BSTR>;
}
impl ::windows::core::RuntimeName for IDvbServiceDescriptor {}
impl IDvbServiceDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceDescriptor_Impl, const OFFSET: isize>() -> IDvbServiceDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServiceType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceProviderName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszname: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServiceProviderName() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pszname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceProviderNameW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServiceProviderNameW() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszname: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServiceName() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pszname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProcessedServiceName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetProcessedServiceName() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceNameEmphasized<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServiceNameEmphasized() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetServiceType: GetServiceType::<Identity, Impl, OFFSET>,
            GetServiceProviderName: GetServiceProviderName::<Identity, Impl, OFFSET>,
            GetServiceProviderNameW: GetServiceProviderNameW::<Identity, Impl, OFFSET>,
            GetServiceName: GetServiceName::<Identity, Impl, OFFSET>,
            GetProcessedServiceName: GetProcessedServiceName::<Identity, Impl, OFFSET>,
            GetServiceNameEmphasized: GetServiceNameEmphasized::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbServiceDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbServiceDescriptor2_Impl: Sized + IDvbServiceDescriptor_Impl {
    fn GetServiceProviderNameW2(&self, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
    fn GetServiceNameW(&self, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
}
impl ::windows::core::RuntimeName for IDvbServiceDescriptor2 {}
impl IDvbServiceDescriptor2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceDescriptor2_Impl, const OFFSET: isize>() -> IDvbServiceDescriptor2_Vtbl {
        unsafe extern "system" fn GetServiceProviderNameW2<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceDescriptor2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServiceProviderNameW2(::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceNameW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceDescriptor2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServiceNameW(::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IDvbServiceDescriptor_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetServiceProviderNameW2: GetServiceProviderNameW2::<Identity, Impl, OFFSET>,
            GetServiceNameW: GetServiceNameW::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbServiceDescriptor2 as ::windows::core::Interface>::IID || iid == &<IDvbServiceDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbServiceListDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordServiceId(&self, brecordindex: u8) -> ::windows::core::Result<u16>;
    fn GetRecordServiceType(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
}
impl ::windows::core::RuntimeName for IDvbServiceListDescriptor {}
impl IDvbServiceListDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceListDescriptor_Impl, const OFFSET: isize>() -> IDvbServiceListDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceListDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceListDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceListDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceListDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordServiceId(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbServiceListDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordServiceType(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordServiceId: GetRecordServiceId::<Identity, Impl, OFFSET>,
            GetRecordServiceType: GetRecordServiceType::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbServiceListDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbShortEventDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetLanguageCode(&self, pszcode: *mut u8) -> ::windows::core::Result<()>;
    fn GetEventNameW(&self, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
    fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
}
impl ::windows::core::RuntimeName for IDvbShortEventDescriptor {}
impl IDvbShortEventDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbShortEventDescriptor_Impl, const OFFSET: isize>() -> IDvbShortEventDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbShortEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbShortEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLanguageCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbShortEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszcode: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLanguageCode(::core::mem::transmute_copy(&pszcode)).into()
        }
        unsafe extern "system" fn GetEventNameW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbShortEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEventNameW(::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTextW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbShortEventDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrtext: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTextW(::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrtext, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetLanguageCode: GetLanguageCode::<Identity, Impl, OFFSET>,
            GetEventNameW: GetEventNameW::<Identity, Impl, OFFSET>,
            GetTextW: GetTextW::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbShortEventDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbSiParser_Impl: Sized {
    fn Initialize(&self, punkmpeg2data: &::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
    fn GetPAT(&self) -> ::windows::core::Result<IPAT>;
    fn GetCAT(&self, dwtimeout: u32) -> ::windows::core::Result<ICAT>;
    fn GetPMT(&self, pid: u16, pwprogramnumber: *const u16) -> ::windows::core::Result<IPMT>;
    fn GetTSDT(&self) -> ::windows::core::Result<ITSDT>;
    fn GetNIT(&self, tableid: u8, pwnetworkid: *const u16) -> ::windows::core::Result<IDVB_NIT>;
    fn GetSDT(&self, tableid: u8, pwtransportstreamid: *const u16) -> ::windows::core::Result<IDVB_SDT>;
    fn GetEIT(&self, tableid: u8, pwserviceid: *const u16) -> ::windows::core::Result<IDVB_EIT>;
    fn GetBAT(&self, pwbouquetid: *const u16) -> ::windows::core::Result<IDVB_BAT>;
    fn GetRST(&self, dwtimeout: u32) -> ::windows::core::Result<IDVB_RST>;
    fn GetST(&self, pid: u16, dwtimeout: u32) -> ::windows::core::Result<IDVB_ST>;
    fn GetTDT(&self) -> ::windows::core::Result<IDVB_TDT>;
    fn GetTOT(&self) -> ::windows::core::Result<IDVB_TOT>;
    fn GetDIT(&self, dwtimeout: u32) -> ::windows::core::Result<IDVB_DIT>;
    fn GetSIT(&self, dwtimeout: u32) -> ::windows::core::Result<IDVB_SIT>;
}
impl ::windows::core::RuntimeName for IDvbSiParser {}
impl IDvbSiParser_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>() -> IDvbSiParser_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, punkmpeg2data: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&punkmpeg2data)).into()
        }
        unsafe extern "system" fn GetPAT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pppat: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPAT() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pppat, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCAT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwtimeout: u32, ppcat: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCAT(::core::mem::transmute_copy(&dwtimeout)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcat, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPMT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pid: u16, pwprogramnumber: *const u16, pppmt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPMT(::core::mem::transmute_copy(&pid), ::core::mem::transmute_copy(&pwprogramnumber)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pppmt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTSDT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pptsdt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTSDT() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pptsdt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNIT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tableid: u8, pwnetworkid: *const u16, ppnit: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNIT(::core::mem::transmute_copy(&tableid), ::core::mem::transmute_copy(&pwnetworkid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppnit, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSDT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tableid: u8, pwtransportstreamid: *const u16, ppsdt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSDT(::core::mem::transmute_copy(&tableid), ::core::mem::transmute_copy(&pwtransportstreamid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppsdt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEIT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tableid: u8, pwserviceid: *const u16, ppeit: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEIT(::core::mem::transmute_copy(&tableid), ::core::mem::transmute_copy(&pwserviceid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppeit, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBAT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwbouquetid: *const u16, ppbat: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetBAT(::core::mem::transmute_copy(&pwbouquetid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppbat, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRST<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwtimeout: u32, pprst: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRST(::core::mem::transmute_copy(&dwtimeout)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pprst, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetST<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pid: u16, dwtimeout: u32, ppst: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetST(::core::mem::transmute_copy(&pid), ::core::mem::transmute_copy(&dwtimeout)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppst, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTDT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pptdt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTDT() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pptdt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTOT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pptot: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTOT() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pptot, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDIT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwtimeout: u32, ppdit: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDIT(::core::mem::transmute_copy(&dwtimeout)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdit, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSIT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwtimeout: u32, ppsit: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSIT(::core::mem::transmute_copy(&dwtimeout)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppsit, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetPAT: GetPAT::<Identity, Impl, OFFSET>,
            GetCAT: GetCAT::<Identity, Impl, OFFSET>,
            GetPMT: GetPMT::<Identity, Impl, OFFSET>,
            GetTSDT: GetTSDT::<Identity, Impl, OFFSET>,
            GetNIT: GetNIT::<Identity, Impl, OFFSET>,
            GetSDT: GetSDT::<Identity, Impl, OFFSET>,
            GetEIT: GetEIT::<Identity, Impl, OFFSET>,
            GetBAT: GetBAT::<Identity, Impl, OFFSET>,
            GetRST: GetRST::<Identity, Impl, OFFSET>,
            GetST: GetST::<Identity, Impl, OFFSET>,
            GetTDT: GetTDT::<Identity, Impl, OFFSET>,
            GetTOT: GetTOT::<Identity, Impl, OFFSET>,
            GetDIT: GetDIT::<Identity, Impl, OFFSET>,
            GetSIT: GetSIT::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbSiParser as ::windows::core::Interface>::IID
    }
}
pub trait IDvbSiParser2_Impl: Sized + IDvbSiParser_Impl {
    fn GetEIT2(&self, tableid: u8, pwserviceid: *const u16, pbsegment: *const u8) -> ::windows::core::Result<IDVB_EIT2>;
}
impl ::windows::core::RuntimeName for IDvbSiParser2 {}
impl IDvbSiParser2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser2_Impl, const OFFSET: isize>() -> IDvbSiParser2_Vtbl {
        unsafe extern "system" fn GetEIT2<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSiParser2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tableid: u8, pwserviceid: *const u16, pbsegment: *const u8, ppeit: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEIT2(::core::mem::transmute_copy(&tableid), ::core::mem::transmute_copy(&pwserviceid), ::core::mem::transmute_copy(&pbsegment)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppeit, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: IDvbSiParser_Vtbl::new::<Identity, Impl, OFFSET>(), GetEIT2: GetEIT2::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbSiParser2 as ::windows::core::Interface>::IID || iid == &<IDvbSiParser as ::windows::core::Interface>::IID
    }
}
pub trait IDvbSubtitlingDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordLangId(&self, brecordindex: u8) -> ::windows::core::Result<u32>;
    fn GetRecordSubtitlingType(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
    fn GetRecordCompositionPageID(&self, brecordindex: u8) -> ::windows::core::Result<u16>;
    fn GetRecordAncillaryPageID(&self, brecordindex: u8) -> ::windows::core::Result<u16>;
}
impl ::windows::core::RuntimeName for IDvbSubtitlingDescriptor {}
impl IDvbSubtitlingDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSubtitlingDescriptor_Impl, const OFFSET: isize>() -> IDvbSubtitlingDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSubtitlingDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSubtitlingDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSubtitlingDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordLangId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSubtitlingDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pulval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordLangId(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordSubtitlingType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSubtitlingDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordSubtitlingType(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCompositionPageID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSubtitlingDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCompositionPageID(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordAncillaryPageID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbSubtitlingDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordAncillaryPageID(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordLangId: GetRecordLangId::<Identity, Impl, OFFSET>,
            GetRecordSubtitlingType: GetRecordSubtitlingType::<Identity, Impl, OFFSET>,
            GetRecordCompositionPageID: GetRecordCompositionPageID::<Identity, Impl, OFFSET>,
            GetRecordAncillaryPageID: GetRecordAncillaryPageID::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbSubtitlingDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbTeletextDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordLangId(&self, brecordindex: u8) -> ::windows::core::Result<u32>;
    fn GetRecordTeletextType(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
    fn GetRecordMagazineNumber(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
    fn GetRecordPageNumber(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
}
impl ::windows::core::RuntimeName for IDvbTeletextDescriptor {}
impl IDvbTeletextDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTeletextDescriptor_Impl, const OFFSET: isize>() -> IDvbTeletextDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTeletextDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTeletextDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTeletextDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordLangId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTeletextDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pulval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordLangId(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTeletextType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTeletextDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordTeletextType(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordMagazineNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTeletextDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordMagazineNumber(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordPageNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTeletextDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordPageNumber(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordLangId: GetRecordLangId::<Identity, Impl, OFFSET>,
            GetRecordTeletextType: GetRecordTeletextType::<Identity, Impl, OFFSET>,
            GetRecordMagazineNumber: GetRecordMagazineNumber::<Identity, Impl, OFFSET>,
            GetRecordPageNumber: GetRecordPageNumber::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbTeletextDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbTerrestrial2DeliverySystemDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetTagExtension(&self) -> ::windows::core::Result<u8>;
    fn GetCentreFrequency(&self) -> ::windows::core::Result<u32>;
    fn GetPLPId(&self) -> ::windows::core::Result<u8>;
    fn GetT2SystemId(&self) -> ::windows::core::Result<u16>;
    fn GetMultipleInputMode(&self) -> ::windows::core::Result<u8>;
    fn GetBandwidth(&self) -> ::windows::core::Result<u8>;
    fn GetGuardInterval(&self) -> ::windows::core::Result<u8>;
    fn GetTransmissionMode(&self) -> ::windows::core::Result<u8>;
    fn GetCellId(&self) -> ::windows::core::Result<u16>;
    fn GetOtherFrequencyFlag(&self) -> ::windows::core::Result<u8>;
    fn GetTFSFlag(&self) -> ::windows::core::Result<u8>;
}
impl ::windows::core::RuntimeName for IDvbTerrestrial2DeliverySystemDescriptor {}
impl IDvbTerrestrial2DeliverySystemDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrial2DeliverySystemDescriptor_Impl, const OFFSET: isize>() -> IDvbTerrestrial2DeliverySystemDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrial2DeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrial2DeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTagExtension<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrial2DeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTagExtension() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCentreFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrial2DeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCentreFrequency() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPLPId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrial2DeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPLPId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetT2SystemId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrial2DeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetT2SystemId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMultipleInputMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrial2DeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMultipleInputMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBandwidth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrial2DeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetBandwidth() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetGuardInterval<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrial2DeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetGuardInterval() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransmissionMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrial2DeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTransmissionMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCellId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrial2DeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCellId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOtherFrequencyFlag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrial2DeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOtherFrequencyFlag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTFSFlag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrial2DeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTFSFlag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetTagExtension: GetTagExtension::<Identity, Impl, OFFSET>,
            GetCentreFrequency: GetCentreFrequency::<Identity, Impl, OFFSET>,
            GetPLPId: GetPLPId::<Identity, Impl, OFFSET>,
            GetT2SystemId: GetT2SystemId::<Identity, Impl, OFFSET>,
            GetMultipleInputMode: GetMultipleInputMode::<Identity, Impl, OFFSET>,
            GetBandwidth: GetBandwidth::<Identity, Impl, OFFSET>,
            GetGuardInterval: GetGuardInterval::<Identity, Impl, OFFSET>,
            GetTransmissionMode: GetTransmissionMode::<Identity, Impl, OFFSET>,
            GetCellId: GetCellId::<Identity, Impl, OFFSET>,
            GetOtherFrequencyFlag: GetOtherFrequencyFlag::<Identity, Impl, OFFSET>,
            GetTFSFlag: GetTFSFlag::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbTerrestrial2DeliverySystemDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IDvbTerrestrialDeliverySystemDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCentreFrequency(&self) -> ::windows::core::Result<u32>;
    fn GetBandwidth(&self) -> ::windows::core::Result<u8>;
    fn GetConstellation(&self) -> ::windows::core::Result<u8>;
    fn GetHierarchyInformation(&self) -> ::windows::core::Result<u8>;
    fn GetCodeRateHPStream(&self) -> ::windows::core::Result<u8>;
    fn GetCodeRateLPStream(&self) -> ::windows::core::Result<u8>;
    fn GetGuardInterval(&self) -> ::windows::core::Result<u8>;
    fn GetTransmissionMode(&self) -> ::windows::core::Result<u8>;
    fn GetOtherFrequencyFlag(&self) -> ::windows::core::Result<u8>;
}
impl ::windows::core::RuntimeName for IDvbTerrestrialDeliverySystemDescriptor {}
impl IDvbTerrestrialDeliverySystemDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>() -> IDvbTerrestrialDeliverySystemDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCentreFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCentreFrequency() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBandwidth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetBandwidth() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetConstellation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetConstellation() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetHierarchyInformation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetHierarchyInformation() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCodeRateHPStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCodeRateHPStream() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCodeRateLPStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCodeRateLPStream() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetGuardInterval<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetGuardInterval() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransmissionMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTransmissionMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOtherFrequencyFlag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOtherFrequencyFlag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCentreFrequency: GetCentreFrequency::<Identity, Impl, OFFSET>,
            GetBandwidth: GetBandwidth::<Identity, Impl, OFFSET>,
            GetConstellation: GetConstellation::<Identity, Impl, OFFSET>,
            GetHierarchyInformation: GetHierarchyInformation::<Identity, Impl, OFFSET>,
            GetCodeRateHPStream: GetCodeRateHPStream::<Identity, Impl, OFFSET>,
            GetCodeRateLPStream: GetCodeRateLPStream::<Identity, Impl, OFFSET>,
            GetGuardInterval: GetGuardInterval::<Identity, Impl, OFFSET>,
            GetTransmissionMode: GetTransmissionMode::<Identity, Impl, OFFSET>,
            GetOtherFrequencyFlag: GetOtherFrequencyFlag::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvbTerrestrialDeliverySystemDescriptor 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<Impl = Impl>, Impl: IDvdCmd_Impl, const OFFSET: isize>() -> IDvdCmd_Vtbl {
        unsafe extern "system" fn WaitForStart<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdCmd_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.WaitForStart().into()
        }
        unsafe extern "system" fn WaitForEnd<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdCmd_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.WaitForEnd().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            WaitForStart: WaitForStart::<Identity, Impl, OFFSET>,
            WaitForEnd: WaitForEnd::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvdCmd as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDvdControl {}
#[cfg(feature = "Win32_Foundation")]
impl IDvdControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>() -> IDvdControl_Vtbl {
        unsafe extern "system" fn TitlePlay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ultitle: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TitlePlay(::core::mem::transmute_copy(&ultitle)).into()
        }
        unsafe extern "system" fn ChapterPlay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ultitle: u32, ulchapter: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChapterPlay(::core::mem::transmute_copy(&ultitle), ::core::mem::transmute_copy(&ulchapter)).into()
        }
        unsafe extern "system" fn TimePlay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ultitle: u32, bcdtime: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TimePlay(::core::mem::transmute_copy(&ultitle), ::core::mem::transmute_copy(&bcdtime)).into()
        }
        unsafe extern "system" fn StopForResume<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StopForResume().into()
        }
        unsafe extern "system" fn GoUp<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GoUp().into()
        }
        unsafe extern "system" fn TimeSearch<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bcdtime: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TimeSearch(::core::mem::transmute_copy(&bcdtime)).into()
        }
        unsafe extern "system" fn ChapterSearch<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulchapter: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChapterSearch(::core::mem::transmute_copy(&ulchapter)).into()
        }
        unsafe extern "system" fn PrevPGSearch<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PrevPGSearch().into()
        }
        unsafe extern "system" fn TopPGSearch<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TopPGSearch().into()
        }
        unsafe extern "system" fn NextPGSearch<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NextPGSearch().into()
        }
        unsafe extern "system" fn ForwardScan<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwspeed: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ForwardScan(::core::mem::transmute_copy(&dwspeed)).into()
        }
        unsafe extern "system" fn BackwardScan<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwspeed: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.BackwardScan(::core::mem::transmute_copy(&dwspeed)).into()
        }
        unsafe extern "system" fn MenuCall<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, menuid: DVD_MENU_ID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MenuCall(::core::mem::transmute_copy(&menuid)).into()
        }
        unsafe extern "system" fn Resume<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Resume().into()
        }
        unsafe extern "system" fn UpperButtonSelect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UpperButtonSelect().into()
        }
        unsafe extern "system" fn LowerButtonSelect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.LowerButtonSelect().into()
        }
        unsafe extern "system" fn LeftButtonSelect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.LeftButtonSelect().into()
        }
        unsafe extern "system" fn RightButtonSelect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RightButtonSelect().into()
        }
        unsafe extern "system" fn ButtonActivate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ButtonActivate().into()
        }
        unsafe extern "system" fn ButtonSelectAndActivate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulbutton: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ButtonSelectAndActivate(::core::mem::transmute_copy(&ulbutton)).into()
        }
        unsafe extern "system" fn StillOff<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StillOff().into()
        }
        unsafe extern "system" fn PauseOn<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PauseOn().into()
        }
        unsafe extern "system" fn PauseOff<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PauseOff().into()
        }
        unsafe extern "system" fn MenuLanguageSelect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, language: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MenuLanguageSelect(::core::mem::transmute_copy(&language)).into()
        }
        unsafe extern "system" fn AudioStreamChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulaudio: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AudioStreamChange(::core::mem::transmute_copy(&ulaudio)).into()
        }
        unsafe extern "system" fn SubpictureStreamChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulsubpicture: u32, bdisplay: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SubpictureStreamChange(::core::mem::transmute_copy(&ulsubpicture), ::core::mem::transmute_copy(&bdisplay)).into()
        }
        unsafe extern "system" fn AngleChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulangle: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AngleChange(::core::mem::transmute_copy(&ulangle)).into()
        }
        unsafe extern "system" fn ParentalLevelSelect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulparentallevel: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ParentalLevelSelect(::core::mem::transmute_copy(&ulparentallevel)).into()
        }
        unsafe extern "system" fn ParentalCountrySelect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, wcountry: u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ParentalCountrySelect(::core::mem::transmute_copy(&wcountry)).into()
        }
        unsafe extern "system" fn KaraokeAudioPresentationModeChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulmode: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.KaraokeAudioPresentationModeChange(::core::mem::transmute_copy(&ulmode)).into()
        }
        unsafe extern "system" fn VideoModePreferrence<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulpreferreddisplaymode: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.VideoModePreferrence(::core::mem::transmute_copy(&ulpreferreddisplaymode)).into()
        }
        unsafe extern "system" fn SetRoot<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszpath: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRoot(::core::mem::transmute(&pszpath)).into()
        }
        unsafe extern "system" fn MouseActivate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, point: super::super::Foundation::POINT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MouseActivate(::core::mem::transmute(&point)).into()
        }
        unsafe extern "system" fn MouseSelect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, point: super::super::Foundation::POINT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MouseSelect(::core::mem::transmute(&point)).into()
        }
        unsafe extern "system" fn ChapterPlayAutoStop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ultitle: u32, ulchapter: u32, ulchapterstoplay: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChapterPlayAutoStop(::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, Impl, OFFSET>,
            ChapterPlay: ChapterPlay::<Identity, Impl, OFFSET>,
            TimePlay: TimePlay::<Identity, Impl, OFFSET>,
            StopForResume: StopForResume::<Identity, Impl, OFFSET>,
            GoUp: GoUp::<Identity, Impl, OFFSET>,
            TimeSearch: TimeSearch::<Identity, Impl, OFFSET>,
            ChapterSearch: ChapterSearch::<Identity, Impl, OFFSET>,
            PrevPGSearch: PrevPGSearch::<Identity, Impl, OFFSET>,
            TopPGSearch: TopPGSearch::<Identity, Impl, OFFSET>,
            NextPGSearch: NextPGSearch::<Identity, Impl, OFFSET>,
            ForwardScan: ForwardScan::<Identity, Impl, OFFSET>,
            BackwardScan: BackwardScan::<Identity, Impl, OFFSET>,
            MenuCall: MenuCall::<Identity, Impl, OFFSET>,
            Resume: Resume::<Identity, Impl, OFFSET>,
            UpperButtonSelect: UpperButtonSelect::<Identity, Impl, OFFSET>,
            LowerButtonSelect: LowerButtonSelect::<Identity, Impl, OFFSET>,
            LeftButtonSelect: LeftButtonSelect::<Identity, Impl, OFFSET>,
            RightButtonSelect: RightButtonSelect::<Identity, Impl, OFFSET>,
            ButtonActivate: ButtonActivate::<Identity, Impl, OFFSET>,
            ButtonSelectAndActivate: ButtonSelectAndActivate::<Identity, Impl, OFFSET>,
            StillOff: StillOff::<Identity, Impl, OFFSET>,
            PauseOn: PauseOn::<Identity, Impl, OFFSET>,
            PauseOff: PauseOff::<Identity, Impl, OFFSET>,
            MenuLanguageSelect: MenuLanguageSelect::<Identity, Impl, OFFSET>,
            AudioStreamChange: AudioStreamChange::<Identity, Impl, OFFSET>,
            SubpictureStreamChange: SubpictureStreamChange::<Identity, Impl, OFFSET>,
            AngleChange: AngleChange::<Identity, Impl, OFFSET>,
            ParentalLevelSelect: ParentalLevelSelect::<Identity, Impl, OFFSET>,
            ParentalCountrySelect: ParentalCountrySelect::<Identity, Impl, OFFSET>,
            KaraokeAudioPresentationModeChange: KaraokeAudioPresentationModeChange::<Identity, Impl, OFFSET>,
            VideoModePreferrence: VideoModePreferrence::<Identity, Impl, OFFSET>,
            SetRoot: SetRoot::<Identity, Impl, OFFSET>,
            MouseActivate: MouseActivate::<Identity, Impl, OFFSET>,
            MouseSelect: MouseSelect::<Identity, Impl, OFFSET>,
            ChapterPlayAutoStop: ChapterPlayAutoStop::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvdControl as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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: *mut DVD_HMSF_TIMECODE, dwflags: u32, ppcmd: *mut ::core::option::Option<IDvdCmd>) -> ::windows::core::Result<()>;
    fn Stop(&self) -> ::windows::core::Result<()>;
    fn ReturnFromSubmenu(&self, dwflags: u32) -> ::windows::core::Result<IDvdCmd>;
    fn PlayAtTime(&self, ptime: *mut DVD_HMSF_TIMECODE, dwflags: u32, ppcmd: *mut ::core::option::Option<IDvdCmd>) -> ::windows::core::Result<()>;
    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: *mut 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: &::core::option::Option<IDvdState>, dwflags: u32) -> ::windows::core::Result<IDvdCmd>;
    fn PlayPeriodInTitleAutoStop(&self, ultitle: u32, pstarttime: *mut DVD_HMSF_TIMECODE, pendtime: *mut DVD_HMSF_TIMECODE, dwflags: u32, ppcmd: *mut ::core::option::Option<IDvdCmd>) -> ::windows::core::Result<()>;
    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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDvdControl2 {}
#[cfg(feature = "Win32_Foundation")]
impl IDvdControl2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>() -> IDvdControl2_Vtbl {
        unsafe extern "system" fn PlayTitle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ultitle: u32, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PlayTitle(::core::mem::transmute_copy(&ultitle), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayChapterInTitle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PlayChapterInTitle(::core::mem::transmute_copy(&ultitle), ::core::mem::transmute_copy(&ulchapter), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayAtTimeInTitle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ultitle: u32, pstarttime: *mut DVD_HMSF_TIMECODE, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayAtTimeInTitle(::core::mem::transmute_copy(&ultitle), ::core::mem::transmute_copy(&pstarttime), ::core::mem::transmute_copy(&dwflags), ::core::mem::transmute_copy(&ppcmd)).into()
        }
        unsafe extern "system" fn Stop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Stop().into()
        }
        unsafe extern "system" fn ReturnFromSubmenu<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ReturnFromSubmenu(::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayAtTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptime: *mut DVD_HMSF_TIMECODE, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayAtTime(::core::mem::transmute_copy(&ptime), ::core::mem::transmute_copy(&dwflags), ::core::mem::transmute_copy(&ppcmd)).into()
        }
        unsafe extern "system" fn PlayChapter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulchapter: u32, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PlayChapter(::core::mem::transmute_copy(&ulchapter), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayPrevChapter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PlayPrevChapter(::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ReplayChapter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ReplayChapter(::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayNextChapter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PlayNextChapter(::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayForwards<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dspeed: f64, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PlayForwards(::core::mem::transmute_copy(&dspeed), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayBackwards<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dspeed: f64, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PlayBackwards(::core::mem::transmute_copy(&dspeed), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ShowMenu<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ShowMenu(::core::mem::transmute_copy(&menuid), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Resume<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Resume(::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectRelativeButton<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, buttondir: DVD_RELATIVE_BUTTON) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectRelativeButton(::core::mem::transmute_copy(&buttondir)).into()
        }
        unsafe extern "system" fn ActivateButton<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ActivateButton().into()
        }
        unsafe extern "system" fn SelectButton<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulbutton: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectButton(::core::mem::transmute_copy(&ulbutton)).into()
        }
        unsafe extern "system" fn SelectAndActivateButton<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulbutton: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectAndActivateButton(::core::mem::transmute_copy(&ulbutton)).into()
        }
        unsafe extern "system" fn StillOff<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StillOff().into()
        }
        unsafe extern "system" fn Pause<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bstate: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Pause(::core::mem::transmute_copy(&bstate)).into()
        }
        unsafe extern "system" fn SelectAudioStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulaudio: u32, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SelectAudioStream(::core::mem::transmute_copy(&ulaudio), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectSubpictureStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulsubpicture: u32, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SelectSubpictureStream(::core::mem::transmute_copy(&ulsubpicture), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSubpictureState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SetSubpictureState(::core::mem::transmute_copy(&bstate), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectAngle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulangle: u32, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SelectAngle(::core::mem::transmute_copy(&ulangle), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectParentalLevel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulparentallevel: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectParentalLevel(::core::mem::transmute_copy(&ulparentallevel)).into()
        }
        unsafe extern "system" fn SelectParentalCountry<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bcountry: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectParentalCountry(::core::mem::transmute_copy(&bcountry)).into()
        }
        unsafe extern "system" fn SelectKaraokeAudioPresentationMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulmode: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectKaraokeAudioPresentationMode(::core::mem::transmute_copy(&ulmode)).into()
        }
        unsafe extern "system" fn SelectVideoModePreference<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulpreferreddisplaymode: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectVideoModePreference(::core::mem::transmute_copy(&ulpreferreddisplaymode)).into()
        }
        unsafe extern "system" fn SetDVDDirectory<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszwpath: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDVDDirectory(::core::mem::transmute(&pszwpath)).into()
        }
        unsafe extern "system" fn ActivateAtPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, point: super::super::Foundation::POINT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ActivateAtPosition(::core::mem::transmute(&point)).into()
        }
        unsafe extern "system" fn SelectAtPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, point: super::super::Foundation::POINT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectAtPosition(::core::mem::transmute(&point)).into()
        }
        unsafe extern "system" fn PlayChaptersAutoStop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PlayChaptersAutoStop(::core::mem::transmute_copy(&ultitle), ::core::mem::transmute_copy(&ulchapter), ::core::mem::transmute_copy(&ulchapterstoplay), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AcceptParentalLevelChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, baccept: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AcceptParentalLevelChange(::core::mem::transmute_copy(&baccept)).into()
        }
        unsafe extern "system" fn SetOption<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, flag: DVD_OPTION_FLAG, fstate: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOption(::core::mem::transmute_copy(&flag), ::core::mem::transmute_copy(&fstate)).into()
        }
        unsafe extern "system" fn SetState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SetState(::core::mem::transmute(&pstate), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayPeriodInTitleAutoStop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ultitle: u32, pstarttime: *mut DVD_HMSF_TIMECODE, pendtime: *mut DVD_HMSF_TIMECODE, dwflags: u32, ppcmd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayPeriodInTitleAutoStop(::core::mem::transmute_copy(&ultitle), ::core::mem::transmute_copy(&pstarttime), ::core::mem::transmute_copy(&pendtime), ::core::mem::transmute_copy(&dwflags), ::core::mem::transmute_copy(&ppcmd)).into()
        }
        unsafe extern "system" fn SetGPRM<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SetGPRM(::core::mem::transmute_copy(&ulindex), ::core::mem::transmute_copy(&wvalue), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcmd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectDefaultMenuLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, language: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectDefaultMenuLanguage(::core::mem::transmute_copy(&language)).into()
        }
        unsafe extern "system" fn SelectDefaultAudioLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, language: u32, audioextension: DVD_AUDIO_LANG_EXT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectDefaultAudioLanguage(::core::mem::transmute_copy(&language), ::core::mem::transmute_copy(&audioextension)).into()
        }
        unsafe extern "system" fn SelectDefaultSubpictureLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdControl2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, language: u32, subpictureextension: DVD_SUBPICTURE_LANG_EXT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectDefaultSubpictureLanguage(::core::mem::transmute_copy(&language), ::core::mem::transmute_copy(&subpictureextension)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            PlayTitle: PlayTitle::<Identity, Impl, OFFSET>,
            PlayChapterInTitle: PlayChapterInTitle::<Identity, Impl, OFFSET>,
            PlayAtTimeInTitle: PlayAtTimeInTitle::<Identity, Impl, OFFSET>,
            Stop: Stop::<Identity, Impl, OFFSET>,
            ReturnFromSubmenu: ReturnFromSubmenu::<Identity, Impl, OFFSET>,
            PlayAtTime: PlayAtTime::<Identity, Impl, OFFSET>,
            PlayChapter: PlayChapter::<Identity, Impl, OFFSET>,
            PlayPrevChapter: PlayPrevChapter::<Identity, Impl, OFFSET>,
            ReplayChapter: ReplayChapter::<Identity, Impl, OFFSET>,
            PlayNextChapter: PlayNextChapter::<Identity, Impl, OFFSET>,
            PlayForwards: PlayForwards::<Identity, Impl, OFFSET>,
            PlayBackwards: PlayBackwards::<Identity, Impl, OFFSET>,
            ShowMenu: ShowMenu::<Identity, Impl, OFFSET>,
            Resume: Resume::<Identity, Impl, OFFSET>,
            SelectRelativeButton: SelectRelativeButton::<Identity, Impl, OFFSET>,
            ActivateButton: ActivateButton::<Identity, Impl, OFFSET>,
            SelectButton: SelectButton::<Identity, Impl, OFFSET>,
            SelectAndActivateButton: SelectAndActivateButton::<Identity, Impl, OFFSET>,
            StillOff: StillOff::<Identity, Impl, OFFSET>,
            Pause: Pause::<Identity, Impl, OFFSET>,
            SelectAudioStream: SelectAudioStream::<Identity, Impl, OFFSET>,
            SelectSubpictureStream: SelectSubpictureStream::<Identity, Impl, OFFSET>,
            SetSubpictureState: SetSubpictureState::<Identity, Impl, OFFSET>,
            SelectAngle: SelectAngle::<Identity, Impl, OFFSET>,
            SelectParentalLevel: SelectParentalLevel::<Identity, Impl, OFFSET>,
            SelectParentalCountry: SelectParentalCountry::<Identity, Impl, OFFSET>,
            SelectKaraokeAudioPresentationMode: SelectKaraokeAudioPresentationMode::<Identity, Impl, OFFSET>,
            SelectVideoModePreference: SelectVideoModePreference::<Identity, Impl, OFFSET>,
            SetDVDDirectory: SetDVDDirectory::<Identity, Impl, OFFSET>,
            ActivateAtPosition: ActivateAtPosition::<Identity, Impl, OFFSET>,
            SelectAtPosition: SelectAtPosition::<Identity, Impl, OFFSET>,
            PlayChaptersAutoStop: PlayChaptersAutoStop::<Identity, Impl, OFFSET>,
            AcceptParentalLevelChange: AcceptParentalLevelChange::<Identity, Impl, OFFSET>,
            SetOption: SetOption::<Identity, Impl, OFFSET>,
            SetState: SetState::<Identity, Impl, OFFSET>,
            PlayPeriodInTitleAutoStop: PlayPeriodInTitleAutoStop::<Identity, Impl, OFFSET>,
            SetGPRM: SetGPRM::<Identity, Impl, OFFSET>,
            SelectDefaultMenuLanguage: SelectDefaultMenuLanguage::<Identity, Impl, OFFSET>,
            SelectDefaultAudioLanguage: SelectDefaultAudioLanguage::<Identity, Impl, OFFSET>,
            SelectDefaultSubpictureLanguage: SelectDefaultSubpictureLanguage::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvdControl2 as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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) -> ::windows::core::Result<AM_DVD_RENDERSTATUS>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDvdGraphBuilder {}
#[cfg(feature = "Win32_Foundation")]
impl IDvdGraphBuilder_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdGraphBuilder_Impl, const OFFSET: isize>() -> IDvdGraphBuilder_Vtbl {
        unsafe extern "system" fn GetFiltergraph<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdGraphBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppgb: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFiltergraph() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppgb, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDvdInterface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdGraphBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, riid: *const ::windows::core::GUID, ppvif: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDvdInterface(::core::mem::transmute_copy(&riid), ::core::mem::transmute_copy(&ppvif)).into()
        }
        unsafe extern "system" fn RenderDvdVideoVolume<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdGraphBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpcwszpathname: ::windows::core::PCWSTR, dwflags: u32, pstatus: *mut AM_DVD_RENDERSTATUS) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.RenderDvdVideoVolume(::core::mem::transmute(&lpcwszpathname), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstatus, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetFiltergraph: GetFiltergraph::<Identity, Impl, OFFSET>,
            GetDvdInterface: GetDvdInterface::<Identity, Impl, OFFSET>,
            RenderDvdVideoVolume: RenderDvdVideoVolume::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvdGraphBuilder as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IDvdInfo_Impl: Sized {
    fn GetCurrentDomain(&self, pdomain: *mut DVD_DOMAIN) -> ::windows::core::Result<()>;
    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) -> ::windows::core::Result<DVD_ATR>;
    fn GetVMGAttributes(&self) -> ::windows::core::Result<DVD_ATR>;
    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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDvdInfo {}
#[cfg(feature = "Win32_Foundation")]
impl IDvdInfo_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>() -> IDvdInfo_Vtbl {
        unsafe extern "system" fn GetCurrentDomain<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdomain: *mut DVD_DOMAIN) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentDomain(::core::mem::transmute_copy(&pdomain)).into()
        }
        unsafe extern "system" fn GetCurrentLocation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plocation: *mut DVD_PLAYBACK_LOCATION) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentLocation() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plocation, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTotalTitleTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pultotaltime: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTotalTitleTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pultotaltime, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentButton<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulbuttonsavailable: *mut u32, pulcurrentbutton: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentButton(::core::mem::transmute_copy(&pulbuttonsavailable), ::core::mem::transmute_copy(&pulcurrentbutton)).into()
        }
        unsafe extern "system" fn GetCurrentAngle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulanglesavailable: *mut u32, pulcurrentangle: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentAngle(::core::mem::transmute_copy(&pulanglesavailable), ::core::mem::transmute_copy(&pulcurrentangle)).into()
        }
        unsafe extern "system" fn GetCurrentAudio<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulstreamsavailable: *mut u32, pulcurrentstream: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentAudio(::core::mem::transmute_copy(&pulstreamsavailable), ::core::mem::transmute_copy(&pulcurrentstream)).into()
        }
        unsafe extern "system" fn GetCurrentSubpicture<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulstreamsavailable: *mut u32, pulcurrentstream: *mut u32, pisdisabled: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentSubpicture(::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<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, puop: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentUOPS() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(puop, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAllSPRMs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pregisterarray: *mut *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAllSPRMs() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pregisterarray, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAllGPRMs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pregisterarray: *mut *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAllGPRMs() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pregisterarray, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAudioLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulstream: u32, planguage: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAudioLanguage(::core::mem::transmute_copy(&ulstream)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(planguage, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSubpictureLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulstream: u32, planguage: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSubpictureLanguage(::core::mem::transmute_copy(&ulstream)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(planguage, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTitleAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ultitle: u32, patr: *mut DVD_ATR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTitleAttributes(::core::mem::transmute_copy(&ultitle)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(patr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetVMGAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, patr: *mut DVD_ATR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVMGAttributes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(patr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentVideoAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, patr: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentVideoAttributes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(patr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentAudioAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, patr: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentAudioAttributes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(patr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentSubpictureAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, patr: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentSubpictureAttributes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(patr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentVolumeInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentVolumeInfo(::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<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptextmanager: *mut u8, ulbufsize: u32, pulactualsize: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDVDTextInfo(::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<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulparentallevel: *mut u32, pulcountrycode: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPlayerParentalLevel(::core::mem::transmute_copy(&pulparentallevel), ::core::mem::transmute_copy(&pulcountrycode)).into()
        }
        unsafe extern "system" fn GetNumberOfChapters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ultitle: u32, pulnumberofchapters: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNumberOfChapters(::core::mem::transmute_copy(&ultitle)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulnumberofchapters, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTitleParentalLevels<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ultitle: u32, pulparentallevels: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTitleParentalLevels(::core::mem::transmute_copy(&ultitle)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulparentallevels, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRoot<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, proot: ::windows::core::PSTR, ulbufsize: u32, pulactualsize: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRoot(::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, Impl, OFFSET>,
            GetCurrentLocation: GetCurrentLocation::<Identity, Impl, OFFSET>,
            GetTotalTitleTime: GetTotalTitleTime::<Identity, Impl, OFFSET>,
            GetCurrentButton: GetCurrentButton::<Identity, Impl, OFFSET>,
            GetCurrentAngle: GetCurrentAngle::<Identity, Impl, OFFSET>,
            GetCurrentAudio: GetCurrentAudio::<Identity, Impl, OFFSET>,
            GetCurrentSubpicture: GetCurrentSubpicture::<Identity, Impl, OFFSET>,
            GetCurrentUOPS: GetCurrentUOPS::<Identity, Impl, OFFSET>,
            GetAllSPRMs: GetAllSPRMs::<Identity, Impl, OFFSET>,
            GetAllGPRMs: GetAllGPRMs::<Identity, Impl, OFFSET>,
            GetAudioLanguage: GetAudioLanguage::<Identity, Impl, OFFSET>,
            GetSubpictureLanguage: GetSubpictureLanguage::<Identity, Impl, OFFSET>,
            GetTitleAttributes: GetTitleAttributes::<Identity, Impl, OFFSET>,
            GetVMGAttributes: GetVMGAttributes::<Identity, Impl, OFFSET>,
            GetCurrentVideoAttributes: GetCurrentVideoAttributes::<Identity, Impl, OFFSET>,
            GetCurrentAudioAttributes: GetCurrentAudioAttributes::<Identity, Impl, OFFSET>,
            GetCurrentSubpictureAttributes: GetCurrentSubpictureAttributes::<Identity, Impl, OFFSET>,
            GetCurrentVolumeInfo: GetCurrentVolumeInfo::<Identity, Impl, OFFSET>,
            GetDVDTextInfo: GetDVDTextInfo::<Identity, Impl, OFFSET>,
            GetPlayerParentalLevel: GetPlayerParentalLevel::<Identity, Impl, OFFSET>,
            GetNumberOfChapters: GetNumberOfChapters::<Identity, Impl, OFFSET>,
            GetTitleParentalLevels: GetTitleParentalLevels::<Identity, Impl, OFFSET>,
            GetRoot: GetRoot::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvdInfo as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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) -> ::windows::core::Result<DVD_MenuAttributes>;
    fn GetCurrentVideoAttributes(&self) -> ::windows::core::Result<DVD_VideoAttributes>;
    fn GetAudioAttributes(&self, ulstream: u32) -> ::windows::core::Result<DVD_AudioAttributes>;
    fn GetKaraokeAttributes(&self, ulstream: u32) -> ::windows::core::Result<DVD_KaraokeAttributes>;
    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) -> ::windows::core::Result<DVD_DECODER_CAPS>;
    fn GetButtonRect(&self, ulbutton: u32) -> ::windows::core::Result<super::super::Foundation::RECT>;
    fn IsSubpictureStreamEnabled(&self, ulstreamnum: u32) -> ::windows::core::Result<super::super::Foundation::BOOL>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IDvdInfo2 {}
#[cfg(feature = "Win32_Foundation")]
impl IDvdInfo2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>() -> IDvdInfo2_Vtbl {
        unsafe extern "system" fn GetCurrentDomain<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdomain: *mut DVD_DOMAIN) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentDomain() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdomain, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentLocation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plocation: *mut DVD_PLAYBACK_LOCATION2) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentLocation() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plocation, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTotalTitleTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptotaltime: *mut DVD_HMSF_TIMECODE, ultimecodeflags: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTotalTitleTime(::core::mem::transmute_copy(&ptotaltime), ::core::mem::transmute_copy(&ultimecodeflags)).into()
        }
        unsafe extern "system" fn GetCurrentButton<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulbuttonsavailable: *mut u32, pulcurrentbutton: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentButton(::core::mem::transmute_copy(&pulbuttonsavailable), ::core::mem::transmute_copy(&pulcurrentbutton)).into()
        }
        unsafe extern "system" fn GetCurrentAngle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulanglesavailable: *mut u32, pulcurrentangle: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentAngle(::core::mem::transmute_copy(&pulanglesavailable), ::core::mem::transmute_copy(&pulcurrentangle)).into()
        }
        unsafe extern "system" fn GetCurrentAudio<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulstreamsavailable: *mut u32, pulcurrentstream: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentAudio(::core::mem::transmute_copy(&pulstreamsavailable), ::core::mem::transmute_copy(&pulcurrentstream)).into()
        }
        unsafe extern "system" fn GetCurrentSubpicture<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulstreamsavailable: *mut u32, pulcurrentstream: *mut u32, pbisdisabled: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentSubpicture(::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<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, puluops: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentUOPS() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(puluops, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAllSPRMs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pregisterarray: *mut *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAllSPRMs() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pregisterarray, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAllGPRMs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pregisterarray: *mut *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAllGPRMs() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pregisterarray, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAudioLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulstream: u32, planguage: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAudioLanguage(::core::mem::transmute_copy(&ulstream)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(planguage, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSubpictureLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulstream: u32, planguage: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSubpictureLanguage(::core::mem::transmute_copy(&ulstream)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(planguage, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTitleAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ultitle: u32, pmenu: *mut DVD_MenuAttributes, ptitle: *mut DVD_TitleAttributes) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTitleAttributes(::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<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, patr: *mut DVD_MenuAttributes) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVMGAttributes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(patr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentVideoAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, patr: *mut DVD_VideoAttributes) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentVideoAttributes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(patr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAudioAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulstream: u32, patr: *mut DVD_AudioAttributes) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAudioAttributes(::core::mem::transmute_copy(&ulstream)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(patr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetKaraokeAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulstream: u32, pattributes: *mut DVD_KaraokeAttributes) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetKaraokeAttributes(::core::mem::transmute_copy(&ulstream)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pattributes, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSubpictureAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulstream: u32, patr: *mut DVD_SubpictureAttributes) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSubpictureAttributes(::core::mem::transmute_copy(&ulstream)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(patr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDVDVolumeInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDVDVolumeInfo(::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<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulnumoflangs: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDVDTextNumberOfLanguages() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulnumoflangs, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDVDTextLanguageInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ullangindex: u32, pulnumofstrings: *mut u32, plangcode: *mut u32, pbcharacterset: *mut DVD_TextCharSet) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDVDTextLanguageInfo(::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<Impl = Impl>, Impl: IDvdInfo2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDVDTextStringAsNative(::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<Impl = Impl>, Impl: IDvdInfo2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDVDTextStringAsUnicode(::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<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulparentallevel: *mut u32, pbcountrycode: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPlayerParentalLevel(::core::mem::transmute_copy(&pulparentallevel), ::core::mem::transmute_copy(&pbcountrycode)).into()
        }
        unsafe extern "system" fn GetNumberOfChapters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ultitle: u32, pulnumofchapters: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNumberOfChapters(::core::mem::transmute_copy(&ultitle)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulnumofchapters, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTitleParentalLevels<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ultitle: u32, pulparentallevels: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTitleParentalLevels(::core::mem::transmute_copy(&ultitle)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulparentallevels, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDVDDirectory<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszwpath: ::windows::core::PWSTR, ulmaxsize: u32, pulactualsize: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDVDDirectory(::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<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulstreamnum: u32, pbenabled: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IsAudioStreamEnabled(::core::mem::transmute_copy(&ulstreamnum)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbenabled, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDiscID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszwpath: ::windows::core::PCWSTR, pulldiscid: *mut u64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDiscID(::core::mem::transmute(&pszwpath)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulldiscid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstatedata: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetState() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstatedata, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMenuLanguages<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, planguages: *mut u32, ulmaxlanguages: u32, pulactuallanguages: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMenuLanguages(::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<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, point: super::super::Foundation::POINT, pulbuttonindex: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetButtonAtPosition(::core::mem::transmute(&point)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulbuttonindex, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCmdFromEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lparam1: isize, pcmdobj: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCmdFromEvent(::core::mem::transmute_copy(&lparam1)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcmdobj, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDefaultMenuLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, planguage: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDefaultMenuLanguage() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(planguage, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDefaultAudioLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, planguage: *mut u32, paudioextension: *mut DVD_AUDIO_LANG_EXT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDefaultAudioLanguage(::core::mem::transmute_copy(&planguage), ::core::mem::transmute_copy(&paudioextension)).into()
        }
        unsafe extern "system" fn GetDefaultSubpictureLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, planguage: *mut u32, psubpictureextension: *mut DVD_SUBPICTURE_LANG_EXT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDefaultSubpictureLanguage(::core::mem::transmute_copy(&planguage), ::core::mem::transmute_copy(&psubpictureextension)).into()
        }
        unsafe extern "system" fn GetDecoderCaps<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcaps: *mut DVD_DECODER_CAPS) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDecoderCaps() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcaps, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetButtonRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulbutton: u32, prect: *mut super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetButtonRect(::core::mem::transmute_copy(&ulbutton)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prect, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsSubpictureStreamEnabled<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdInfo2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulstreamnum: u32, pbenabled: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IsSubpictureStreamEnabled(::core::mem::transmute_copy(&ulstreamnum)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbenabled, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCurrentDomain: GetCurrentDomain::<Identity, Impl, OFFSET>,
            GetCurrentLocation: GetCurrentLocation::<Identity, Impl, OFFSET>,
            GetTotalTitleTime: GetTotalTitleTime::<Identity, Impl, OFFSET>,
            GetCurrentButton: GetCurrentButton::<Identity, Impl, OFFSET>,
            GetCurrentAngle: GetCurrentAngle::<Identity, Impl, OFFSET>,
            GetCurrentAudio: GetCurrentAudio::<Identity, Impl, OFFSET>,
            GetCurrentSubpicture: GetCurrentSubpicture::<Identity, Impl, OFFSET>,
            GetCurrentUOPS: GetCurrentUOPS::<Identity, Impl, OFFSET>,
            GetAllSPRMs: GetAllSPRMs::<Identity, Impl, OFFSET>,
            GetAllGPRMs: GetAllGPRMs::<Identity, Impl, OFFSET>,
            GetAudioLanguage: GetAudioLanguage::<Identity, Impl, OFFSET>,
            GetSubpictureLanguage: GetSubpictureLanguage::<Identity, Impl, OFFSET>,
            GetTitleAttributes: GetTitleAttributes::<Identity, Impl, OFFSET>,
            GetVMGAttributes: GetVMGAttributes::<Identity, Impl, OFFSET>,
            GetCurrentVideoAttributes: GetCurrentVideoAttributes::<Identity, Impl, OFFSET>,
            GetAudioAttributes: GetAudioAttributes::<Identity, Impl, OFFSET>,
            GetKaraokeAttributes: GetKaraokeAttributes::<Identity, Impl, OFFSET>,
            GetSubpictureAttributes: GetSubpictureAttributes::<Identity, Impl, OFFSET>,
            GetDVDVolumeInfo: GetDVDVolumeInfo::<Identity, Impl, OFFSET>,
            GetDVDTextNumberOfLanguages: GetDVDTextNumberOfLanguages::<Identity, Impl, OFFSET>,
            GetDVDTextLanguageInfo: GetDVDTextLanguageInfo::<Identity, Impl, OFFSET>,
            GetDVDTextStringAsNative: GetDVDTextStringAsNative::<Identity, Impl, OFFSET>,
            GetDVDTextStringAsUnicode: GetDVDTextStringAsUnicode::<Identity, Impl, OFFSET>,
            GetPlayerParentalLevel: GetPlayerParentalLevel::<Identity, Impl, OFFSET>,
            GetNumberOfChapters: GetNumberOfChapters::<Identity, Impl, OFFSET>,
            GetTitleParentalLevels: GetTitleParentalLevels::<Identity, Impl, OFFSET>,
            GetDVDDirectory: GetDVDDirectory::<Identity, Impl, OFFSET>,
            IsAudioStreamEnabled: IsAudioStreamEnabled::<Identity, Impl, OFFSET>,
            GetDiscID: GetDiscID::<Identity, Impl, OFFSET>,
            GetState: GetState::<Identity, Impl, OFFSET>,
            GetMenuLanguages: GetMenuLanguages::<Identity, Impl, OFFSET>,
            GetButtonAtPosition: GetButtonAtPosition::<Identity, Impl, OFFSET>,
            GetCmdFromEvent: GetCmdFromEvent::<Identity, Impl, OFFSET>,
            GetDefaultMenuLanguage: GetDefaultMenuLanguage::<Identity, Impl, OFFSET>,
            GetDefaultAudioLanguage: GetDefaultAudioLanguage::<Identity, Impl, OFFSET>,
            GetDefaultSubpictureLanguage: GetDefaultSubpictureLanguage::<Identity, Impl, OFFSET>,
            GetDecoderCaps: GetDecoderCaps::<Identity, Impl, OFFSET>,
            GetButtonRect: GetButtonRect::<Identity, Impl, OFFSET>,
            IsSubpictureStreamEnabled: IsSubpictureStreamEnabled::<Identity, Impl, 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<Impl = Impl>, Impl: IDvdState_Impl, const OFFSET: isize>() -> IDvdState_Vtbl {
        unsafe extern "system" fn GetDiscID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdState_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulluniqueid: *mut u64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDiscID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulluniqueid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetParentalLevel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IDvdState_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulparentallevel: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetParentalLevel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulparentallevel, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDiscID: GetDiscID::<Identity, Impl, OFFSET>,
            GetParentalLevel: GetParentalLevel::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IDvdState as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IESCloseMmiEvent_Impl: Sized + IESEvent_Impl {
    fn GetDialogNumber(&self) -> ::windows::core::Result<u32>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IESCloseMmiEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IESCloseMmiEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESCloseMmiEvent_Impl, const OFFSET: isize>() -> IESCloseMmiEvent_Vtbl {
        unsafe extern "system" fn GetDialogNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESCloseMmiEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdialognumber: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDialogNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdialognumber, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: IESEvent_Vtbl::new::<Identity, Impl, OFFSET>(), GetDialogNumber: GetDialogNumber::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IESCloseMmiEvent as ::windows::core::Interface>::IID || iid == &<IESEvent 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<Impl = Impl>, Impl: IESEvent_Impl, const OFFSET: isize>() -> IESEvent_Vtbl {
        unsafe extern "system" fn GetEventId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdweventid: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEventId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdweventid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEventType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguideventtype: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEventType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pguideventtype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCompletionStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwresult: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCompletionStatus(::core::mem::transmute_copy(&dwresult)).into()
        }
        unsafe extern "system" fn GetData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbdata: *mut *mut super::super::System::Com::SAFEARRAY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetData() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbdata, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStringData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrdata: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStringData() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrdata, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetEventId: GetEventId::<Identity, Impl, OFFSET>,
            GetEventType: GetEventType::<Identity, Impl, OFFSET>,
            SetCompletionStatus: SetCompletionStatus::<Identity, Impl, OFFSET>,
            GetData: GetData::<Identity, Impl, OFFSET>,
            GetStringData: GetStringData::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IESEvent as ::windows::core::Interface>::IID
    }
}
pub trait IESEventFactory_Impl: Sized {
    fn CreateESEvent(&self, pserviceprovider: &::core::option::Option<::windows::core::IUnknown>, dweventid: u32, guideventtype: &::windows::core::GUID, dweventdatalength: u32, peventdata: *const u8, bstrbaseurl: &::windows::core::BSTR, pinitcontext: &::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<IESEvent>;
}
impl ::windows::core::RuntimeName for IESEventFactory {}
impl IESEventFactory_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEventFactory_Impl, const OFFSET: isize>() -> IESEventFactory_Vtbl {
        unsafe extern "system" fn CreateESEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEventFactory_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pserviceprovider: *mut ::core::ffi::c_void, dweventid: u32, guideventtype: ::windows::core::GUID, dweventdatalength: u32, peventdata: *const u8, bstrbaseurl: ::core::mem::ManuallyDrop<::windows::core::BSTR>, pinitcontext: *mut ::core::ffi::c_void, ppesevent: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CreateESEvent(::core::mem::transmute(&pserviceprovider), ::core::mem::transmute_copy(&dweventid), ::core::mem::transmute(&guideventtype), ::core::mem::transmute_copy(&dweventdatalength), ::core::mem::transmute_copy(&peventdata), ::core::mem::transmute(&bstrbaseurl), ::core::mem::transmute(&pinitcontext)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppesevent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CreateESEvent: CreateESEvent::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IESEventFactory as ::windows::core::Interface>::IID
    }
}
pub trait IESEventService_Impl: Sized {
    fn FireESEvent(&self, pesevent: &::core::option::Option<IESEvent>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IESEventService {}
impl IESEventService_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEventService_Impl, const OFFSET: isize>() -> IESEventService_Vtbl {
        unsafe extern "system" fn FireESEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEventService_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pesevent: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.FireESEvent(::core::mem::transmute(&pesevent)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), FireESEvent: FireESEvent::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IESEventService as ::windows::core::Interface>::IID
    }
}
pub trait IESEventServiceConfiguration_Impl: Sized {
    fn SetParent(&self, peventservice: &::core::option::Option<IESEventService>) -> ::windows::core::Result<()>;
    fn RemoveParent(&self) -> ::windows::core::Result<()>;
    fn SetOwner(&self, pesevents: &::core::option::Option<IESEvents>) -> ::windows::core::Result<()>;
    fn RemoveOwner(&self) -> ::windows::core::Result<()>;
    fn SetGraph(&self, pgraph: &::core::option::Option<IFilterGraph>) -> ::windows::core::Result<()>;
    fn RemoveGraph(&self, pgraph: &::core::option::Option<IFilterGraph>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IESEventServiceConfiguration {}
impl IESEventServiceConfiguration_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEventServiceConfiguration_Impl, const OFFSET: isize>() -> IESEventServiceConfiguration_Vtbl {
        unsafe extern "system" fn SetParent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEventServiceConfiguration_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, peventservice: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetParent(::core::mem::transmute(&peventservice)).into()
        }
        unsafe extern "system" fn RemoveParent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEventServiceConfiguration_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RemoveParent().into()
        }
        unsafe extern "system" fn SetOwner<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEventServiceConfiguration_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pesevents: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOwner(::core::mem::transmute(&pesevents)).into()
        }
        unsafe extern "system" fn RemoveOwner<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEventServiceConfiguration_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RemoveOwner().into()
        }
        unsafe extern "system" fn SetGraph<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEventServiceConfiguration_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pgraph: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetGraph(::core::mem::transmute(&pgraph)).into()
        }
        unsafe extern "system" fn RemoveGraph<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEventServiceConfiguration_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pgraph: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RemoveGraph(::core::mem::transmute(&pgraph)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetParent: SetParent::<Identity, Impl, OFFSET>,
            RemoveParent: RemoveParent::<Identity, Impl, OFFSET>,
            SetOwner: SetOwner::<Identity, Impl, OFFSET>,
            RemoveOwner: RemoveOwner::<Identity, Impl, OFFSET>,
            SetGraph: SetGraph::<Identity, Impl, OFFSET>,
            RemoveGraph: RemoveGraph::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IESEventServiceConfiguration as ::windows::core::Interface>::IID
    }
}
pub trait IESEvents_Impl: Sized {
    fn OnESEventReceived(&self, guideventtype: &::windows::core::GUID, pesevent: &::core::option::Option<IESEvent>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IESEvents {}
impl IESEvents_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEvents_Impl, const OFFSET: isize>() -> IESEvents_Vtbl {
        unsafe extern "system" fn OnESEventReceived<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESEvents_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guideventtype: ::windows::core::GUID, pesevent: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnESEventReceived(::core::mem::transmute(&guideventtype), ::core::mem::transmute(&pesevent)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnESEventReceived: OnESEventReceived::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IESEvents as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
pub trait IESFileExpiryDateEvent_Impl: Sized + IESEvent_Impl {
    fn GetTunerId(&self) -> ::windows::core::Result<::windows::core::GUID>;
    fn GetExpiryDate(&self) -> ::windows::core::Result<u64>;
    fn GetFinalExpiryDate(&self) -> ::windows::core::Result<u64>;
    fn GetMaxRenewalCount(&self) -> ::windows::core::Result<u32>;
    fn IsEntitlementTokenPresent(&self) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn DoesExpireAfterFirstUse(&self) -> ::windows::core::Result<super::super::Foundation::BOOL>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
impl ::windows::core::RuntimeName for IESFileExpiryDateEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
impl IESFileExpiryDateEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESFileExpiryDateEvent_Impl, const OFFSET: isize>() -> IESFileExpiryDateEvent_Vtbl {
        unsafe extern "system" fn GetTunerId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESFileExpiryDateEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguidtunerid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTunerId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pguidtunerid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetExpiryDate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESFileExpiryDateEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pqwexpirydate: *mut u64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetExpiryDate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pqwexpirydate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFinalExpiryDate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESFileExpiryDateEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pqwexpirydate: *mut u64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFinalExpiryDate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pqwexpirydate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMaxRenewalCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESFileExpiryDateEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwmaxrenewalcount: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMaxRenewalCount() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(dwmaxrenewalcount, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsEntitlementTokenPresent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESFileExpiryDateEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfenttokenpresent: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IsEntitlementTokenPresent() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfenttokenpresent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DoesExpireAfterFirstUse<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESFileExpiryDateEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfexpireafterfirstuse: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DoesExpireAfterFirstUse() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfexpireafterfirstuse, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IESEvent_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetTunerId: GetTunerId::<Identity, Impl, OFFSET>,
            GetExpiryDate: GetExpiryDate::<Identity, Impl, OFFSET>,
            GetFinalExpiryDate: GetFinalExpiryDate::<Identity, Impl, OFFSET>,
            GetMaxRenewalCount: GetMaxRenewalCount::<Identity, Impl, OFFSET>,
            IsEntitlementTokenPresent: IsEntitlementTokenPresent::<Identity, Impl, OFFSET>,
            DoesExpireAfterFirstUse: DoesExpireAfterFirstUse::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IESFileExpiryDateEvent as ::windows::core::Interface>::IID || iid == &<IESEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IESIsdbCasResponseEvent_Impl: Sized + IESEvent_Impl {
    fn GetRequestId(&self) -> ::windows::core::Result<u32>;
    fn GetStatus(&self) -> ::windows::core::Result<u32>;
    fn GetDataLength(&self) -> ::windows::core::Result<u32>;
    fn GetResponseData(&self) -> ::windows::core::Result<*mut super::super::System::Com::SAFEARRAY>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IESIsdbCasResponseEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IESIsdbCasResponseEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESIsdbCasResponseEvent_Impl, const OFFSET: isize>() -> IESIsdbCasResponseEvent_Vtbl {
        unsafe extern "system" fn GetRequestId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESIsdbCasResponseEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prequestid: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRequestId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prequestid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESIsdbCasResponseEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstatus: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStatus() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstatus, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESIsdbCasResponseEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prequestlength: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDataLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prequestlength, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetResponseData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESIsdbCasResponseEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbdata: *mut *mut super::super::System::Com::SAFEARRAY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetResponseData() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbdata, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IESEvent_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetRequestId: GetRequestId::<Identity, Impl, OFFSET>,
            GetStatus: GetStatus::<Identity, Impl, OFFSET>,
            GetDataLength: GetDataLength::<Identity, Impl, OFFSET>,
            GetResponseData: GetResponseData::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IESIsdbCasResponseEvent as ::windows::core::Interface>::IID || iid == &<IESEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
pub trait IESLicenseRenewalResultEvent_Impl: Sized + IESEvent_Impl {
    fn GetCallersId(&self) -> ::windows::core::Result<u32>;
    fn GetFileName(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn IsRenewalSuccessful(&self) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn IsCheckEntitlementCallRequired(&self) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn GetDescrambledStatus(&self) -> ::windows::core::Result<u32>;
    fn GetRenewalResultCode(&self) -> ::windows::core::Result<u32>;
    fn GetCASFailureCode(&self) -> ::windows::core::Result<u32>;
    fn GetRenewalHResult(&self) -> ::windows::core::Result<::windows::core::HRESULT>;
    fn GetEntitlementTokenLength(&self) -> ::windows::core::Result<u32>;
    fn GetEntitlementToken(&self) -> ::windows::core::Result<*mut super::super::System::Com::SAFEARRAY>;
    fn GetExpiryDate(&self) -> ::windows::core::Result<u64>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
impl ::windows::core::RuntimeName for IESLicenseRenewalResultEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
impl IESLicenseRenewalResultEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESLicenseRenewalResultEvent_Impl, const OFFSET: isize>() -> IESLicenseRenewalResultEvent_Vtbl {
        unsafe extern "system" fn GetCallersId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESLicenseRenewalResultEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwcallersid: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCallersId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwcallersid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFileName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESLicenseRenewalResultEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrfilename: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFileName() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrfilename, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsRenewalSuccessful<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESLicenseRenewalResultEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfrenewalsuccessful: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IsRenewalSuccessful() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfrenewalsuccessful, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsCheckEntitlementCallRequired<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESLicenseRenewalResultEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfcheckenttokencallneeded: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IsCheckEntitlementCallRequired() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfcheckenttokencallneeded, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDescrambledStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESLicenseRenewalResultEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdescrambledstatus: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDescrambledStatus() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdescrambledstatus, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRenewalResultCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESLicenseRenewalResultEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwrenewalresultcode: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRenewalResultCode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwrenewalresultcode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCASFailureCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESLicenseRenewalResultEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwcasfailurecode: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCASFailureCode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwcasfailurecode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRenewalHResult<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESLicenseRenewalResultEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phr: *mut ::windows::core::HRESULT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRenewalHResult() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(phr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEntitlementTokenLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESLicenseRenewalResultEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwlength: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEntitlementTokenLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwlength, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEntitlementToken<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESLicenseRenewalResultEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbdata: *mut *mut super::super::System::Com::SAFEARRAY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEntitlementToken() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbdata, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetExpiryDate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESLicenseRenewalResultEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pqwexpirydate: *mut u64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetExpiryDate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pqwexpirydate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IESEvent_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetCallersId: GetCallersId::<Identity, Impl, OFFSET>,
            GetFileName: GetFileName::<Identity, Impl, OFFSET>,
            IsRenewalSuccessful: IsRenewalSuccessful::<Identity, Impl, OFFSET>,
            IsCheckEntitlementCallRequired: IsCheckEntitlementCallRequired::<Identity, Impl, OFFSET>,
            GetDescrambledStatus: GetDescrambledStatus::<Identity, Impl, OFFSET>,
            GetRenewalResultCode: GetRenewalResultCode::<Identity, Impl, OFFSET>,
            GetCASFailureCode: GetCASFailureCode::<Identity, Impl, OFFSET>,
            GetRenewalHResult: GetRenewalHResult::<Identity, Impl, OFFSET>,
            GetEntitlementTokenLength: GetEntitlementTokenLength::<Identity, Impl, OFFSET>,
            GetEntitlementToken: GetEntitlementToken::<Identity, Impl, OFFSET>,
            GetExpiryDate: GetExpiryDate::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IESLicenseRenewalResultEvent as ::windows::core::Interface>::IID || iid == &<IESEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IESOpenMmiEvent_Impl: Sized + IESEvent_Impl {
    fn GetDialogNumber(&self, pdialogrequest: *mut u32, pdialognumber: *mut u32) -> ::windows::core::Result<()>;
    fn GetDialogType(&self) -> ::windows::core::Result<::windows::core::GUID>;
    fn GetDialogData(&self) -> ::windows::core::Result<*mut super::super::System::Com::SAFEARRAY>;
    fn GetDialogStringData(&self, pbstrbaseurl: *mut ::windows::core::BSTR, pbstrdata: *mut ::windows::core::BSTR) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IESOpenMmiEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IESOpenMmiEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESOpenMmiEvent_Impl, const OFFSET: isize>() -> IESOpenMmiEvent_Vtbl {
        unsafe extern "system" fn GetDialogNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESOpenMmiEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdialogrequest: *mut u32, pdialognumber: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDialogNumber(::core::mem::transmute_copy(&pdialogrequest), ::core::mem::transmute_copy(&pdialognumber)).into()
        }
        unsafe extern "system" fn GetDialogType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESOpenMmiEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guiddialogtype: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDialogType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(guiddialogtype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDialogData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESOpenMmiEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbdata: *mut *mut super::super::System::Com::SAFEARRAY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDialogData() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbdata, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDialogStringData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESOpenMmiEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrbaseurl: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>, pbstrdata: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDialogStringData(::core::mem::transmute_copy(&pbstrbaseurl), ::core::mem::transmute_copy(&pbstrdata)).into()
        }
        Self {
            base__: IESEvent_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetDialogNumber: GetDialogNumber::<Identity, Impl, OFFSET>,
            GetDialogType: GetDialogType::<Identity, Impl, OFFSET>,
            GetDialogData: GetDialogData::<Identity, Impl, OFFSET>,
            GetDialogStringData: GetDialogStringData::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IESOpenMmiEvent as ::windows::core::Interface>::IID || iid == &<IESEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IESRequestTunerEvent_Impl: Sized + IESEvent_Impl {
    fn GetPriority(&self) -> ::windows::core::Result<u8>;
    fn GetReason(&self) -> ::windows::core::Result<u8>;
    fn GetConsequences(&self) -> ::windows::core::Result<u8>;
    fn GetEstimatedTime(&self) -> ::windows::core::Result<u32>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IESRequestTunerEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IESRequestTunerEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESRequestTunerEvent_Impl, const OFFSET: isize>() -> IESRequestTunerEvent_Vtbl {
        unsafe extern "system" fn GetPriority<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESRequestTunerEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbypriority: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPriority() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbypriority, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetReason<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESRequestTunerEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbyreason: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetReason() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbyreason, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetConsequences<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESRequestTunerEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbyconsequences: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetConsequences() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbyconsequences, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEstimatedTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESRequestTunerEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwestimatedtime: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEstimatedTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwestimatedtime, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IESEvent_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetPriority: GetPriority::<Identity, Impl, OFFSET>,
            GetReason: GetReason::<Identity, Impl, OFFSET>,
            GetConsequences: GetConsequences::<Identity, Impl, OFFSET>,
            GetEstimatedTime: GetEstimatedTime::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IESRequestTunerEvent as ::windows::core::Interface>::IID || iid == &<IESEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IESValueUpdatedEvent_Impl: Sized + IESEvent_Impl {
    fn GetValueNames(&self) -> ::windows::core::Result<*mut super::super::System::Com::SAFEARRAY>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IESValueUpdatedEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IESValueUpdatedEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESValueUpdatedEvent_Impl, const OFFSET: isize>() -> IESValueUpdatedEvent_Vtbl {
        unsafe extern "system" fn GetValueNames<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IESValueUpdatedEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrnames: *mut *mut super::super::System::Com::SAFEARRAY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetValueNames() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrnames, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: IESEvent_Vtbl::new::<Identity, Impl, OFFSET>(), GetValueNames: GetValueNames::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IESValueUpdatedEvent as ::windows::core::Interface>::IID || iid == &<IESEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IETFilter_Impl: Sized {
    fn EvalRatObjOK(&self) -> ::windows::core::Result<::windows::core::HRESULT>;
    fn GetCurrRating(&self, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, plbfenattr: *mut i32) -> ::windows::core::Result<()>;
    fn GetCurrLicenseExpDate(&self, prottype: *const ProtType) -> ::windows::core::Result<i32>;
    fn GetLastErrorCode(&self) -> ::windows::core::Result<()>;
    fn SetRecordingOn(&self, frecstate: super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IETFilter {}
#[cfg(feature = "Win32_Foundation")]
impl IETFilter_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IETFilter_Impl, const OFFSET: isize>() -> IETFilter_Vtbl {
        unsafe extern "system" fn EvalRatObjOK<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IETFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phrcocreateretval: *mut ::windows::core::HRESULT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EvalRatObjOK() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(phrcocreateretval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrRating<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IETFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, plbfenattr: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrRating(::core::mem::transmute_copy(&pensystem), ::core::mem::transmute_copy(&penrating), ::core::mem::transmute_copy(&plbfenattr)).into()
        }
        unsafe extern "system" fn GetCurrLicenseExpDate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IETFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prottype: *const ProtType, lpdatetime: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrLicenseExpDate(::core::mem::transmute_copy(&prottype)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpdatetime, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastErrorCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IETFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLastErrorCode().into()
        }
        unsafe extern "system" fn SetRecordingOn<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IETFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, frecstate: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRecordingOn(::core::mem::transmute_copy(&frecstate)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            EvalRatObjOK: EvalRatObjOK::<Identity, Impl, OFFSET>,
            GetCurrRating: GetCurrRating::<Identity, Impl, OFFSET>,
            GetCurrLicenseExpDate: GetCurrLicenseExpDate::<Identity, Impl, OFFSET>,
            GetLastErrorCode: GetLastErrorCode::<Identity, Impl, OFFSET>,
            SetRecordingOn: SetRecordingOn::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IETFilter as ::windows::core::Interface>::IID
    }
}
pub trait IETFilterConfig_Impl: Sized {
    fn InitLicense(&self, licenseid: i32) -> ::windows::core::Result<()>;
    fn GetSecureChannelObject(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
}
impl ::windows::core::RuntimeName for IETFilterConfig {}
impl IETFilterConfig_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IETFilterConfig_Impl, const OFFSET: isize>() -> IETFilterConfig_Vtbl {
        unsafe extern "system" fn InitLicense<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IETFilterConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, licenseid: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.InitLicense(::core::mem::transmute_copy(&licenseid)).into()
        }
        unsafe extern "system" fn GetSecureChannelObject<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IETFilterConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunkdrmsecurechannel: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSecureChannelObject() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunkdrmsecurechannel, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            InitLicense: InitLicense::<Identity, Impl, OFFSET>,
            GetSecureChannelObject: GetSecureChannelObject::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IETFilterConfig as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IETFilterEvents_Impl: Sized + super::super::System::Com::IDispatch_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IETFilterEvents {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IETFilterEvents_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IETFilterEvents_Impl, const OFFSET: isize>() -> IETFilterEvents_Vtbl {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IETFilterEvents as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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 super::super::System::Com::VARIANT, valuemax: *mut super::super::System::Com::VARIANT, steppingdelta: *mut super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
    fn GetParameterValues(&self, api: *const ::windows::core::GUID, values: *mut *mut super::super::System::Com::VARIANT, valuescount: *mut u32) -> ::windows::core::Result<()>;
    fn GetDefaultValue(&self, api: *const ::windows::core::GUID) -> ::windows::core::Result<super::super::System::Com::VARIANT>;
    fn GetValue(&self, api: *const ::windows::core::GUID) -> ::windows::core::Result<super::super::System::Com::VARIANT>;
    fn SetValue(&self, api: *const ::windows::core::GUID, value: *const super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IEncoderAPI {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IEncoderAPI_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEncoderAPI_Impl, const OFFSET: isize>() -> IEncoderAPI_Vtbl {
        unsafe extern "system" fn IsSupported<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEncoderAPI_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, api: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsSupported(::core::mem::transmute_copy(&api)).into()
        }
        unsafe extern "system" fn IsAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEncoderAPI_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, api: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsAvailable(::core::mem::transmute_copy(&api)).into()
        }
        unsafe extern "system" fn GetParameterRange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEncoderAPI_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, api: *const ::windows::core::GUID, valuemin: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, valuemax: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, steppingdelta: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetParameterRange(::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<Impl = Impl>, Impl: IEncoderAPI_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, api: *const ::windows::core::GUID, values: *mut *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, valuescount: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetParameterValues(::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<Impl = Impl>, Impl: IEncoderAPI_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, api: *const ::windows::core::GUID, value: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDefaultValue(::core::mem::transmute_copy(&api)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(value, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetValue<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEncoderAPI_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, api: *const ::windows::core::GUID, value: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetValue(::core::mem::transmute_copy(&api)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(value, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetValue<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEncoderAPI_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, api: *const ::windows::core::GUID, value: *const ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetValue(::core::mem::transmute_copy(&api), ::core::mem::transmute_copy(&value)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IsSupported: IsSupported::<Identity, Impl, OFFSET>,
            IsAvailable: IsAvailable::<Identity, Impl, OFFSET>,
            GetParameterRange: GetParameterRange::<Identity, Impl, OFFSET>,
            GetParameterValues: GetParameterValues::<Identity, Impl, OFFSET>,
            GetDefaultValue: GetDefaultValue::<Identity, Impl, OFFSET>,
            GetValue: GetValue::<Identity, Impl, OFFSET>,
            SetValue: SetValue::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IEncoderAPI as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEnumComponentTypes_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut ::core::option::Option<IComponentType>, pceltfetched: *mut u32) -> ::windows::core::Result<()>;
    fn Skip(&self, celt: u32) -> ::windows::core::Result<()>;
    fn Reset(&self) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<IEnumComponentTypes>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IEnumComponentTypes {}
#[cfg(feature = "Win32_System_Com")]
impl IEnumComponentTypes_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumComponentTypes_Impl, const OFFSET: isize>() -> IEnumComponentTypes_Vtbl {
        unsafe extern "system" fn Next<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumComponentTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, celt: u32, rgelt: *mut *mut ::core::ffi::c_void, pceltfetched: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Next(::core::mem::transmute_copy(&celt), ::core::mem::transmute_copy(&rgelt), ::core::mem::transmute_copy(&pceltfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumComponentTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, celt: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Skip(::core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumComponentTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumComponentTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, Impl, OFFSET>,
            Skip: Skip::<Identity, Impl, OFFSET>,
            Reset: Reset::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IEnumComponentTypes as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEnumComponents_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut ::core::option::Option<IComponent>, pceltfetched: *mut u32) -> ::windows::core::Result<()>;
    fn Skip(&self, celt: u32) -> ::windows::core::Result<()>;
    fn Reset(&self) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<IEnumComponents>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IEnumComponents {}
#[cfg(feature = "Win32_System_Com")]
impl IEnumComponents_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumComponents_Impl, const OFFSET: isize>() -> IEnumComponents_Vtbl {
        unsafe extern "system" fn Next<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumComponents_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, celt: u32, rgelt: *mut *mut ::core::ffi::c_void, pceltfetched: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Next(::core::mem::transmute_copy(&celt), ::core::mem::transmute_copy(&rgelt), ::core::mem::transmute_copy(&pceltfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumComponents_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, celt: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Skip(::core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumComponents_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumComponents_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, Impl, OFFSET>,
            Skip: Skip::<Identity, Impl, OFFSET>,
            Reset: Reset::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IEnumComponents as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEnumFilters_Impl: Sized {
    fn Next(&self, cfilters: u32, ppfilter: *mut ::core::option::Option<IBaseFilter>, pcfetched: *mut u32) -> ::windows::core::Result<()>;
    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<Impl = Impl>, Impl: IEnumFilters_Impl, const OFFSET: isize>() -> IEnumFilters_Vtbl {
        unsafe extern "system" fn Next<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumFilters_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cfilters: u32, ppfilter: *mut *mut ::core::ffi::c_void, pcfetched: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Next(::core::mem::transmute_copy(&cfilters), ::core::mem::transmute_copy(&ppfilter), ::core::mem::transmute_copy(&pcfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumFilters_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cfilters: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Skip(::core::mem::transmute_copy(&cfilters)).into()
        }
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumFilters_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumFilters_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, Impl, OFFSET>,
            Skip: Skip::<Identity, Impl, OFFSET>,
            Reset: Reset::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IEnumFilters as ::windows::core::Interface>::IID
    }
}
pub trait IEnumGuideDataProperties_Impl: Sized {
    fn Next(&self, celt: u32, ppprop: *mut ::core::option::Option<IGuideDataProperty>, pcelt: *mut u32) -> ::windows::core::Result<()>;
    fn Skip(&self, celt: u32) -> ::windows::core::Result<()>;
    fn Reset(&self) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<IEnumGuideDataProperties>;
}
impl ::windows::core::RuntimeName for IEnumGuideDataProperties {}
impl IEnumGuideDataProperties_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumGuideDataProperties_Impl, const OFFSET: isize>() -> IEnumGuideDataProperties_Vtbl {
        unsafe extern "system" fn Next<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumGuideDataProperties_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, celt: u32, ppprop: *mut *mut ::core::ffi::c_void, pcelt: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Next(::core::mem::transmute_copy(&celt), ::core::mem::transmute_copy(&ppprop), ::core::mem::transmute_copy(&pcelt)).into()
        }
        unsafe extern "system" fn Skip<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumGuideDataProperties_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, celt: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Skip(::core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumGuideDataProperties_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumGuideDataProperties_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, Impl, OFFSET>,
            Skip: Skip::<Identity, Impl, OFFSET>,
            Reset: Reset::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IEnumGuideDataProperties as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEnumMSVidGraphSegment_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut ::core::option::Option<IMSVidGraphSegment>, pceltfetched: *mut u32) -> ::windows::core::Result<()>;
    fn Skip(&self, celt: u32) -> ::windows::core::Result<()>;
    fn Reset(&self) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<IEnumMSVidGraphSegment>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IEnumMSVidGraphSegment {}
#[cfg(feature = "Win32_System_Com")]
impl IEnumMSVidGraphSegment_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumMSVidGraphSegment_Impl, const OFFSET: isize>() -> IEnumMSVidGraphSegment_Vtbl {
        unsafe extern "system" fn Next<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, celt: u32, rgelt: *mut *mut ::core::ffi::c_void, pceltfetched: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Next(::core::mem::transmute_copy(&celt), ::core::mem::transmute_copy(&rgelt), ::core::mem::transmute_copy(&pceltfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, celt: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Skip(::core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, Impl, OFFSET>,
            Skip: Skip::<Identity, Impl, OFFSET>,
            Reset: Reset::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IEnumMSVidGraphSegment as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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::Result<()>;
    fn Skip(&self, cmediatypes: u32) -> ::windows::core::Result<()>;
    fn Reset(&self) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<IEnumMediaTypes>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IEnumMediaTypes {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl IEnumMediaTypes_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumMediaTypes_Impl, const OFFSET: isize>() -> IEnumMediaTypes_Vtbl {
        unsafe extern "system" fn Next<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumMediaTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cmediatypes: u32, ppmediatypes: *mut *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>, pcfetched: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Next(::core::mem::transmute_copy(&cmediatypes), ::core::mem::transmute_copy(&ppmediatypes), ::core::mem::transmute_copy(&pcfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumMediaTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cmediatypes: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Skip(::core::mem::transmute_copy(&cmediatypes)).into()
        }
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumMediaTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumMediaTypes_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, Impl, OFFSET>,
            Skip: Skip::<Identity, Impl, OFFSET>,
            Reset: Reset::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, 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::Result<()>;
    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<Impl = Impl>, Impl: IEnumPIDMap_Impl, const OFFSET: isize>() -> IEnumPIDMap_Vtbl {
        unsafe extern "system" fn Next<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumPIDMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, crequest: u32, ppidmap: *mut PID_MAP, pcreceived: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Next(::core::mem::transmute_copy(&crequest), ::core::mem::transmute_copy(&ppidmap), ::core::mem::transmute_copy(&pcreceived)).into()
        }
        unsafe extern "system" fn Skip<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumPIDMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, crecords: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Skip(::core::mem::transmute_copy(&crecords)).into()
        }
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumPIDMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumPIDMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppienumpidmap: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppienumpidmap, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, Impl, OFFSET>,
            Skip: Skip::<Identity, Impl, OFFSET>,
            Reset: Reset::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, 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 ::core::option::Option<IPin>, pcfetched: *mut u32) -> ::windows::core::Result<()>;
    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<Impl = Impl>, Impl: IEnumPins_Impl, const OFFSET: isize>() -> IEnumPins_Vtbl {
        unsafe extern "system" fn Next<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumPins_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cpins: u32, pppins: *mut *mut ::core::ffi::c_void, pcfetched: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Next(::core::mem::transmute_copy(&cpins), ::core::mem::transmute_copy(&pppins), ::core::mem::transmute_copy(&pcfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumPins_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cpins: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Skip(::core::mem::transmute_copy(&cpins)).into()
        }
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumPins_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumPins_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, Impl, OFFSET>,
            Skip: Skip::<Identity, Impl, OFFSET>,
            Reset: Reset::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, 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::Result<()>;
    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<Impl = Impl>, Impl: IEnumRegFilters_Impl, const OFFSET: isize>() -> IEnumRegFilters_Vtbl {
        unsafe extern "system" fn Next<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumRegFilters_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cfilters: u32, apregfilter: *mut *mut REGFILTER, pcfetched: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Next(::core::mem::transmute_copy(&cfilters), ::core::mem::transmute_copy(&apregfilter), ::core::mem::transmute_copy(&pcfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumRegFilters_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cfilters: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Skip(::core::mem::transmute_copy(&cfilters)).into()
        }
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumRegFilters_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumRegFilters_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, Impl, OFFSET>,
            Skip: Skip::<Identity, Impl, OFFSET>,
            Reset: Reset::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IEnumRegFilters as ::windows::core::Interface>::IID
    }
}
pub trait IEnumStreamBufferRecordingAttrib_Impl: Sized {
    fn Next(&self, crequest: u32, pstreambufferattribute: *mut STREAMBUFFER_ATTRIBUTE, pcreceived: *mut u32) -> ::windows::core::Result<()>;
    fn Skip(&self, crecords: u32) -> ::windows::core::Result<()>;
    fn Reset(&self) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<IEnumStreamBufferRecordingAttrib>;
}
impl ::windows::core::RuntimeName for IEnumStreamBufferRecordingAttrib {}
impl IEnumStreamBufferRecordingAttrib_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumStreamBufferRecordingAttrib_Impl, const OFFSET: isize>() -> IEnumStreamBufferRecordingAttrib_Vtbl {
        unsafe extern "system" fn Next<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumStreamBufferRecordingAttrib_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, crequest: u32, pstreambufferattribute: *mut STREAMBUFFER_ATTRIBUTE, pcreceived: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Next(::core::mem::transmute_copy(&crequest), ::core::mem::transmute_copy(&pstreambufferattribute), ::core::mem::transmute_copy(&pcreceived)).into()
        }
        unsafe extern "system" fn Skip<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumStreamBufferRecordingAttrib_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, crecords: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Skip(::core::mem::transmute_copy(&crecords)).into()
        }
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumStreamBufferRecordingAttrib_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumStreamBufferRecordingAttrib_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppienumstreambufferattrib: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppienumstreambufferattrib, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, Impl, OFFSET>,
            Skip: Skip::<Identity, Impl, OFFSET>,
            Reset: Reset::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IEnumStreamBufferRecordingAttrib 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<Impl = Impl>, Impl: IEnumStreamIdMap_Impl, const OFFSET: isize>() -> IEnumStreamIdMap_Vtbl {
        unsafe extern "system" fn Next<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumStreamIdMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, crequest: u32, pstreamidmap: *mut STREAM_ID_MAP, pcreceived: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Next(::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<Impl = Impl>, Impl: IEnumStreamIdMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, crecords: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Skip(::core::mem::transmute_copy(&crecords)).into()
        }
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumStreamIdMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumStreamIdMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppienumstreamidmap: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppienumstreamidmap, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, Impl, OFFSET>,
            Skip: Skip::<Identity, Impl, OFFSET>,
            Reset: Reset::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IEnumStreamIdMap as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEnumTuneRequests_Impl: Sized {
    fn Next(&self, celt: u32, ppprop: *mut ::core::option::Option<ITuneRequest>, pcelt: *mut u32) -> ::windows::core::Result<()>;
    fn Skip(&self, celt: u32) -> ::windows::core::Result<()>;
    fn Reset(&self) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<IEnumTuneRequests>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IEnumTuneRequests {}
#[cfg(feature = "Win32_System_Com")]
impl IEnumTuneRequests_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumTuneRequests_Impl, const OFFSET: isize>() -> IEnumTuneRequests_Vtbl {
        unsafe extern "system" fn Next<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumTuneRequests_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, celt: u32, ppprop: *mut *mut ::core::ffi::c_void, pcelt: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Next(::core::mem::transmute_copy(&celt), ::core::mem::transmute_copy(&ppprop), ::core::mem::transmute_copy(&pcelt)).into()
        }
        unsafe extern "system" fn Skip<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumTuneRequests_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, celt: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Skip(::core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumTuneRequests_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumTuneRequests_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, Impl, OFFSET>,
            Skip: Skip::<Identity, Impl, OFFSET>,
            Reset: Reset::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IEnumTuneRequests as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEnumTuningSpaces_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut ::core::option::Option<ITuningSpace>, pceltfetched: *mut u32) -> ::windows::core::Result<()>;
    fn Skip(&self, celt: u32) -> ::windows::core::Result<()>;
    fn Reset(&self) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<IEnumTuningSpaces>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IEnumTuningSpaces {}
#[cfg(feature = "Win32_System_Com")]
impl IEnumTuningSpaces_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumTuningSpaces_Impl, const OFFSET: isize>() -> IEnumTuningSpaces_Vtbl {
        unsafe extern "system" fn Next<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumTuningSpaces_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, celt: u32, rgelt: *mut *mut ::core::ffi::c_void, pceltfetched: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Next(::core::mem::transmute_copy(&celt), ::core::mem::transmute_copy(&rgelt), ::core::mem::transmute_copy(&pceltfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumTuningSpaces_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, celt: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Skip(::core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumTuningSpaces_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEnumTuningSpaces_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, Impl, OFFSET>,
            Skip: Skip::<Identity, Impl, OFFSET>,
            Reset: Reset::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IEnumTuningSpaces as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IEvalRat_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn get_BlockedRatingAttributes(&self, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel) -> ::windows::core::Result<i32>;
    fn put_BlockedRatingAttributes(&self, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel, lbfattrs: i32) -> ::windows::core::Result<()>;
    fn BlockUnRated(&self) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn SetBlockUnRated(&self, fblockunratedshows: super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
    fn MostRestrictiveRating(&self, ensystem1: EnTvRat_System, enenlevel1: EnTvRat_GenericLevel, lbfenattr1: i32, ensystem2: EnTvRat_System, enenlevel2: EnTvRat_GenericLevel, lbfenattr2: i32, pensystem: *mut EnTvRat_System, penenlevel: *mut EnTvRat_GenericLevel, plbfenattr: *mut i32) -> ::windows::core::Result<()>;
    fn TestRating(&self, enshowsystem: EnTvRat_System, enshowlevel: EnTvRat_GenericLevel, lbfenshowattributes: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IEvalRat {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IEvalRat_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEvalRat_Impl, const OFFSET: isize>() -> IEvalRat_Vtbl {
        unsafe extern "system" fn get_BlockedRatingAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEvalRat_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel, plbfattrs: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_BlockedRatingAttributes(::core::mem::transmute_copy(&ensystem), ::core::mem::transmute_copy(&enlevel)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plbfattrs, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_BlockedRatingAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEvalRat_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel, lbfattrs: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_BlockedRatingAttributes(::core::mem::transmute_copy(&ensystem), ::core::mem::transmute_copy(&enlevel), ::core::mem::transmute_copy(&lbfattrs)).into()
        }
        unsafe extern "system" fn BlockUnRated<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEvalRat_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfblockunratedshows: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.BlockUnRated() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfblockunratedshows, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBlockUnRated<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEvalRat_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fblockunratedshows: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBlockUnRated(::core::mem::transmute_copy(&fblockunratedshows)).into()
        }
        unsafe extern "system" fn MostRestrictiveRating<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEvalRat_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ensystem1: EnTvRat_System, enenlevel1: EnTvRat_GenericLevel, lbfenattr1: i32, ensystem2: EnTvRat_System, enenlevel2: EnTvRat_GenericLevel, lbfenattr2: i32, pensystem: *mut EnTvRat_System, penenlevel: *mut EnTvRat_GenericLevel, plbfenattr: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MostRestrictiveRating(::core::mem::transmute_copy(&ensystem1), ::core::mem::transmute_copy(&enenlevel1), ::core::mem::transmute_copy(&lbfenattr1), ::core::mem::transmute_copy(&ensystem2), ::core::mem::transmute_copy(&enenlevel2), ::core::mem::transmute_copy(&lbfenattr2), ::core::mem::transmute_copy(&pensystem), ::core::mem::transmute_copy(&penenlevel), ::core::mem::transmute_copy(&plbfenattr)).into()
        }
        unsafe extern "system" fn TestRating<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IEvalRat_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, enshowsystem: EnTvRat_System, enshowlevel: EnTvRat_GenericLevel, lbfenshowattributes: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TestRating(::core::mem::transmute_copy(&enshowsystem), ::core::mem::transmute_copy(&enshowlevel), ::core::mem::transmute_copy(&lbfenshowattributes)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            get_BlockedRatingAttributes: get_BlockedRatingAttributes::<Identity, Impl, OFFSET>,
            put_BlockedRatingAttributes: put_BlockedRatingAttributes::<Identity, Impl, OFFSET>,
            BlockUnRated: BlockUnRated::<Identity, Impl, OFFSET>,
            SetBlockUnRated: SetBlockUnRated::<Identity, Impl, OFFSET>,
            MostRestrictiveRating: MostRestrictiveRating::<Identity, Impl, OFFSET>,
            TestRating: TestRating::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IEvalRat as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IFileSinkFilter {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl IFileSinkFilter_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFileSinkFilter_Impl, const OFFSET: isize>() -> IFileSinkFilter_Vtbl {
        unsafe extern "system" fn SetFileName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFileSinkFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszfilename: ::windows::core::PCWSTR, pmt: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFileName(::core::mem::transmute(&pszfilename), ::core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn GetCurFile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFileSinkFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppszfilename: *mut ::windows::core::PWSTR, pmt: *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurFile(::core::mem::transmute_copy(&ppszfilename), ::core::mem::transmute_copy(&pmt)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFileName: SetFileName::<Identity, Impl, OFFSET>,
            GetCurFile: GetCurFile::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IFileSinkFilter as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IFileSinkFilter2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl IFileSinkFilter2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFileSinkFilter2_Impl, const OFFSET: isize>() -> IFileSinkFilter2_Vtbl {
        unsafe extern "system" fn SetMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFileSinkFilter2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMode(::core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn GetMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFileSinkFilter2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwflags: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwflags, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IFileSinkFilter_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetMode: SetMode::<Identity, Impl, OFFSET>,
            GetMode: GetMode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IFileSinkFilter2 as ::windows::core::Interface>::IID || iid == &<IFileSinkFilter as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IFileSourceFilter {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl IFileSourceFilter_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFileSourceFilter_Impl, const OFFSET: isize>() -> IFileSourceFilter_Vtbl {
        unsafe extern "system" fn Load<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFileSourceFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszfilename: ::windows::core::PCWSTR, pmt: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Load(::core::mem::transmute(&pszfilename), ::core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn GetCurFile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFileSourceFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppszfilename: *mut ::windows::core::PWSTR, pmt: *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurFile(::core::mem::transmute_copy(&ppszfilename), ::core::mem::transmute_copy(&pmt)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Load: Load::<Identity, Impl, OFFSET>,
            GetCurFile: GetCurFile::<Identity, Impl, 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: &::core::option::Option<IBaseFilter>, pendfilter: &::core::option::Option<IBaseFilter>) -> ::windows::core::Result<()>;
    fn PauseChain(&self, pstartfilter: &::core::option::Option<IBaseFilter>, pendfilter: &::core::option::Option<IBaseFilter>) -> ::windows::core::Result<()>;
    fn StopChain(&self, pstartfilter: &::core::option::Option<IBaseFilter>, pendfilter: &::core::option::Option<IBaseFilter>) -> ::windows::core::Result<()>;
    fn RemoveChain(&self, pstartfilter: &::core::option::Option<IBaseFilter>, pendfilter: &::core::option::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<Impl = Impl>, Impl: IFilterChain_Impl, const OFFSET: isize>() -> IFilterChain_Vtbl {
        unsafe extern "system" fn StartChain<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterChain_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstartfilter: *mut ::core::ffi::c_void, pendfilter: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StartChain(::core::mem::transmute(&pstartfilter), ::core::mem::transmute(&pendfilter)).into()
        }
        unsafe extern "system" fn PauseChain<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterChain_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstartfilter: *mut ::core::ffi::c_void, pendfilter: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PauseChain(::core::mem::transmute(&pstartfilter), ::core::mem::transmute(&pendfilter)).into()
        }
        unsafe extern "system" fn StopChain<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterChain_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstartfilter: *mut ::core::ffi::c_void, pendfilter: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StopChain(::core::mem::transmute(&pstartfilter), ::core::mem::transmute(&pendfilter)).into()
        }
        unsafe extern "system" fn RemoveChain<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterChain_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstartfilter: *mut ::core::ffi::c_void, pendfilter: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RemoveChain(::core::mem::transmute(&pstartfilter), ::core::mem::transmute(&pendfilter)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartChain: StartChain::<Identity, Impl, OFFSET>,
            PauseChain: PauseChain::<Identity, Impl, OFFSET>,
            StopChain: StopChain::<Identity, Impl, OFFSET>,
            RemoveChain: RemoveChain::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IFilterChain as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IFilterGraph_Impl: Sized {
    fn AddFilter(&self, pfilter: &::core::option::Option<IBaseFilter>, pname: &::windows::core::PCWSTR) -> ::windows::core::Result<()>;
    fn RemoveFilter(&self, pfilter: &::core::option::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: &::core::option::Option<IPin>, ppinin: &::core::option::Option<IPin>, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> ::windows::core::Result<()>;
    fn Reconnect(&self, ppin: &::core::option::Option<IPin>) -> ::windows::core::Result<()>;
    fn Disconnect(&self, ppin: &::core::option::Option<IPin>) -> ::windows::core::Result<()>;
    fn SetDefaultSyncSource(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl ::windows::core::RuntimeName for IFilterGraph {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IFilterGraph_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph_Impl, const OFFSET: isize>() -> IFilterGraph_Vtbl {
        unsafe extern "system" fn AddFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfilter: *mut ::core::ffi::c_void, pname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AddFilter(::core::mem::transmute(&pfilter), ::core::mem::transmute(&pname)).into()
        }
        unsafe extern "system" fn RemoveFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfilter: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RemoveFilter(::core::mem::transmute(&pfilter)).into()
        }
        unsafe extern "system" fn EnumFilters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumFilters() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FindFilterByName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pname: ::windows::core::PCWSTR, ppfilter: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FindFilterByName(::core::mem::transmute(&pname)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppfilter, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ConnectDirect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppinout: *mut ::core::ffi::c_void, ppinin: *mut ::core::ffi::c_void, pmt: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConnectDirect(::core::mem::transmute(&ppinout), ::core::mem::transmute(&ppinin), ::core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn Reconnect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppin: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reconnect(::core::mem::transmute(&ppin)).into()
        }
        unsafe extern "system" fn Disconnect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppin: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Disconnect(::core::mem::transmute(&ppin)).into()
        }
        unsafe extern "system" fn SetDefaultSyncSource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDefaultSyncSource().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddFilter: AddFilter::<Identity, Impl, OFFSET>,
            RemoveFilter: RemoveFilter::<Identity, Impl, OFFSET>,
            EnumFilters: EnumFilters::<Identity, Impl, OFFSET>,
            FindFilterByName: FindFilterByName::<Identity, Impl, OFFSET>,
            ConnectDirect: ConnectDirect::<Identity, Impl, OFFSET>,
            Reconnect: Reconnect::<Identity, Impl, OFFSET>,
            Disconnect: Disconnect::<Identity, Impl, OFFSET>,
            SetDefaultSyncSource: SetDefaultSyncSource::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IFilterGraph as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IFilterGraph2_Impl: Sized + IGraphBuilder_Impl {
    fn AddSourceFilterForMoniker(&self, pmoniker: &::core::option::Option<super::super::System::Com::IMoniker>, pctx: &::core::option::Option<super::super::System::Com::IBindCtx>, lpcwstrfiltername: &::windows::core::PCWSTR) -> ::windows::core::Result<IBaseFilter>;
    fn ReconnectEx(&self, ppin: &::core::option::Option<IPin>, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> ::windows::core::Result<()>;
    fn RenderEx(&self, ppinout: &::core::option::Option<IPin>, dwflags: u32, pvcontext: *mut u32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl ::windows::core::RuntimeName for IFilterGraph2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IFilterGraph2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph2_Impl, const OFFSET: isize>() -> IFilterGraph2_Vtbl {
        unsafe extern "system" fn AddSourceFilterForMoniker<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AddSourceFilterForMoniker(::core::mem::transmute(&pmoniker), ::core::mem::transmute(&pctx), ::core::mem::transmute(&lpcwstrfiltername)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppfilter, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ReconnectEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppin: *mut ::core::ffi::c_void, pmt: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReconnectEx(::core::mem::transmute(&ppin), ::core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn RenderEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppinout: *mut ::core::ffi::c_void, dwflags: u32, pvcontext: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RenderEx(::core::mem::transmute(&ppinout), ::core::mem::transmute_copy(&dwflags), ::core::mem::transmute_copy(&pvcontext)).into()
        }
        Self {
            base__: IGraphBuilder_Vtbl::new::<Identity, Impl, OFFSET>(),
            AddSourceFilterForMoniker: AddSourceFilterForMoniker::<Identity, Impl, OFFSET>,
            ReconnectEx: ReconnectEx::<Identity, Impl, OFFSET>,
            RenderEx: RenderEx::<Identity, Impl, 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_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IFilterGraph3_Impl: Sized + IFilterGraph2_Impl {
    fn SetSyncSourceEx(&self, pclockformostoffiltergraph: &::core::option::Option<super::IReferenceClock>, pclockforfilter: &::core::option::Option<super::IReferenceClock>, pfilter: &::core::option::Option<IBaseFilter>) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl ::windows::core::RuntimeName for IFilterGraph3 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IFilterGraph3_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph3_Impl, const OFFSET: isize>() -> IFilterGraph3_Vtbl {
        unsafe extern "system" fn SetSyncSourceEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterGraph3_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSyncSourceEx(::core::mem::transmute(&pclockformostoffiltergraph), ::core::mem::transmute(&pclockforfilter), ::core::mem::transmute(&pfilter)).into()
        }
        Self { base__: IFilterGraph2_Vtbl::new::<Identity, Impl, OFFSET>(), SetSyncSourceEx: SetSyncSourceEx::<Identity, Impl, 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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IFilterInfo {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IFilterInfo_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterInfo_Impl, const OFFSET: isize>() -> IFilterInfo_Vtbl {
        unsafe extern "system" fn FindPin<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strpinid: ::core::mem::ManuallyDrop<::windows::core::BSTR>, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FindPin(::core::mem::transmute(&strpinid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Name<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Name() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(strname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VendorInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strvendorinfo: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VendorInfo() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(strvendorinfo, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Filter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Filter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Pins<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Pins() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsFileSource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbissource: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IsFileSource() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbissource, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Filename<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstrfilename: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Filename() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstrfilename, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFilename<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strfilename: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFilename(::core::mem::transmute(&strfilename)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            FindPin: FindPin::<Identity, Impl, OFFSET>,
            Name: Name::<Identity, Impl, OFFSET>,
            VendorInfo: VendorInfo::<Identity, Impl, OFFSET>,
            Filter: Filter::<Identity, Impl, OFFSET>,
            Pins: Pins::<Identity, Impl, OFFSET>,
            IsFileSource: IsFileSource::<Identity, Impl, OFFSET>,
            Filename: Filename::<Identity, Impl, OFFSET>,
            SetFilename: SetFilename::<Identity, Impl, 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
    }
}
#[cfg(feature = "Win32_Foundation")]
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 ::core::option::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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IFilterMapper {}
#[cfg(feature = "Win32_Foundation")]
impl IFilterMapper_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterMapper_Impl, const OFFSET: isize>() -> IFilterMapper_Vtbl {
        unsafe extern "system" fn RegisterFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterMapper_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, clsid: ::windows::core::GUID, name: ::windows::core::PCWSTR, dwmerit: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterFilter(::core::mem::transmute(&clsid), ::core::mem::transmute(&name), ::core::mem::transmute_copy(&dwmerit)).into()
        }
        unsafe extern "system" fn RegisterFilterInstance<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterMapper_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.RegisterFilterInstance(::core::mem::transmute(&clsid), ::core::mem::transmute(&name)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(mrid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterPin<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterMapper_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterPin(::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<Impl = Impl>, Impl: IFilterMapper_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterPinType(::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<Impl = Impl>, Impl: IFilterMapper_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, filter: ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnregisterFilter(::core::mem::transmute(&filter)).into()
        }
        unsafe extern "system" fn UnregisterFilterInstance<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterMapper_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mrid: ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnregisterFilterInstance(::core::mem::transmute(&mrid)).into()
        }
        unsafe extern "system" fn UnregisterPin<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterMapper_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, filter: ::windows::core::GUID, name: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnregisterPin(::core::mem::transmute(&filter), ::core::mem::transmute(&name)).into()
        }
        unsafe extern "system" fn EnumMatchingFilters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterMapper_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EnumMatchingFilters(::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, Impl, OFFSET>,
            RegisterFilterInstance: RegisterFilterInstance::<Identity, Impl, OFFSET>,
            RegisterPin: RegisterPin::<Identity, Impl, OFFSET>,
            RegisterPinType: RegisterPinType::<Identity, Impl, OFFSET>,
            UnregisterFilter: UnregisterFilter::<Identity, Impl, OFFSET>,
            UnregisterFilterInstance: UnregisterFilterInstance::<Identity, Impl, OFFSET>,
            UnregisterPin: UnregisterPin::<Identity, Impl, OFFSET>,
            EnumMatchingFilters: EnumMatchingFilters::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IFilterMapper as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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 ::core::option::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 ::core::option::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(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
impl ::windows::core::RuntimeName for IFilterMapper2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
impl IFilterMapper2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterMapper2_Impl, const OFFSET: isize>() -> IFilterMapper2_Vtbl {
        unsafe extern "system" fn CreateCategory<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterMapper2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, clsidcategory: *const ::windows::core::GUID, dwcategorymerit: u32, description: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CreateCategory(::core::mem::transmute_copy(&clsidcategory), ::core::mem::transmute_copy(&dwcategorymerit), ::core::mem::transmute(&description)).into()
        }
        unsafe extern "system" fn UnregisterFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterMapper2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnregisterFilter(::core::mem::transmute_copy(&pclsidcategory), ::core::mem::transmute(&szinstance), ::core::mem::transmute_copy(&filter)).into()
        }
        unsafe extern "system" fn RegisterFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterMapper2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterFilter(::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<Impl = Impl>, Impl: IFilterMapper2_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EnumMatchingFilters(
                ::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, Impl, OFFSET>,
            UnregisterFilter: UnregisterFilter::<Identity, Impl, OFFSET>,
            RegisterFilter: RegisterFilter::<Identity, Impl, OFFSET>,
            EnumMatchingFilters: EnumMatchingFilters::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IFilterMapper2 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
pub trait IFilterMapper3_Impl: Sized + IFilterMapper2_Impl {
    fn GetICreateDevEnum(&self) -> ::windows::core::Result<ICreateDevEnum>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
impl ::windows::core::RuntimeName for IFilterMapper3 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
impl IFilterMapper3_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterMapper3_Impl, const OFFSET: isize>() -> IFilterMapper3_Vtbl {
        unsafe extern "system" fn GetICreateDevEnum<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFilterMapper3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetICreateDevEnum() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: IFilterMapper2_Vtbl::new::<Identity, Impl, OFFSET>(), GetICreateDevEnum: GetICreateDevEnum::<Identity, Impl, 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<Impl = Impl>, Impl: IFrequencyMap_Impl, const OFFSET: isize>() -> IFrequencyMap_Vtbl {
        unsafe extern "system" fn get_FrequencyMapping<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFrequencyMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcount: *mut u32, ppullist: *mut *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_FrequencyMapping(::core::mem::transmute_copy(&ulcount), ::core::mem::transmute_copy(&ppullist)).into()
        }
        unsafe extern "system" fn put_FrequencyMapping<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFrequencyMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcount: u32, plist: *const u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_FrequencyMapping(::core::mem::transmute_copy(&ulcount), ::core::mem::transmute_copy(&plist)).into()
        }
        unsafe extern "system" fn CountryCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFrequencyMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcountrycode: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CountryCode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulcountrycode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCountryCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFrequencyMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcountrycode: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCountryCode(::core::mem::transmute_copy(&ulcountrycode)).into()
        }
        unsafe extern "system" fn get_DefaultFrequencyMapping<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFrequencyMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcountrycode: u32, pulcount: *mut u32, ppullist: *mut *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_DefaultFrequencyMapping(::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<Impl = Impl>, Impl: IFrequencyMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcount: *mut u32, ppullist: *mut *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_CountryCodeList(::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, Impl, OFFSET>,
            put_FrequencyMapping: put_FrequencyMapping::<Identity, Impl, OFFSET>,
            CountryCode: CountryCode::<Identity, Impl, OFFSET>,
            SetCountryCode: SetCountryCode::<Identity, Impl, OFFSET>,
            get_DefaultFrequencyMapping: get_DefaultFrequencyMapping::<Identity, Impl, OFFSET>,
            get_CountryCodeList: get_CountryCodeList::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IFrequencyMap as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IFullScreenVideo {}
#[cfg(feature = "Win32_Foundation")]
impl IFullScreenVideo_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>() -> IFullScreenVideo_Vtbl {
        unsafe extern "system" fn CountModes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmodes: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CountModes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmodes, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetModeInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: i32, pwidth: *mut i32, pheight: *mut i32, pdepth: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetModeInfo(::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<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmode: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsModeAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsModeAvailable(::core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn IsModeEnabled<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsModeEnabled(::core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn SetEnabled<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: i32, benabled: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetEnabled(::core::mem::transmute_copy(&mode), ::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn GetClipFactor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pclipfactor: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetClipFactor() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pclipfactor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetClipFactor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, clipfactor: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetClipFactor(::core::mem::transmute_copy(&clipfactor)).into()
        }
        unsafe extern "system" fn SetMessageDrain<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMessageDrain(::core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn GetMessageDrain<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hwnd: *mut super::super::Foundation::HWND) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMessageDrain() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(hwnd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMonitor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, monitor: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMonitor(::core::mem::transmute_copy(&monitor)).into()
        }
        unsafe extern "system" fn GetMonitor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, monitor: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMonitor() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(monitor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn HideOnDeactivate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hide: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.HideOnDeactivate(::core::mem::transmute_copy(&hide)).into()
        }
        unsafe extern "system" fn IsHideOnDeactivate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsHideOnDeactivate().into()
        }
        unsafe extern "system" fn SetCaption<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strcaption: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCaption(::core::mem::transmute(&strcaption)).into()
        }
        unsafe extern "system" fn GetCaption<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstrcaption: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCaption() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstrcaption, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefault<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDefault().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CountModes: CountModes::<Identity, Impl, OFFSET>,
            GetModeInfo: GetModeInfo::<Identity, Impl, OFFSET>,
            GetCurrentMode: GetCurrentMode::<Identity, Impl, OFFSET>,
            IsModeAvailable: IsModeAvailable::<Identity, Impl, OFFSET>,
            IsModeEnabled: IsModeEnabled::<Identity, Impl, OFFSET>,
            SetEnabled: SetEnabled::<Identity, Impl, OFFSET>,
            GetClipFactor: GetClipFactor::<Identity, Impl, OFFSET>,
            SetClipFactor: SetClipFactor::<Identity, Impl, OFFSET>,
            SetMessageDrain: SetMessageDrain::<Identity, Impl, OFFSET>,
            GetMessageDrain: GetMessageDrain::<Identity, Impl, OFFSET>,
            SetMonitor: SetMonitor::<Identity, Impl, OFFSET>,
            GetMonitor: GetMonitor::<Identity, Impl, OFFSET>,
            HideOnDeactivate: HideOnDeactivate::<Identity, Impl, OFFSET>,
            IsHideOnDeactivate: IsHideOnDeactivate::<Identity, Impl, OFFSET>,
            SetCaption: SetCaption::<Identity, Impl, OFFSET>,
            GetCaption: GetCaption::<Identity, Impl, OFFSET>,
            SetDefault: SetDefault::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IFullScreenVideo as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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(all(feature = "Win32_Foundation", feature = "Win32_UI_WindowsAndMessaging"))]
impl ::windows::core::RuntimeName for IFullScreenVideoEx {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_UI_WindowsAndMessaging"))]
impl IFullScreenVideoEx_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideoEx_Impl, const OFFSET: isize>() -> IFullScreenVideoEx_Vtbl {
        unsafe extern "system" fn SetAcceleratorTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideoEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hwnd: super::super::Foundation::HWND, haccel: super::super::UI::WindowsAndMessaging::HACCEL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAcceleratorTable(::core::mem::transmute_copy(&hwnd), ::core::mem::transmute_copy(&haccel)).into()
        }
        unsafe extern "system" fn GetAcceleratorTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideoEx_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAcceleratorTable(::core::mem::transmute_copy(&phwnd), ::core::mem::transmute_copy(&phaccel)).into()
        }
        unsafe extern "system" fn KeepPixelAspectRatio<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideoEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, keepaspect: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.KeepPixelAspectRatio(::core::mem::transmute_copy(&keepaspect)).into()
        }
        unsafe extern "system" fn IsKeepPixelAspectRatio<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IFullScreenVideoEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pkeepaspect: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IsKeepPixelAspectRatio() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pkeepaspect, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IFullScreenVideo_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetAcceleratorTable: SetAcceleratorTable::<Identity, Impl, OFFSET>,
            GetAcceleratorTable: GetAcceleratorTable::<Identity, Impl, OFFSET>,
            KeepPixelAspectRatio: KeepPixelAspectRatio::<Identity, Impl, OFFSET>,
            IsKeepPixelAspectRatio: IsKeepPixelAspectRatio::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IFullScreenVideoEx as ::windows::core::Interface>::IID || iid == &<IFullScreenVideo as ::windows::core::Interface>::IID
    }
}
pub trait IGenericDescriptor_Impl: Sized {
    fn Initialize(&self, pbdesc: *const u8, bcount: i32) -> ::windows::core::Result<()>;
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetBody(&self) -> ::windows::core::Result<*mut u8>;
}
impl ::windows::core::RuntimeName for IGenericDescriptor {}
impl IGenericDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGenericDescriptor_Impl, const OFFSET: isize>() -> IGenericDescriptor_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGenericDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbdesc: *const u8, bcount: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute_copy(&pbdesc), ::core::mem::transmute_copy(&bcount)).into()
        }
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGenericDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGenericDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBody<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGenericDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppbval: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetBody() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetBody: GetBody::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IGenericDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IGenericDescriptor2_Impl: Sized + IGenericDescriptor_Impl {
    fn Initialize2(&self, pbdesc: *const u8, wcount: u16) -> ::windows::core::Result<()>;
    fn GetLength2(&self) -> ::windows::core::Result<u16>;
}
impl ::windows::core::RuntimeName for IGenericDescriptor2 {}
impl IGenericDescriptor2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGenericDescriptor2_Impl, const OFFSET: isize>() -> IGenericDescriptor2_Vtbl {
        unsafe extern "system" fn Initialize2<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGenericDescriptor2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbdesc: *const u8, wcount: u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize2(::core::mem::transmute_copy(&pbdesc), ::core::mem::transmute_copy(&wcount)).into()
        }
        unsafe extern "system" fn GetLength2<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGenericDescriptor2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength2() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IGenericDescriptor_Vtbl::new::<Identity, Impl, OFFSET>(),
            Initialize2: Initialize2::<Identity, Impl, OFFSET>,
            GetLength2: GetLength2::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IGenericDescriptor2 as ::windows::core::Interface>::IID || iid == &<IGenericDescriptor 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<Impl = Impl>, Impl: IGetCapabilitiesKey_Impl, const OFFSET: isize>() -> IGetCapabilitiesKey_Vtbl {
        unsafe extern "system" fn GetCapabilitiesKey<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGetCapabilitiesKey_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phkey: *mut super::super::System::Registry::HKEY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCapabilitiesKey() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(phkey, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetCapabilitiesKey: GetCapabilitiesKey::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IGetCapabilitiesKey as ::windows::core::Interface>::IID
    }
}
pub trait IGpnvsCommonBase_Impl: Sized {
    fn GetValueUpdateName(&self) -> ::windows::core::Result<::windows::core::BSTR>;
}
impl ::windows::core::RuntimeName for IGpnvsCommonBase {}
impl IGpnvsCommonBase_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGpnvsCommonBase_Impl, const OFFSET: isize>() -> IGpnvsCommonBase_Vtbl {
        unsafe extern "system" fn GetValueUpdateName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGpnvsCommonBase_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetValueUpdateName() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetValueUpdateName: GetValueUpdateName::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IGpnvsCommonBase as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IGraphBuilder_Impl: Sized + IFilterGraph_Impl {
    fn Connect(&self, ppinout: &::core::option::Option<IPin>, ppinin: &::core::option::Option<IPin>) -> ::windows::core::Result<()>;
    fn Render(&self, ppinout: &::core::option::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_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl ::windows::core::RuntimeName for IGraphBuilder {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IGraphBuilder_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphBuilder_Impl, const OFFSET: isize>() -> IGraphBuilder_Vtbl {
        unsafe extern "system" fn Connect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppinout: *mut ::core::ffi::c_void, ppinin: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Connect(::core::mem::transmute(&ppinout), ::core::mem::transmute(&ppinin)).into()
        }
        unsafe extern "system" fn Render<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppinout: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Render(::core::mem::transmute(&ppinout)).into()
        }
        unsafe extern "system" fn RenderFile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpcwstrfile: ::windows::core::PCWSTR, lpcwstrplaylist: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RenderFile(::core::mem::transmute(&lpcwstrfile), ::core::mem::transmute(&lpcwstrplaylist)).into()
        }
        unsafe extern "system" fn AddSourceFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphBuilder_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AddSourceFilter(::core::mem::transmute(&lpcwstrfilename), ::core::mem::transmute(&lpcwstrfiltername)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppfilter, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLogFile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hfile: usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLogFile(::core::mem::transmute_copy(&hfile)).into()
        }
        unsafe extern "system" fn Abort<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Abort().into()
        }
        unsafe extern "system" fn ShouldOperationContinue<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ShouldOperationContinue().into()
        }
        Self {
            base__: IFilterGraph_Vtbl::new::<Identity, Impl, OFFSET>(),
            Connect: Connect::<Identity, Impl, OFFSET>,
            Render: Render::<Identity, Impl, OFFSET>,
            RenderFile: RenderFile::<Identity, Impl, OFFSET>,
            AddSourceFilter: AddSourceFilter::<Identity, Impl, OFFSET>,
            SetLogFile: SetLogFile::<Identity, Impl, OFFSET>,
            Abort: Abort::<Identity, Impl, OFFSET>,
            ShouldOperationContinue: ShouldOperationContinue::<Identity, Impl, 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_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IGraphConfig_Impl: Sized {
    fn Reconnect(&self, poutputpin: &::core::option::Option<IPin>, pinputpin: &::core::option::Option<IPin>, pmtfirstconnection: *const super::MediaFoundation::AM_MEDIA_TYPE, pusingfilter: &::core::option::Option<IBaseFilter>, habortevent: super::super::Foundation::HANDLE, dwflags: u32) -> ::windows::core::Result<()>;
    fn Reconfigure(&self, pcallback: &::core::option::Option<IGraphConfigCallback>, pvcontext: *mut ::core::ffi::c_void, dwflags: u32, habortevent: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn AddFilterToCache(&self, pfilter: &::core::option::Option<IBaseFilter>) -> ::windows::core::Result<()>;
    fn EnumCacheFilter(&self) -> ::windows::core::Result<IEnumFilters>;
    fn RemoveFilterFromCache(&self, pfilter: &::core::option::Option<IBaseFilter>) -> ::windows::core::Result<()>;
    fn GetStartTime(&self, prtstart: *mut i64) -> ::windows::core::Result<()>;
    fn PushThroughData(&self, poutputpin: &::core::option::Option<IPin>, pconnection: &::core::option::Option<IPinConnection>, heventabort: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn SetFilterFlags(&self, pfilter: &::core::option::Option<IBaseFilter>, dwflags: u32) -> ::windows::core::Result<()>;
    fn GetFilterFlags(&self, pfilter: &::core::option::Option<IBaseFilter>, pdwflags: *mut u32) -> ::windows::core::Result<()>;
    fn RemoveFilterEx(&self, pfilter: &::core::option::Option<IBaseFilter>, flags: u32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl ::windows::core::RuntimeName for IGraphConfig {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IGraphConfig_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphConfig_Impl, const OFFSET: isize>() -> IGraphConfig_Vtbl {
        unsafe extern "system" fn Reconnect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, poutputpin: *mut ::core::ffi::c_void, pinputpin: *mut ::core::ffi::c_void, pmtfirstconnection: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>, pusingfilter: *mut ::core::ffi::c_void, habortevent: super::super::Foundation::HANDLE, dwflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reconnect(::core::mem::transmute(&poutputpin), ::core::mem::transmute(&pinputpin), ::core::mem::transmute_copy(&pmtfirstconnection), ::core::mem::transmute(&pusingfilter), ::core::mem::transmute_copy(&habortevent), ::core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn Reconfigure<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcallback: *mut ::core::ffi::c_void, pvcontext: *mut ::core::ffi::c_void, dwflags: u32, habortevent: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reconfigure(::core::mem::transmute(&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<Impl = Impl>, Impl: IGraphConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfilter: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AddFilterToCache(::core::mem::transmute(&pfilter)).into()
        }
        unsafe extern "system" fn EnumCacheFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, penum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumCacheFilter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(penum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RemoveFilterFromCache<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfilter: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RemoveFilterFromCache(::core::mem::transmute(&pfilter)).into()
        }
        unsafe extern "system" fn GetStartTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prtstart: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetStartTime(::core::mem::transmute_copy(&prtstart)).into()
        }
        unsafe extern "system" fn PushThroughData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphConfig_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PushThroughData(::core::mem::transmute(&poutputpin), ::core::mem::transmute(&pconnection), ::core::mem::transmute_copy(&heventabort)).into()
        }
        unsafe extern "system" fn SetFilterFlags<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfilter: *mut ::core::ffi::c_void, dwflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFilterFlags(::core::mem::transmute(&pfilter), ::core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn GetFilterFlags<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfilter: *mut ::core::ffi::c_void, pdwflags: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetFilterFlags(::core::mem::transmute(&pfilter), ::core::mem::transmute_copy(&pdwflags)).into()
        }
        unsafe extern "system" fn RemoveFilterEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfilter: *mut ::core::ffi::c_void, flags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RemoveFilterEx(::core::mem::transmute(&pfilter), ::core::mem::transmute_copy(&flags)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Reconnect: Reconnect::<Identity, Impl, OFFSET>,
            Reconfigure: Reconfigure::<Identity, Impl, OFFSET>,
            AddFilterToCache: AddFilterToCache::<Identity, Impl, OFFSET>,
            EnumCacheFilter: EnumCacheFilter::<Identity, Impl, OFFSET>,
            RemoveFilterFromCache: RemoveFilterFromCache::<Identity, Impl, OFFSET>,
            GetStartTime: GetStartTime::<Identity, Impl, OFFSET>,
            PushThroughData: PushThroughData::<Identity, Impl, OFFSET>,
            SetFilterFlags: SetFilterFlags::<Identity, Impl, OFFSET>,
            GetFilterFlags: GetFilterFlags::<Identity, Impl, OFFSET>,
            RemoveFilterEx: RemoveFilterEx::<Identity, Impl, 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<Impl = Impl>, Impl: IGraphConfigCallback_Impl, const OFFSET: isize>() -> IGraphConfigCallback_Vtbl {
        unsafe extern "system" fn Reconfigure<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphConfigCallback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvcontext: *mut ::core::ffi::c_void, dwflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reconfigure(::core::mem::transmute_copy(&pvcontext), ::core::mem::transmute_copy(&dwflags)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Reconfigure: Reconfigure::<Identity, Impl, 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<Impl = Impl>, Impl: IGraphVersion_Impl, const OFFSET: isize>() -> IGraphVersion_Vtbl {
        unsafe extern "system" fn QueryVersion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGraphVersion_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pversion: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.QueryVersion() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pversion, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), QueryVersion: QueryVersion::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IGraphVersion as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IGuideData_Impl: Sized {
    fn GetServices(&self) -> ::windows::core::Result<IEnumTuneRequests>;
    fn GetServiceProperties(&self, ptunerequest: &::core::option::Option<ITuneRequest>) -> ::windows::core::Result<IEnumGuideDataProperties>;
    fn GetGuideProgramIDs(&self) -> ::windows::core::Result<super::super::System::Ole::IEnumVARIANT>;
    fn GetProgramProperties(&self, varprogramdescriptionid: &super::super::System::Com::VARIANT) -> ::windows::core::Result<IEnumGuideDataProperties>;
    fn GetScheduleEntryIDs(&self) -> ::windows::core::Result<super::super::System::Ole::IEnumVARIANT>;
    fn GetScheduleEntryProperties(&self, varscheduleentrydescriptionid: &super::super::System::Com::VARIANT) -> ::windows::core::Result<IEnumGuideDataProperties>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IGuideData {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IGuideData_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideData_Impl, const OFFSET: isize>() -> IGuideData_Vtbl {
        unsafe extern "system" fn GetServices<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideData_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenumtunerequests: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServices() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenumtunerequests, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceProperties<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideData_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptunerequest: *mut ::core::ffi::c_void, ppenumproperties: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServiceProperties(::core::mem::transmute(&ptunerequest)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenumproperties, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetGuideProgramIDs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideData_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, penumprograms: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetGuideProgramIDs() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(penumprograms, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProgramProperties<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideData_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, varprogramdescriptionid: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, ppenumproperties: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetProgramProperties(::core::mem::transmute(&varprogramdescriptionid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenumproperties, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetScheduleEntryIDs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideData_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, penumscheduleentries: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetScheduleEntryIDs() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(penumscheduleentries, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetScheduleEntryProperties<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideData_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, varscheduleentrydescriptionid: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, ppenumproperties: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetScheduleEntryProperties(::core::mem::transmute(&varscheduleentrydescriptionid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenumproperties, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetServices: GetServices::<Identity, Impl, OFFSET>,
            GetServiceProperties: GetServiceProperties::<Identity, Impl, OFFSET>,
            GetGuideProgramIDs: GetGuideProgramIDs::<Identity, Impl, OFFSET>,
            GetProgramProperties: GetProgramProperties::<Identity, Impl, OFFSET>,
            GetScheduleEntryIDs: GetScheduleEntryIDs::<Identity, Impl, OFFSET>,
            GetScheduleEntryProperties: GetScheduleEntryProperties::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IGuideData as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IGuideDataEvent_Impl: Sized {
    fn GuideDataAcquired(&self) -> ::windows::core::Result<()>;
    fn ProgramChanged(&self, varprogramdescriptionid: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
    fn ServiceChanged(&self, varservicedescriptionid: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
    fn ScheduleEntryChanged(&self, varscheduleentrydescriptionid: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
    fn ProgramDeleted(&self, varprogramdescriptionid: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
    fn ServiceDeleted(&self, varservicedescriptionid: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
    fn ScheduleDeleted(&self, varscheduleentrydescriptionid: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IGuideDataEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IGuideDataEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataEvent_Impl, const OFFSET: isize>() -> IGuideDataEvent_Vtbl {
        unsafe extern "system" fn GuideDataAcquired<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GuideDataAcquired().into()
        }
        unsafe extern "system" fn ProgramChanged<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, varprogramdescriptionid: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ProgramChanged(::core::mem::transmute(&varprogramdescriptionid)).into()
        }
        unsafe extern "system" fn ServiceChanged<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, varservicedescriptionid: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ServiceChanged(::core::mem::transmute(&varservicedescriptionid)).into()
        }
        unsafe extern "system" fn ScheduleEntryChanged<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, varscheduleentrydescriptionid: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ScheduleEntryChanged(::core::mem::transmute(&varscheduleentrydescriptionid)).into()
        }
        unsafe extern "system" fn ProgramDeleted<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, varprogramdescriptionid: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ProgramDeleted(::core::mem::transmute(&varprogramdescriptionid)).into()
        }
        unsafe extern "system" fn ServiceDeleted<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, varservicedescriptionid: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ServiceDeleted(::core::mem::transmute(&varservicedescriptionid)).into()
        }
        unsafe extern "system" fn ScheduleDeleted<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, varscheduleentrydescriptionid: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ScheduleDeleted(::core::mem::transmute(&varscheduleentrydescriptionid)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GuideDataAcquired: GuideDataAcquired::<Identity, Impl, OFFSET>,
            ProgramChanged: ProgramChanged::<Identity, Impl, OFFSET>,
            ServiceChanged: ServiceChanged::<Identity, Impl, OFFSET>,
            ScheduleEntryChanged: ScheduleEntryChanged::<Identity, Impl, OFFSET>,
            ProgramDeleted: ProgramDeleted::<Identity, Impl, OFFSET>,
            ServiceDeleted: ServiceDeleted::<Identity, Impl, OFFSET>,
            ScheduleDeleted: ScheduleDeleted::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IGuideDataEvent as ::windows::core::Interface>::IID
    }
}
pub trait IGuideDataLoader_Impl: Sized {
    fn Init(&self, pguidestore: &::core::option::Option<IGuideData>) -> ::windows::core::Result<()>;
    fn Terminate(&self) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IGuideDataLoader {}
impl IGuideDataLoader_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataLoader_Impl, const OFFSET: isize>() -> IGuideDataLoader_Vtbl {
        unsafe extern "system" fn Init<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataLoader_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguidestore: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Init(::core::mem::transmute(&pguidestore)).into()
        }
        unsafe extern "system" fn Terminate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataLoader_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Terminate().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Init: Init::<Identity, Impl, OFFSET>,
            Terminate: Terminate::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IGuideDataLoader as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IGuideDataProperty_Impl: Sized {
    fn Name(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn Language(&self) -> ::windows::core::Result<i32>;
    fn Value(&self) -> ::windows::core::Result<super::super::System::Com::VARIANT>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IGuideDataProperty {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IGuideDataProperty_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataProperty_Impl, const OFFSET: isize>() -> IGuideDataProperty_Vtbl {
        unsafe extern "system" fn Name<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataProperty_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Name() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Language<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataProperty_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, idlang: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Language() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(idlang, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Value<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IGuideDataProperty_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvar: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Value() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvar, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Name: Name::<Identity, Impl, OFFSET>,
            Language: Language::<Identity, Impl, OFFSET>,
            Value: Value::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IGuideDataProperty 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<Impl = Impl>, Impl: IIPDVDec_Impl, const OFFSET: isize>() -> IIPDVDec_Vtbl {
        unsafe extern "system" fn IPDisplay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIPDVDec_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, displaypix: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IPDisplay() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(displaypix, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetIPDisplay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIPDVDec_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, displaypix: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetIPDisplay(::core::mem::transmute_copy(&displaypix)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IPDisplay: IPDisplay::<Identity, Impl, OFFSET>,
            SetIPDisplay: SetIPDisplay::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIPDVDec as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IISDBSLocator_Impl: Sized + IDVBSLocator_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IISDBSLocator {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IISDBSLocator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDBSLocator_Impl, const OFFSET: isize>() -> IISDBSLocator_Vtbl {
        Self { base__: IDVBSLocator_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IISDBSLocator as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ILocator as ::windows::core::Interface>::IID || iid == &<IDigitalLocator as ::windows::core::Interface>::IID || iid == &<IDVBSLocator as ::windows::core::Interface>::IID
    }
}
pub trait IISDB_BIT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetOriginalNetworkId(&self) -> ::windows::core::Result<u16>;
    fn GetBroadcastViewPropriety(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfTableDescriptors(&self) -> ::windows::core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordBroadcasterId(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn GetVersionHash(&self) -> ::windows::core::Result<u32>;
}
impl ::windows::core::RuntimeName for IISDB_BIT {}
impl IISDB_BIT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_BIT_Impl, const OFFSET: isize>() -> IISDB_BIT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_BIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_BIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalNetworkId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_BIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOriginalNetworkId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBroadcastViewPropriety<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_BIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetBroadcastViewPropriety() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_BIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfTableDescriptors() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_BIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableDescriptorByIndex(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_BIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptorByTag(::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_BIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordBroadcasterId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_BIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordBroadcasterId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_BIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfDescriptors(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_BIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptorByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_BIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordDescriptorByTag(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_BIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwversionhash: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionHash() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwversionhash, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetOriginalNetworkId: GetOriginalNetworkId::<Identity, Impl, OFFSET>,
            GetBroadcastViewPropriety: GetBroadcastViewPropriety::<Identity, Impl, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, Impl, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordBroadcasterId: GetRecordBroadcasterId::<Identity, Impl, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, Impl, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IISDB_BIT as ::windows::core::Interface>::IID
    }
}
pub trait IISDB_CDT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>, bsectionnumber: u8) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetDownloadDataId(&self) -> ::windows::core::Result<u16>;
    fn GetSectionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetOriginalNetworkId(&self) -> ::windows::core::Result<u16>;
    fn GetDataType(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfTableDescriptors(&self) -> ::windows::core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn GetSizeOfDataModule(&self) -> ::windows::core::Result<u32>;
    fn GetDataModule(&self) -> ::windows::core::Result<*mut u8>;
    fn GetVersionHash(&self) -> ::windows::core::Result<u32>;
}
impl ::windows::core::RuntimeName for IISDB_CDT {}
impl IISDB_CDT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_CDT_Impl, const OFFSET: isize>() -> IISDB_CDT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_CDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void, bsectionnumber: u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata), ::core::mem::transmute_copy(&bsectionnumber)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_CDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDownloadDataId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_CDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDownloadDataId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSectionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_CDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSectionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalNetworkId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_CDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOriginalNetworkId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_CDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDataType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_CDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfTableDescriptors() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_CDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableDescriptorByIndex(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_CDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptorByTag(::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetSizeOfDataModule<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_CDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSizeOfDataModule() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataModule<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_CDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbdata: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDataModule() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbdata, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetVersionHash<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_CDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwversionhash: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionHash() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwversionhash, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetDownloadDataId: GetDownloadDataId::<Identity, Impl, OFFSET>,
            GetSectionNumber: GetSectionNumber::<Identity, Impl, OFFSET>,
            GetOriginalNetworkId: GetOriginalNetworkId::<Identity, Impl, OFFSET>,
            GetDataType: GetDataType::<Identity, Impl, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, Impl, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, Impl, OFFSET>,
            GetSizeOfDataModule: GetSizeOfDataModule::<Identity, Impl, OFFSET>,
            GetDataModule: GetDataModule::<Identity, Impl, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IISDB_CDT as ::windows::core::Interface>::IID
    }
}
pub trait IISDB_EMM_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetTableIdExtension(&self) -> ::windows::core::Result<u16>;
    fn GetDataBytes(&self, pwbufferlength: *mut u16, pbbuffer: *mut u8) -> ::windows::core::Result<()>;
    fn GetSharedEmmMessage(&self, pwlength: *mut u16, ppbmessage: *mut *mut u8) -> ::windows::core::Result<()>;
    fn GetIndividualEmmMessage(&self, punknown: &::core::option::Option<::windows::core::IUnknown>, pwlength: *mut u16, ppbmessage: *mut *mut u8) -> ::windows::core::Result<()>;
    fn GetVersionHash(&self) -> ::windows::core::Result<u32>;
}
impl ::windows::core::RuntimeName for IISDB_EMM {}
impl IISDB_EMM_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_EMM_Impl, const OFFSET: isize>() -> IISDB_EMM_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_EMM_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_EMM_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableIdExtension<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_EMM_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableIdExtension() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataBytes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_EMM_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwbufferlength: *mut u16, pbbuffer: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDataBytes(::core::mem::transmute_copy(&pwbufferlength), ::core::mem::transmute_copy(&pbbuffer)).into()
        }
        unsafe extern "system" fn GetSharedEmmMessage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_EMM_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwlength: *mut u16, ppbmessage: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetSharedEmmMessage(::core::mem::transmute_copy(&pwlength), ::core::mem::transmute_copy(&ppbmessage)).into()
        }
        unsafe extern "system" fn GetIndividualEmmMessage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_EMM_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, punknown: *mut ::core::ffi::c_void, pwlength: *mut u16, ppbmessage: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetIndividualEmmMessage(::core::mem::transmute(&punknown), ::core::mem::transmute_copy(&pwlength), ::core::mem::transmute_copy(&ppbmessage)).into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_EMM_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwversionhash: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionHash() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwversionhash, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetTableIdExtension: GetTableIdExtension::<Identity, Impl, OFFSET>,
            GetDataBytes: GetDataBytes::<Identity, Impl, OFFSET>,
            GetSharedEmmMessage: GetSharedEmmMessage::<Identity, Impl, OFFSET>,
            GetIndividualEmmMessage: GetIndividualEmmMessage::<Identity, Impl, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IISDB_EMM as ::windows::core::Interface>::IID
    }
}
pub trait IISDB_LDT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetOriginalServiceId(&self) -> ::windows::core::Result<u16>;
    fn GetTransportStreamId(&self) -> ::windows::core::Result<u16>;
    fn GetOriginalNetworkId(&self) -> ::windows::core::Result<u16>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptionId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn GetVersionHash(&self) -> ::windows::core::Result<u32>;
}
impl ::windows::core::RuntimeName for IISDB_LDT {}
impl IISDB_LDT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_LDT_Impl, const OFFSET: isize>() -> IISDB_LDT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_LDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_LDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalServiceId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_LDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOriginalServiceId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransportStreamId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_LDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTransportStreamId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalNetworkId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_LDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOriginalNetworkId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_LDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptionId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_LDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptionId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_LDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfDescriptors(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_LDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptorByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_LDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordDescriptorByTag(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_LDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwversionhash: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionHash() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwversionhash, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetOriginalServiceId: GetOriginalServiceId::<Identity, Impl, OFFSET>,
            GetTransportStreamId: GetTransportStreamId::<Identity, Impl, OFFSET>,
            GetOriginalNetworkId: GetOriginalNetworkId::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordDescriptionId: GetRecordDescriptionId::<Identity, Impl, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, Impl, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IISDB_LDT as ::windows::core::Interface>::IID
    }
}
pub trait IISDB_NBIT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetOriginalNetworkId(&self) -> ::windows::core::Result<u16>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordInformationId(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordInformationType(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordDescriptionBodyLocation(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordMessageSectionNumber(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordUserDefined(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordNumberOfKeys(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordKeys(&self, dwrecordindex: u32) -> ::windows::core::Result<*mut u8>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn GetVersionHash(&self) -> ::windows::core::Result<u32>;
}
impl ::windows::core::RuntimeName for IISDB_NBIT {}
impl IISDB_NBIT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>() -> IISDB_NBIT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalNetworkId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOriginalNetworkId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordInformationId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordInformationId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordInformationType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordInformationType(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptionBodyLocation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptionBodyLocation(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordMessageSectionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordMessageSectionNumber(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordUserDefined<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordUserDefined(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordNumberOfKeys<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordNumberOfKeys(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordKeys<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbkeys: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordKeys(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbkeys, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfDescriptors(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptorByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordDescriptorByTag(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_NBIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwversionhash: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionHash() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwversionhash, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetOriginalNetworkId: GetOriginalNetworkId::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordInformationId: GetRecordInformationId::<Identity, Impl, OFFSET>,
            GetRecordInformationType: GetRecordInformationType::<Identity, Impl, OFFSET>,
            GetRecordDescriptionBodyLocation: GetRecordDescriptionBodyLocation::<Identity, Impl, OFFSET>,
            GetRecordMessageSectionNumber: GetRecordMessageSectionNumber::<Identity, Impl, OFFSET>,
            GetRecordUserDefined: GetRecordUserDefined::<Identity, Impl, OFFSET>,
            GetRecordNumberOfKeys: GetRecordNumberOfKeys::<Identity, Impl, OFFSET>,
            GetRecordKeys: GetRecordKeys::<Identity, Impl, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, Impl, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IISDB_NBIT as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IISDB_SDT_Impl: Sized + IDVB_SDT_Impl {
    fn GetRecordEITUserDefinedFlags(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IISDB_SDT {}
#[cfg(feature = "Win32_Foundation")]
impl IISDB_SDT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDT_Impl, const OFFSET: isize>() -> IISDB_SDT_Vtbl {
        unsafe extern "system" fn GetRecordEITUserDefinedFlags<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordEITUserDefinedFlags(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: IDVB_SDT_Vtbl::new::<Identity, Impl, OFFSET>(), GetRecordEITUserDefinedFlags: GetRecordEITUserDefinedFlags::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IISDB_SDT as ::windows::core::Interface>::IID || iid == &<IDVB_SDT as ::windows::core::Interface>::IID
    }
}
pub trait IISDB_SDTT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetTableIdExt(&self) -> ::windows::core::Result<u16>;
    fn GetTransportStreamId(&self) -> ::windows::core::Result<u16>;
    fn GetOriginalNetworkId(&self) -> ::windows::core::Result<u16>;
    fn GetServiceId(&self) -> ::windows::core::Result<u16>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordGroup(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordTargetVersion(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordNewVersion(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordDownloadLevel(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordVersionIndicator(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordScheduleTimeShiftInformation(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordCountOfSchedules(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordStartTimeByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<MPEG_DATE_AND_TIME>;
    fn GetRecordDurationByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<MPEG_TIME>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn GetVersionHash(&self) -> ::windows::core::Result<u32>;
}
impl ::windows::core::RuntimeName for IISDB_SDTT {}
impl IISDB_SDTT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>() -> IISDB_SDTT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableIdExt<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableIdExt() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransportStreamId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTransportStreamId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalNetworkId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOriginalNetworkId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServiceId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordGroup<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordGroup(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTargetVersion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordTargetVersion(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordNewVersion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordNewVersion(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDownloadLevel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDownloadLevel(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordVersionIndicator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordVersionIndicator(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordScheduleTimeShiftInformation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordScheduleTimeShiftInformation(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfSchedules<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfSchedules(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordStartTimeByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, pmdtval: *mut MPEG_DATE_AND_TIME) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordStartTimeByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmdtval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDurationByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, pmdval: *mut MPEG_TIME) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDurationByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmdval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfDescriptors(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptorByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordDescriptorByTag(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IISDB_SDTT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwversionhash: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionHash() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwversionhash, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetTableIdExt: GetTableIdExt::<Identity, Impl, OFFSET>,
            GetTransportStreamId: GetTransportStreamId::<Identity, Impl, OFFSET>,
            GetOriginalNetworkId: GetOriginalNetworkId::<Identity, Impl, OFFSET>,
            GetServiceId: GetServiceId::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordGroup: GetRecordGroup::<Identity, Impl, OFFSET>,
            GetRecordTargetVersion: GetRecordTargetVersion::<Identity, Impl, OFFSET>,
            GetRecordNewVersion: GetRecordNewVersion::<Identity, Impl, OFFSET>,
            GetRecordDownloadLevel: GetRecordDownloadLevel::<Identity, Impl, OFFSET>,
            GetRecordVersionIndicator: GetRecordVersionIndicator::<Identity, Impl, OFFSET>,
            GetRecordScheduleTimeShiftInformation: GetRecordScheduleTimeShiftInformation::<Identity, Impl, OFFSET>,
            GetRecordCountOfSchedules: GetRecordCountOfSchedules::<Identity, Impl, OFFSET>,
            GetRecordStartTimeByIndex: GetRecordStartTimeByIndex::<Identity, Impl, OFFSET>,
            GetRecordDurationByIndex: GetRecordDurationByIndex::<Identity, Impl, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, Impl, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IISDB_SDTT as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IIsdbAudioComponentDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetStreamContent(&self) -> ::windows::core::Result<u8>;
    fn GetComponentType(&self) -> ::windows::core::Result<u8>;
    fn GetComponentTag(&self) -> ::windows::core::Result<u8>;
    fn GetStreamType(&self) -> ::windows::core::Result<u8>;
    fn GetSimulcastGroupTag(&self) -> ::windows::core::Result<u8>;
    fn GetESMultiLingualFlag(&self) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn GetMainComponentFlag(&self) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn GetQualityIndicator(&self) -> ::windows::core::Result<u8>;
    fn GetSamplingRate(&self) -> ::windows::core::Result<u8>;
    fn GetLanguageCode(&self, pszcode: *mut u8) -> ::windows::core::Result<()>;
    fn GetLanguageCode2(&self, pszcode: *mut u8) -> ::windows::core::Result<()>;
    fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IIsdbAudioComponentDescriptor {}
#[cfg(feature = "Win32_Foundation")]
impl IIsdbAudioComponentDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>() -> IIsdbAudioComponentDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStreamContent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStreamContent() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComponentType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetComponentType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComponentTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetComponentTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStreamType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStreamType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSimulcastGroupTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSimulcastGroupTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetESMultiLingualFlag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfval: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetESMultiLingualFlag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMainComponentFlag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfval: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMainComponentFlag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetQualityIndicator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetQualityIndicator() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSamplingRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSamplingRate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLanguageCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszcode: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLanguageCode(::core::mem::transmute_copy(&pszcode)).into()
        }
        unsafe extern "system" fn GetLanguageCode2<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszcode: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLanguageCode2(::core::mem::transmute_copy(&pszcode)).into()
        }
        unsafe extern "system" fn GetTextW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbAudioComponentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrtext: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTextW(::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrtext, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetStreamContent: GetStreamContent::<Identity, Impl, OFFSET>,
            GetComponentType: GetComponentType::<Identity, Impl, OFFSET>,
            GetComponentTag: GetComponentTag::<Identity, Impl, OFFSET>,
            GetStreamType: GetStreamType::<Identity, Impl, OFFSET>,
            GetSimulcastGroupTag: GetSimulcastGroupTag::<Identity, Impl, OFFSET>,
            GetESMultiLingualFlag: GetESMultiLingualFlag::<Identity, Impl, OFFSET>,
            GetMainComponentFlag: GetMainComponentFlag::<Identity, Impl, OFFSET>,
            GetQualityIndicator: GetQualityIndicator::<Identity, Impl, OFFSET>,
            GetSamplingRate: GetSamplingRate::<Identity, Impl, OFFSET>,
            GetLanguageCode: GetLanguageCode::<Identity, Impl, OFFSET>,
            GetLanguageCode2: GetLanguageCode2::<Identity, Impl, OFFSET>,
            GetTextW: GetTextW::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbAudioComponentDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IIsdbCAContractInformationDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCASystemId(&self) -> ::windows::core::Result<u16>;
    fn GetCAUnitId(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordComponentTag(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
    fn GetContractVerificationInfoLength(&self) -> ::windows::core::Result<u8>;
    fn GetContractVerificationInfo(&self, bbuflength: u8) -> ::windows::core::Result<u8>;
    fn GetFeeNameW(&self, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
}
impl ::windows::core::RuntimeName for IIsdbCAContractInformationDescriptor {}
impl IIsdbCAContractInformationDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAContractInformationDescriptor_Impl, const OFFSET: isize>() -> IIsdbCAContractInformationDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAContractInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAContractInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCASystemId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAContractInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCASystemId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCAUnitId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAContractInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCAUnitId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAContractInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordComponentTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAContractInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordComponentTag(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetContractVerificationInfoLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAContractInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetContractVerificationInfoLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetContractVerificationInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAContractInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bbuflength: u8, pbbuf: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetContractVerificationInfo(::core::mem::transmute_copy(&bbuflength)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbbuf, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFeeNameW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAContractInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFeeNameW(::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCASystemId: GetCASystemId::<Identity, Impl, OFFSET>,
            GetCAUnitId: GetCAUnitId::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordComponentTag: GetRecordComponentTag::<Identity, Impl, OFFSET>,
            GetContractVerificationInfoLength: GetContractVerificationInfoLength::<Identity, Impl, OFFSET>,
            GetContractVerificationInfo: GetContractVerificationInfo::<Identity, Impl, OFFSET>,
            GetFeeNameW: GetFeeNameW::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbCAContractInformationDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IIsdbCADescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCASystemId(&self) -> ::windows::core::Result<u16>;
    fn GetReservedBits(&self) -> ::windows::core::Result<u8>;
    fn GetCAPID(&self) -> ::windows::core::Result<u16>;
    fn GetPrivateDataBytes(&self, pbbufferlength: *mut u8, pbbuffer: *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IIsdbCADescriptor {}
impl IIsdbCADescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCADescriptor_Impl, const OFFSET: isize>() -> IIsdbCADescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCADescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCADescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCASystemId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCADescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCASystemId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetReservedBits<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCADescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetReservedBits() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCAPID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCADescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCAPID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPrivateDataBytes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCADescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbbufferlength: *mut u8, pbbuffer: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPrivateDataBytes(::core::mem::transmute_copy(&pbbufferlength), ::core::mem::transmute_copy(&pbbuffer)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCASystemId: GetCASystemId::<Identity, Impl, OFFSET>,
            GetReservedBits: GetReservedBits::<Identity, Impl, OFFSET>,
            GetCAPID: GetCAPID::<Identity, Impl, OFFSET>,
            GetPrivateDataBytes: GetPrivateDataBytes::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbCADescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IIsdbCAServiceDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCASystemId(&self) -> ::windows::core::Result<u16>;
    fn GetCABroadcasterGroupId(&self) -> ::windows::core::Result<u8>;
    fn GetMessageControl(&self) -> ::windows::core::Result<u8>;
    fn GetServiceIds(&self, pbnumserviceids: *mut u8, pwserviceids: *mut u16) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IIsdbCAServiceDescriptor {}
impl IIsdbCAServiceDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAServiceDescriptor_Impl, const OFFSET: isize>() -> IIsdbCAServiceDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCASystemId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCASystemId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCABroadcasterGroupId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCABroadcasterGroupId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMessageControl<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMessageControl() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceIds<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbCAServiceDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbnumserviceids: *mut u8, pwserviceids: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetServiceIds(::core::mem::transmute_copy(&pbnumserviceids), ::core::mem::transmute_copy(&pwserviceids)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCASystemId: GetCASystemId::<Identity, Impl, OFFSET>,
            GetCABroadcasterGroupId: GetCABroadcasterGroupId::<Identity, Impl, OFFSET>,
            GetMessageControl: GetMessageControl::<Identity, Impl, OFFSET>,
            GetServiceIds: GetServiceIds::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbCAServiceDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IIsdbComponentGroupDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetComponentGroupType(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordGroupId(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
    fn GetRecordNumberOfCAUnit(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
    fn GetRecordCAUnitCAUnitId(&self, brecordindex: u8, bcaunitindex: u8) -> ::windows::core::Result<u8>;
    fn GetRecordCAUnitNumberOfComponents(&self, brecordindex: u8, bcaunitindex: u8) -> ::windows::core::Result<u8>;
    fn GetRecordCAUnitComponentTag(&self, brecordindex: u8, bcaunitindex: u8, bcomponentindex: u8) -> ::windows::core::Result<u8>;
    fn GetRecordTotalBitRate(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
    fn GetRecordTextW(&self, brecordindex: u8, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
}
impl ::windows::core::RuntimeName for IIsdbComponentGroupDescriptor {}
impl IIsdbComponentGroupDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbComponentGroupDescriptor_Impl, const OFFSET: isize>() -> IIsdbComponentGroupDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbComponentGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbComponentGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComponentGroupType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbComponentGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetComponentGroupType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbComponentGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordGroupId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbComponentGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordGroupId(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordNumberOfCAUnit<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbComponentGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordNumberOfCAUnit(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCAUnitCAUnitId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbComponentGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, bcaunitindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCAUnitCAUnitId(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&bcaunitindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCAUnitNumberOfComponents<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbComponentGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, bcaunitindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCAUnitNumberOfComponents(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&bcaunitindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCAUnitComponentTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbComponentGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, bcaunitindex: u8, bcomponentindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCAUnitComponentTag(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&bcaunitindex), ::core::mem::transmute_copy(&bcomponentindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTotalBitRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbComponentGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordTotalBitRate(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTextW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbComponentGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, convmode: DVB_STRCONV_MODE, pbstrtext: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordTextW(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrtext, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetComponentGroupType: GetComponentGroupType::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordGroupId: GetRecordGroupId::<Identity, Impl, OFFSET>,
            GetRecordNumberOfCAUnit: GetRecordNumberOfCAUnit::<Identity, Impl, OFFSET>,
            GetRecordCAUnitCAUnitId: GetRecordCAUnitCAUnitId::<Identity, Impl, OFFSET>,
            GetRecordCAUnitNumberOfComponents: GetRecordCAUnitNumberOfComponents::<Identity, Impl, OFFSET>,
            GetRecordCAUnitComponentTag: GetRecordCAUnitComponentTag::<Identity, Impl, OFFSET>,
            GetRecordTotalBitRate: GetRecordTotalBitRate::<Identity, Impl, OFFSET>,
            GetRecordTextW: GetRecordTextW::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbComponentGroupDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IIsdbDataContentDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetDataComponentId(&self) -> ::windows::core::Result<u16>;
    fn GetEntryComponent(&self) -> ::windows::core::Result<u8>;
    fn GetSelectorLength(&self) -> ::windows::core::Result<u8>;
    fn GetSelectorBytes(&self, bbuflength: u8) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordComponentRef(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
    fn GetLanguageCode(&self, pszcode: *mut u8) -> ::windows::core::Result<()>;
    fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
}
impl ::windows::core::RuntimeName for IIsdbDataContentDescriptor {}
impl IIsdbDataContentDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDataContentDescriptor_Impl, const OFFSET: isize>() -> IIsdbDataContentDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDataContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDataContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataComponentId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDataContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDataComponentId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEntryComponent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDataContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEntryComponent() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSelectorLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDataContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSelectorLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSelectorBytes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDataContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bbuflength: u8, pbbuf: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSelectorBytes(::core::mem::transmute_copy(&bbuflength)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbbuf, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDataContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordComponentRef<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDataContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordComponentRef(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLanguageCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDataContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszcode: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLanguageCode(::core::mem::transmute_copy(&pszcode)).into()
        }
        unsafe extern "system" fn GetTextW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDataContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrtext: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTextW(::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrtext, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetDataComponentId: GetDataComponentId::<Identity, Impl, OFFSET>,
            GetEntryComponent: GetEntryComponent::<Identity, Impl, OFFSET>,
            GetSelectorLength: GetSelectorLength::<Identity, Impl, OFFSET>,
            GetSelectorBytes: GetSelectorBytes::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordComponentRef: GetRecordComponentRef::<Identity, Impl, OFFSET>,
            GetLanguageCode: GetLanguageCode::<Identity, Impl, OFFSET>,
            GetTextW: GetTextW::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbDataContentDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IIsdbDigitalCopyControlDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCopyControl(&self, pbdigitalrecordingcontroldata: *mut u8, pbcopycontroltype: *mut u8, pbapscontroldata: *mut u8, pbmaximumbitrate: *mut u8) -> ::windows::core::Result<()>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordCopyControl(&self, brecordindex: u8, pbcomponenttag: *mut u8, pbdigitalrecordingcontroldata: *mut u8, pbcopycontroltype: *mut u8, pbapscontroldata: *mut u8, pbmaximumbitrate: *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IIsdbDigitalCopyControlDescriptor {}
impl IIsdbDigitalCopyControlDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDigitalCopyControlDescriptor_Impl, const OFFSET: isize>() -> IIsdbDigitalCopyControlDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDigitalCopyControlDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDigitalCopyControlDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCopyControl<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDigitalCopyControlDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbdigitalrecordingcontroldata: *mut u8, pbcopycontroltype: *mut u8, pbapscontroldata: *mut u8, pbmaximumbitrate: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCopyControl(::core::mem::transmute_copy(&pbdigitalrecordingcontroldata), ::core::mem::transmute_copy(&pbcopycontroltype), ::core::mem::transmute_copy(&pbapscontroldata), ::core::mem::transmute_copy(&pbmaximumbitrate)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDigitalCopyControlDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCopyControl<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDigitalCopyControlDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbcomponenttag: *mut u8, pbdigitalrecordingcontroldata: *mut u8, pbcopycontroltype: *mut u8, pbapscontroldata: *mut u8, pbmaximumbitrate: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordCopyControl(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&pbcomponenttag), ::core::mem::transmute_copy(&pbdigitalrecordingcontroldata), ::core::mem::transmute_copy(&pbcopycontroltype), ::core::mem::transmute_copy(&pbapscontroldata), ::core::mem::transmute_copy(&pbmaximumbitrate)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCopyControl: GetCopyControl::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordCopyControl: GetRecordCopyControl::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbDigitalCopyControlDescriptor as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IIsdbDownloadContentDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetFlags(&self, pfreboot: *mut super::super::Foundation::BOOL, pfaddon: *mut super::super::Foundation::BOOL, pfcompatibility: *mut super::super::Foundation::BOOL, pfmoduleinfo: *mut super::super::Foundation::BOOL, pftextinfo: *mut super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
    fn GetComponentSize(&self) -> ::windows::core::Result<u32>;
    fn GetDownloadId(&self) -> ::windows::core::Result<u32>;
    fn GetTimeOutValueDII(&self) -> ::windows::core::Result<u32>;
    fn GetLeakRate(&self) -> ::windows::core::Result<u32>;
    fn GetComponentTag(&self) -> ::windows::core::Result<u8>;
    fn GetCompatiblityDescriptorLength(&self) -> ::windows::core::Result<u16>;
    fn GetCompatiblityDescriptor(&self) -> ::windows::core::Result<*mut u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u16>;
    fn GetRecordModuleId(&self, wrecordindex: u16) -> ::windows::core::Result<u16>;
    fn GetRecordModuleSize(&self, wrecordindex: u16) -> ::windows::core::Result<u32>;
    fn GetRecordModuleInfoLength(&self, wrecordindex: u16) -> ::windows::core::Result<u8>;
    fn GetRecordModuleInfo(&self, wrecordindex: u16) -> ::windows::core::Result<*mut u8>;
    fn GetTextLanguageCode(&self, szcode: *mut u8) -> ::windows::core::Result<()>;
    fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IIsdbDownloadContentDescriptor {}
#[cfg(feature = "Win32_Foundation")]
impl IIsdbDownloadContentDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>() -> IIsdbDownloadContentDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFlags<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfreboot: *mut super::super::Foundation::BOOL, pfaddon: *mut super::super::Foundation::BOOL, pfcompatibility: *mut super::super::Foundation::BOOL, pfmoduleinfo: *mut super::super::Foundation::BOOL, pftextinfo: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetFlags(::core::mem::transmute_copy(&pfreboot), ::core::mem::transmute_copy(&pfaddon), ::core::mem::transmute_copy(&pfcompatibility), ::core::mem::transmute_copy(&pfmoduleinfo), ::core::mem::transmute_copy(&pftextinfo)).into()
        }
        unsafe extern "system" fn GetComponentSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetComponentSize() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDownloadId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDownloadId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTimeOutValueDII<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTimeOutValueDII() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLeakRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLeakRate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComponentTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetComponentTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCompatiblityDescriptorLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwlength: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCompatiblityDescriptorLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwlength, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCompatiblityDescriptor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppbdata: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCompatiblityDescriptor() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppbdata, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordModuleId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, wrecordindex: u16, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordModuleId(::core::mem::transmute_copy(&wrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordModuleSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, wrecordindex: u16, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordModuleSize(::core::mem::transmute_copy(&wrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordModuleInfoLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, wrecordindex: u16, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordModuleInfoLength(::core::mem::transmute_copy(&wrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordModuleInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, wrecordindex: u16, ppbdata: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordModuleInfo(::core::mem::transmute_copy(&wrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppbdata, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTextLanguageCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, szcode: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTextLanguageCode(::core::mem::transmute_copy(&szcode)).into()
        }
        unsafe extern "system" fn GetTextW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbDownloadContentDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTextW(::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetFlags: GetFlags::<Identity, Impl, OFFSET>,
            GetComponentSize: GetComponentSize::<Identity, Impl, OFFSET>,
            GetDownloadId: GetDownloadId::<Identity, Impl, OFFSET>,
            GetTimeOutValueDII: GetTimeOutValueDII::<Identity, Impl, OFFSET>,
            GetLeakRate: GetLeakRate::<Identity, Impl, OFFSET>,
            GetComponentTag: GetComponentTag::<Identity, Impl, OFFSET>,
            GetCompatiblityDescriptorLength: GetCompatiblityDescriptorLength::<Identity, Impl, OFFSET>,
            GetCompatiblityDescriptor: GetCompatiblityDescriptor::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordModuleId: GetRecordModuleId::<Identity, Impl, OFFSET>,
            GetRecordModuleSize: GetRecordModuleSize::<Identity, Impl, OFFSET>,
            GetRecordModuleInfoLength: GetRecordModuleInfoLength::<Identity, Impl, OFFSET>,
            GetRecordModuleInfo: GetRecordModuleInfo::<Identity, Impl, OFFSET>,
            GetTextLanguageCode: GetTextLanguageCode::<Identity, Impl, OFFSET>,
            GetTextW: GetTextW::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbDownloadContentDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IIsdbEmergencyInformationDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetServiceId(&self, brecordindex: u8) -> ::windows::core::Result<u16>;
    fn GetStartEndFlag(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
    fn GetSignalLevel(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
    fn GetAreaCode(&self, brecordindex: u8, ppwval: *mut *mut u16, pbnumareacodes: *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IIsdbEmergencyInformationDescriptor {}
impl IIsdbEmergencyInformationDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEmergencyInformationDescriptor_Impl, const OFFSET: isize>() -> IIsdbEmergencyInformationDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEmergencyInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEmergencyInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEmergencyInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEmergencyInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServiceId(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStartEndFlag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEmergencyInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStartEndFlag(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSignalLevel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEmergencyInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSignalLevel(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAreaCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEmergencyInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, ppwval: *mut *mut u16, pbnumareacodes: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAreaCode(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&ppwval), ::core::mem::transmute_copy(&pbnumareacodes)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetServiceId: GetServiceId::<Identity, Impl, OFFSET>,
            GetStartEndFlag: GetStartEndFlag::<Identity, Impl, OFFSET>,
            GetSignalLevel: GetSignalLevel::<Identity, Impl, OFFSET>,
            GetAreaCode: GetAreaCode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbEmergencyInformationDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IIsdbEventGroupDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetGroupType(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordEvent(&self, brecordindex: u8, pwserviceid: *mut u16, pweventid: *mut u16) -> ::windows::core::Result<()>;
    fn GetCountOfRefRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRefRecordEvent(&self, brecordindex: u8, pworiginalnetworkid: *mut u16, pwtransportstreamid: *mut u16, pwserviceid: *mut u16, pweventid: *mut u16) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IIsdbEventGroupDescriptor {}
impl IIsdbEventGroupDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEventGroupDescriptor_Impl, const OFFSET: isize>() -> IIsdbEventGroupDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEventGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEventGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetGroupType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEventGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetGroupType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEventGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEventGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pwserviceid: *mut u16, pweventid: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordEvent(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&pwserviceid), ::core::mem::transmute_copy(&pweventid)).into()
        }
        unsafe extern "system" fn GetCountOfRefRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEventGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRefRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRefRecordEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbEventGroupDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pworiginalnetworkid: *mut u16, pwtransportstreamid: *mut u16, pwserviceid: *mut u16, pweventid: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRefRecordEvent(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&pworiginalnetworkid), ::core::mem::transmute_copy(&pwtransportstreamid), ::core::mem::transmute_copy(&pwserviceid), ::core::mem::transmute_copy(&pweventid)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetGroupType: GetGroupType::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordEvent: GetRecordEvent::<Identity, Impl, OFFSET>,
            GetCountOfRefRecords: GetCountOfRefRecords::<Identity, Impl, OFFSET>,
            GetRefRecordEvent: GetRefRecordEvent::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbEventGroupDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IIsdbHierarchicalTransmissionDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetFutureUse1(&self) -> ::windows::core::Result<u8>;
    fn GetQualityLevel(&self) -> ::windows::core::Result<u8>;
    fn GetFutureUse2(&self) -> ::windows::core::Result<u8>;
    fn GetReferencePid(&self) -> ::windows::core::Result<u16>;
}
impl ::windows::core::RuntimeName for IIsdbHierarchicalTransmissionDescriptor {}
impl IIsdbHierarchicalTransmissionDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbHierarchicalTransmissionDescriptor_Impl, const OFFSET: isize>() -> IIsdbHierarchicalTransmissionDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbHierarchicalTransmissionDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbHierarchicalTransmissionDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFutureUse1<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbHierarchicalTransmissionDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFutureUse1() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetQualityLevel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbHierarchicalTransmissionDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetQualityLevel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFutureUse2<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbHierarchicalTransmissionDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFutureUse2() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetReferencePid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbHierarchicalTransmissionDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetReferencePid() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetFutureUse1: GetFutureUse1::<Identity, Impl, OFFSET>,
            GetQualityLevel: GetQualityLevel::<Identity, Impl, OFFSET>,
            GetFutureUse2: GetFutureUse2::<Identity, Impl, OFFSET>,
            GetReferencePid: GetReferencePid::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbHierarchicalTransmissionDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IIsdbLogoTransmissionDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetLogoTransmissionType(&self) -> ::windows::core::Result<u8>;
    fn GetLogoId(&self) -> ::windows::core::Result<u16>;
    fn GetLogoVersion(&self) -> ::windows::core::Result<u16>;
    fn GetDownloadDataId(&self) -> ::windows::core::Result<u16>;
    fn GetLogoCharW(&self, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
}
impl ::windows::core::RuntimeName for IIsdbLogoTransmissionDescriptor {}
impl IIsdbLogoTransmissionDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbLogoTransmissionDescriptor_Impl, const OFFSET: isize>() -> IIsdbLogoTransmissionDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbLogoTransmissionDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbLogoTransmissionDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLogoTransmissionType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbLogoTransmissionDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLogoTransmissionType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLogoId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbLogoTransmissionDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLogoId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLogoVersion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbLogoTransmissionDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLogoVersion() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDownloadDataId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbLogoTransmissionDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDownloadDataId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLogoCharW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbLogoTransmissionDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrchar: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLogoCharW(::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrchar, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetLogoTransmissionType: GetLogoTransmissionType::<Identity, Impl, OFFSET>,
            GetLogoId: GetLogoId::<Identity, Impl, OFFSET>,
            GetLogoVersion: GetLogoVersion::<Identity, Impl, OFFSET>,
            GetDownloadDataId: GetDownloadDataId::<Identity, Impl, OFFSET>,
            GetLogoCharW: GetLogoCharW::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbLogoTransmissionDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IIsdbSIParameterDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetParameterVersion(&self) -> ::windows::core::Result<u8>;
    fn GetUpdateTime(&self) -> ::windows::core::Result<MPEG_DATE>;
    fn GetRecordNumberOfTable(&self) -> ::windows::core::Result<u8>;
    fn GetTableId(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
    fn GetTableDescriptionLength(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
    fn GetTableDescriptionBytes(&self, brecordindex: u8, pbbufferlength: *mut u8, pbbuffer: *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IIsdbSIParameterDescriptor {}
impl IIsdbSIParameterDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSIParameterDescriptor_Impl, const OFFSET: isize>() -> IIsdbSIParameterDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSIParameterDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSIParameterDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetParameterVersion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSIParameterDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetParameterVersion() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetUpdateTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSIParameterDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut MPEG_DATE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetUpdateTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordNumberOfTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSIParameterDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordNumberOfTable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSIParameterDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableId(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptionLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSIParameterDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableDescriptionLength(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptionBytes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSIParameterDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbbufferlength: *mut u8, pbbuffer: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptionBytes(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&pbbufferlength), ::core::mem::transmute_copy(&pbbuffer)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetParameterVersion: GetParameterVersion::<Identity, Impl, OFFSET>,
            GetUpdateTime: GetUpdateTime::<Identity, Impl, OFFSET>,
            GetRecordNumberOfTable: GetRecordNumberOfTable::<Identity, Impl, OFFSET>,
            GetTableId: GetTableId::<Identity, Impl, OFFSET>,
            GetTableDescriptionLength: GetTableDescriptionLength::<Identity, Impl, OFFSET>,
            GetTableDescriptionBytes: GetTableDescriptionBytes::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbSIParameterDescriptor as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IIsdbSeriesDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetSeriesId(&self) -> ::windows::core::Result<u16>;
    fn GetRepeatLabel(&self) -> ::windows::core::Result<u8>;
    fn GetProgramPattern(&self) -> ::windows::core::Result<u8>;
    fn GetExpireDate(&self, pfvalid: *mut super::super::Foundation::BOOL, pmdtval: *mut MPEG_DATE_AND_TIME) -> ::windows::core::Result<()>;
    fn GetEpisodeNumber(&self) -> ::windows::core::Result<u16>;
    fn GetLastEpisodeNumber(&self) -> ::windows::core::Result<u16>;
    fn GetSeriesNameW(&self, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IIsdbSeriesDescriptor {}
#[cfg(feature = "Win32_Foundation")]
impl IIsdbSeriesDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSeriesDescriptor_Impl, const OFFSET: isize>() -> IIsdbSeriesDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSeriesDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSeriesDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSeriesId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSeriesDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSeriesId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRepeatLabel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSeriesDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRepeatLabel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProgramPattern<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSeriesDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetProgramPattern() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetExpireDate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSeriesDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfvalid: *mut super::super::Foundation::BOOL, pmdtval: *mut MPEG_DATE_AND_TIME) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetExpireDate(::core::mem::transmute_copy(&pfvalid), ::core::mem::transmute_copy(&pmdtval)).into()
        }
        unsafe extern "system" fn GetEpisodeNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSeriesDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEpisodeNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastEpisodeNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSeriesDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLastEpisodeNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSeriesNameW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSeriesDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSeriesNameW(::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetSeriesId: GetSeriesId::<Identity, Impl, OFFSET>,
            GetRepeatLabel: GetRepeatLabel::<Identity, Impl, OFFSET>,
            GetProgramPattern: GetProgramPattern::<Identity, Impl, OFFSET>,
            GetExpireDate: GetExpireDate::<Identity, Impl, OFFSET>,
            GetEpisodeNumber: GetEpisodeNumber::<Identity, Impl, OFFSET>,
            GetLastEpisodeNumber: GetLastEpisodeNumber::<Identity, Impl, OFFSET>,
            GetSeriesNameW: GetSeriesNameW::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbSeriesDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IIsdbSiParser2_Impl: Sized + IDvbSiParser2_Impl {
    fn GetSDT2(&self, tableid: u8, pwtransportstreamid: *const u16) -> ::windows::core::Result<IISDB_SDT>;
    fn GetBIT(&self, tableid: u8, pworiginalnetworkid: *const u16) -> ::windows::core::Result<IISDB_BIT>;
    fn GetNBIT(&self, tableid: u8, pworiginalnetworkid: *const u16) -> ::windows::core::Result<IISDB_NBIT>;
    fn GetLDT(&self, tableid: u8, pworiginalserviceid: *const u16) -> ::windows::core::Result<IISDB_LDT>;
    fn GetSDTT(&self, tableid: u8, pwtableidext: *const u16) -> ::windows::core::Result<IISDB_SDTT>;
    fn GetCDT(&self, tableid: u8, bsectionnumber: u8, pwdownloaddataid: *const u16) -> ::windows::core::Result<IISDB_CDT>;
    fn GetEMM(&self, pid: u16, wtableidext: u16) -> ::windows::core::Result<IISDB_EMM>;
}
impl ::windows::core::RuntimeName for IIsdbSiParser2 {}
impl IIsdbSiParser2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSiParser2_Impl, const OFFSET: isize>() -> IIsdbSiParser2_Vtbl {
        unsafe extern "system" fn GetSDT2<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSiParser2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tableid: u8, pwtransportstreamid: *const u16, ppsdt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSDT2(::core::mem::transmute_copy(&tableid), ::core::mem::transmute_copy(&pwtransportstreamid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppsdt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBIT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSiParser2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tableid: u8, pworiginalnetworkid: *const u16, ppbit: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetBIT(::core::mem::transmute_copy(&tableid), ::core::mem::transmute_copy(&pworiginalnetworkid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppbit, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNBIT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSiParser2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tableid: u8, pworiginalnetworkid: *const u16, ppnbit: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNBIT(::core::mem::transmute_copy(&tableid), ::core::mem::transmute_copy(&pworiginalnetworkid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppnbit, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLDT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSiParser2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tableid: u8, pworiginalserviceid: *const u16, ppldt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLDT(::core::mem::transmute_copy(&tableid), ::core::mem::transmute_copy(&pworiginalserviceid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppldt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSDTT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSiParser2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tableid: u8, pwtableidext: *const u16, ppsdtt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSDTT(::core::mem::transmute_copy(&tableid), ::core::mem::transmute_copy(&pwtableidext)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppsdtt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCDT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSiParser2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tableid: u8, bsectionnumber: u8, pwdownloaddataid: *const u16, ppcdt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCDT(::core::mem::transmute_copy(&tableid), ::core::mem::transmute_copy(&bsectionnumber), ::core::mem::transmute_copy(&pwdownloaddataid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcdt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEMM<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbSiParser2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pid: u16, wtableidext: u16, ppemm: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEMM(::core::mem::transmute_copy(&pid), ::core::mem::transmute_copy(&wtableidext)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppemm, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IDvbSiParser2_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetSDT2: GetSDT2::<Identity, Impl, OFFSET>,
            GetBIT: GetBIT::<Identity, Impl, OFFSET>,
            GetNBIT: GetNBIT::<Identity, Impl, OFFSET>,
            GetLDT: GetLDT::<Identity, Impl, OFFSET>,
            GetSDTT: GetSDTT::<Identity, Impl, OFFSET>,
            GetCDT: GetCDT::<Identity, Impl, OFFSET>,
            GetEMM: GetEMM::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbSiParser2 as ::windows::core::Interface>::IID || iid == &<IDvbSiParser as ::windows::core::Interface>::IID || iid == &<IDvbSiParser2 as ::windows::core::Interface>::IID
    }
}
pub trait IIsdbTSInformationDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetRemoteControlKeyId(&self) -> ::windows::core::Result<u8>;
    fn GetTSNameW(&self, convmode: DVB_STRCONV_MODE) -> ::windows::core::Result<::windows::core::BSTR>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordTransmissionTypeInfo(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
    fn GetRecordNumberOfServices(&self, brecordindex: u8) -> ::windows::core::Result<u8>;
    fn GetRecordServiceIdByIndex(&self, brecordindex: u8, bserviceindex: u8) -> ::windows::core::Result<u16>;
}
impl ::windows::core::RuntimeName for IIsdbTSInformationDescriptor {}
impl IIsdbTSInformationDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTSInformationDescriptor_Impl, const OFFSET: isize>() -> IIsdbTSInformationDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTSInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTSInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRemoteControlKeyId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTSInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRemoteControlKeyId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTSNameW<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTSInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTSNameW(::core::mem::transmute_copy(&convmode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTSInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTransmissionTypeInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTSInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordTransmissionTypeInfo(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordNumberOfServices<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTSInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordNumberOfServices(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceIdByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTSInformationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, bserviceindex: u8, pdwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordServiceIdByIndex(::core::mem::transmute_copy(&brecordindex), ::core::mem::transmute_copy(&bserviceindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetRemoteControlKeyId: GetRemoteControlKeyId::<Identity, Impl, OFFSET>,
            GetTSNameW: GetTSNameW::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordTransmissionTypeInfo: GetRecordTransmissionTypeInfo::<Identity, Impl, OFFSET>,
            GetRecordNumberOfServices: GetRecordNumberOfServices::<Identity, Impl, OFFSET>,
            GetRecordServiceIdByIndex: GetRecordServiceIdByIndex::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbTSInformationDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IIsdbTerrestrialDeliverySystemDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u8>;
    fn GetAreaCode(&self) -> ::windows::core::Result<u16>;
    fn GetGuardInterval(&self) -> ::windows::core::Result<u8>;
    fn GetTransmissionMode(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u8>;
    fn GetRecordFrequency(&self, brecordindex: u8) -> ::windows::core::Result<u32>;
}
impl ::windows::core::RuntimeName for IIsdbTerrestrialDeliverySystemDescriptor {}
impl IIsdbTerrestrialDeliverySystemDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>() -> IIsdbTerrestrialDeliverySystemDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAreaCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAreaCode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetGuardInterval<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetGuardInterval() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransmissionMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTransmissionMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IIsdbTerrestrialDeliverySystemDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brecordindex: u8, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordFrequency(::core::mem::transmute_copy(&brecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetAreaCode: GetAreaCode::<Identity, Impl, OFFSET>,
            GetGuardInterval: GetGuardInterval::<Identity, Impl, OFFSET>,
            GetTransmissionMode: GetTransmissionMode::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordFrequency: GetRecordFrequency::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IIsdbTerrestrialDeliverySystemDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IKsNodeControl_Impl: Sized {
    fn SetNodeId(&self, dwnodeid: u32) -> ::windows::core::Result<()>;
    fn SetKsControl(&self, pkscontrol: *const ::core::ffi::c_void) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IKsNodeControl {}
impl IKsNodeControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IKsNodeControl_Impl, const OFFSET: isize>() -> IKsNodeControl_Vtbl {
        unsafe extern "system" fn SetNodeId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IKsNodeControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwnodeid: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetNodeId(::core::mem::transmute_copy(&dwnodeid)).into()
        }
        unsafe extern "system" fn SetKsControl<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IKsNodeControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pkscontrol: *const ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetKsControl(::core::mem::transmute_copy(&pkscontrol)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetNodeId: SetNodeId::<Identity, Impl, OFFSET>,
            SetKsControl: SetKsControl::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IKsNodeControl as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
pub trait IKsTopologyInfo_Impl: Sized {
    fn NumCategories(&self) -> ::windows::core::Result<u32>;
    fn get_Category(&self, dwindex: u32) -> ::windows::core::Result<::windows::core::GUID>;
    fn NumConnections(&self) -> ::windows::core::Result<u32>;
    fn get_ConnectionInfo(&self, dwindex: u32) -> ::windows::core::Result<super::KernelStreaming::KSTOPOLOGY_CONNECTION>;
    fn get_NodeName(&self, dwnodeid: u32, pwchnodename: ::windows::core::PWSTR, dwbufsize: u32, pdwnamelen: *mut u32) -> ::windows::core::Result<()>;
    fn NumNodes(&self) -> ::windows::core::Result<u32>;
    fn get_NodeType(&self, dwnodeid: u32) -> ::windows::core::Result<::windows::core::GUID>;
    fn CreateNodeInstance(&self, dwnodeid: u32, iid: *const ::windows::core::GUID, ppvobject: *mut *mut ::core::ffi::c_void) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl ::windows::core::RuntimeName for IKsTopologyInfo {}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl IKsTopologyInfo_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>() -> IKsTopologyInfo_Vtbl {
        unsafe extern "system" fn NumCategories<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwnumcategories: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.NumCategories() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwnumcategories, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Category<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, pcategory: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_Category(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcategory, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn NumConnections<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwnumconnections: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.NumConnections() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwnumconnections, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_ConnectionInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, pconnectioninfo: *mut super::KernelStreaming::KSTOPOLOGY_CONNECTION) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_ConnectionInfo(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pconnectioninfo, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_NodeName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwnodeid: u32, pwchnodename: ::windows::core::PWSTR, dwbufsize: u32, pdwnamelen: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_NodeName(::core::mem::transmute_copy(&dwnodeid), ::core::mem::transmute_copy(&pwchnodename), ::core::mem::transmute_copy(&dwbufsize), ::core::mem::transmute_copy(&pdwnamelen)).into()
        }
        unsafe extern "system" fn NumNodes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwnumnodes: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.NumNodes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwnumnodes, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_NodeType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwnodeid: u32, pnodetype: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_NodeType(::core::mem::transmute_copy(&dwnodeid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pnodetype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CreateNodeInstance<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwnodeid: u32, iid: *const ::windows::core::GUID, ppvobject: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CreateNodeInstance(::core::mem::transmute_copy(&dwnodeid), ::core::mem::transmute_copy(&iid), ::core::mem::transmute_copy(&ppvobject)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            NumCategories: NumCategories::<Identity, Impl, OFFSET>,
            get_Category: get_Category::<Identity, Impl, OFFSET>,
            NumConnections: NumConnections::<Identity, Impl, OFFSET>,
            get_ConnectionInfo: get_ConnectionInfo::<Identity, Impl, OFFSET>,
            get_NodeName: get_NodeName::<Identity, Impl, OFFSET>,
            NumNodes: NumNodes::<Identity, Impl, OFFSET>,
            get_NodeType: get_NodeType::<Identity, Impl, OFFSET>,
            CreateNodeInstance: CreateNodeInstance::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IKsTopologyInfo as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait ILanguageComponentType_Impl: Sized + IComponentType_Impl {
    fn LangID(&self) -> ::windows::core::Result<i32>;
    fn SetLangID(&self, langid: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for ILanguageComponentType {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ILanguageComponentType_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILanguageComponentType_Impl, const OFFSET: isize>() -> ILanguageComponentType_Vtbl {
        unsafe extern "system" fn LangID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILanguageComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, langid: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.LangID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(langid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLangID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILanguageComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, langid: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLangID(::core::mem::transmute_copy(&langid)).into()
        }
        Self {
            base__: IComponentType_Vtbl::new::<Identity, Impl, OFFSET>(),
            LangID: LangID::<Identity, Impl, OFFSET>,
            SetLangID: SetLangID::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ILanguageComponentType as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IComponentType as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait ILocator_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn CarrierFrequency(&self) -> ::windows::core::Result<i32>;
    fn SetCarrierFrequency(&self, frequency: i32) -> ::windows::core::Result<()>;
    fn InnerFEC(&self) -> ::windows::core::Result<FECMethod>;
    fn SetInnerFEC(&self, fec: FECMethod) -> ::windows::core::Result<()>;
    fn InnerFECRate(&self) -> ::windows::core::Result<BinaryConvolutionCodeRate>;
    fn SetInnerFECRate(&self, fec: BinaryConvolutionCodeRate) -> ::windows::core::Result<()>;
    fn OuterFEC(&self) -> ::windows::core::Result<FECMethod>;
    fn SetOuterFEC(&self, fec: FECMethod) -> ::windows::core::Result<()>;
    fn OuterFECRate(&self) -> ::windows::core::Result<BinaryConvolutionCodeRate>;
    fn SetOuterFECRate(&self, fec: BinaryConvolutionCodeRate) -> ::windows::core::Result<()>;
    fn Modulation(&self) -> ::windows::core::Result<ModulationType>;
    fn SetModulation(&self, modulation: ModulationType) -> ::windows::core::Result<()>;
    fn SymbolRate(&self) -> ::windows::core::Result<i32>;
    fn SetSymbolRate(&self, rate: i32) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<ILocator>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for ILocator {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ILocator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>() -> ILocator_Vtbl {
        unsafe extern "system" fn CarrierFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, frequency: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CarrierFrequency() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(frequency, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCarrierFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, frequency: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCarrierFrequency(::core::mem::transmute_copy(&frequency)).into()
        }
        unsafe extern "system" fn InnerFEC<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fec: *mut FECMethod) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.InnerFEC() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(fec, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetInnerFEC<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fec: FECMethod) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetInnerFEC(::core::mem::transmute_copy(&fec)).into()
        }
        unsafe extern "system" fn InnerFECRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fec: *mut BinaryConvolutionCodeRate) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.InnerFECRate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(fec, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetInnerFECRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fec: BinaryConvolutionCodeRate) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetInnerFECRate(::core::mem::transmute_copy(&fec)).into()
        }
        unsafe extern "system" fn OuterFEC<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fec: *mut FECMethod) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.OuterFEC() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(fec, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOuterFEC<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fec: FECMethod) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOuterFEC(::core::mem::transmute_copy(&fec)).into()
        }
        unsafe extern "system" fn OuterFECRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fec: *mut BinaryConvolutionCodeRate) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.OuterFECRate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(fec, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOuterFECRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fec: BinaryConvolutionCodeRate) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOuterFECRate(::core::mem::transmute_copy(&fec)).into()
        }
        unsafe extern "system" fn Modulation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, modulation: *mut ModulationType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Modulation() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(modulation, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetModulation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, modulation: ModulationType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetModulation(::core::mem::transmute_copy(&modulation)).into()
        }
        unsafe extern "system" fn SymbolRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rate: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SymbolRate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(rate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSymbolRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rate: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSymbolRate(::core::mem::transmute_copy(&rate)).into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ILocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newlocator: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newlocator, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            CarrierFrequency: CarrierFrequency::<Identity, Impl, OFFSET>,
            SetCarrierFrequency: SetCarrierFrequency::<Identity, Impl, OFFSET>,
            InnerFEC: InnerFEC::<Identity, Impl, OFFSET>,
            SetInnerFEC: SetInnerFEC::<Identity, Impl, OFFSET>,
            InnerFECRate: InnerFECRate::<Identity, Impl, OFFSET>,
            SetInnerFECRate: SetInnerFECRate::<Identity, Impl, OFFSET>,
            OuterFEC: OuterFEC::<Identity, Impl, OFFSET>,
            SetOuterFEC: SetOuterFEC::<Identity, Impl, OFFSET>,
            OuterFECRate: OuterFECRate::<Identity, Impl, OFFSET>,
            SetOuterFECRate: SetOuterFECRate::<Identity, Impl, OFFSET>,
            Modulation: Modulation::<Identity, Impl, OFFSET>,
            SetModulation: SetModulation::<Identity, Impl, OFFSET>,
            SymbolRate: SymbolRate::<Identity, Impl, OFFSET>,
            SetSymbolRate: SetSymbolRate::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ILocator as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMPEG2Component_Impl: Sized + IComponent_Impl {
    fn PID(&self) -> ::windows::core::Result<i32>;
    fn SetPID(&self, pid: i32) -> ::windows::core::Result<()>;
    fn PCRPID(&self) -> ::windows::core::Result<i32>;
    fn SetPCRPID(&self, pcrpid: i32) -> ::windows::core::Result<()>;
    fn ProgramNumber(&self) -> ::windows::core::Result<i32>;
    fn SetProgramNumber(&self, programnumber: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMPEG2Component {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMPEG2Component_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2Component_Impl, const OFFSET: isize>() -> IMPEG2Component_Vtbl {
        unsafe extern "system" fn PID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2Component_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pid: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2Component_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pid: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPID(::core::mem::transmute_copy(&pid)).into()
        }
        unsafe extern "system" fn PCRPID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2Component_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcrpid: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PCRPID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcrpid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPCRPID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2Component_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcrpid: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPCRPID(::core::mem::transmute_copy(&pcrpid)).into()
        }
        unsafe extern "system" fn ProgramNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2Component_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, programnumber: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ProgramNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(programnumber, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetProgramNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2Component_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, programnumber: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetProgramNumber(::core::mem::transmute_copy(&programnumber)).into()
        }
        Self {
            base__: IComponent_Vtbl::new::<Identity, Impl, OFFSET>(),
            PID: PID::<Identity, Impl, OFFSET>,
            SetPID: SetPID::<Identity, Impl, OFFSET>,
            PCRPID: PCRPID::<Identity, Impl, OFFSET>,
            SetPCRPID: SetPCRPID::<Identity, Impl, OFFSET>,
            ProgramNumber: ProgramNumber::<Identity, Impl, OFFSET>,
            SetProgramNumber: SetProgramNumber::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMPEG2Component as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IComponent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMPEG2ComponentType_Impl: Sized + ILanguageComponentType_Impl {
    fn StreamType(&self) -> ::windows::core::Result<MPEG2StreamType>;
    fn SetStreamType(&self, mp2streamtype: MPEG2StreamType) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMPEG2ComponentType {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMPEG2ComponentType_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2ComponentType_Impl, const OFFSET: isize>() -> IMPEG2ComponentType_Vtbl {
        unsafe extern "system" fn StreamType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2ComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mp2streamtype: *mut MPEG2StreamType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.StreamType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(mp2streamtype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStreamType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2ComponentType_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mp2streamtype: MPEG2StreamType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStreamType(::core::mem::transmute_copy(&mp2streamtype)).into()
        }
        Self {
            base__: ILanguageComponentType_Vtbl::new::<Identity, Impl, OFFSET>(),
            StreamType: StreamType::<Identity, Impl, OFFSET>,
            SetStreamType: SetStreamType::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMPEG2ComponentType as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IComponentType as ::windows::core::Interface>::IID || iid == &<ILanguageComponentType 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<Impl = Impl>, Impl: IMPEG2PIDMap_Impl, const OFFSET: isize>() -> IMPEG2PIDMap_Vtbl {
        unsafe extern "system" fn MapPID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2PIDMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, culpid: u32, pulpid: *const u32, mediasamplecontent: MEDIA_SAMPLE_CONTENT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MapPID(::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<Impl = Impl>, Impl: IMPEG2PIDMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, culpid: u32, pulpid: *const u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnmapPID(::core::mem::transmute_copy(&culpid), ::core::mem::transmute_copy(&pulpid)).into()
        }
        unsafe extern "system" fn EnumPIDMap<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2PIDMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pienumpidmap: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumPIDMap() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pienumpidmap, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            MapPID: MapPID::<Identity, Impl, OFFSET>,
            UnmapPID: UnmapPID::<Identity, Impl, OFFSET>,
            EnumPIDMap: EnumPIDMap::<Identity, Impl, 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<Impl = Impl>, Impl: IMPEG2StreamIdMap_Impl, const OFFSET: isize>() -> IMPEG2StreamIdMap_Vtbl {
        unsafe extern "system" fn MapStreamId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2StreamIdMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulstreamid: u32, mediasamplecontent: u32, ulsubstreamfiltervalue: u32, idataoffset: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MapStreamId(::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<Impl = Impl>, Impl: IMPEG2StreamIdMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, culstreamid: u32, pulstreamid: *const u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnmapStreamId(::core::mem::transmute_copy(&culstreamid), ::core::mem::transmute_copy(&pulstreamid)).into()
        }
        unsafe extern "system" fn EnumStreamIdMap<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2StreamIdMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppienumstreamidmap: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumStreamIdMap() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppienumstreamidmap, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            MapStreamId: MapStreamId::<Identity, Impl, OFFSET>,
            UnmapStreamId: UnmapStreamId::<Identity, Impl, OFFSET>,
            EnumStreamIdMap: EnumStreamIdMap::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMPEG2StreamIdMap as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMPEG2TuneRequest_Impl: Sized + ITuneRequest_Impl {
    fn TSID(&self) -> ::windows::core::Result<i32>;
    fn SetTSID(&self, tsid: i32) -> ::windows::core::Result<()>;
    fn ProgNo(&self) -> ::windows::core::Result<i32>;
    fn SetProgNo(&self, progno: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMPEG2TuneRequest {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMPEG2TuneRequest_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2TuneRequest_Impl, const OFFSET: isize>() -> IMPEG2TuneRequest_Vtbl {
        unsafe extern "system" fn TSID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2TuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tsid: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TSID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tsid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTSID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2TuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tsid: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTSID(::core::mem::transmute_copy(&tsid)).into()
        }
        unsafe extern "system" fn ProgNo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2TuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, progno: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ProgNo() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(progno, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetProgNo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2TuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, progno: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetProgNo(::core::mem::transmute_copy(&progno)).into()
        }
        Self {
            base__: ITuneRequest_Vtbl::new::<Identity, Impl, OFFSET>(),
            TSID: TSID::<Identity, Impl, OFFSET>,
            SetTSID: SetTSID::<Identity, Impl, OFFSET>,
            ProgNo: ProgNo::<Identity, Impl, OFFSET>,
            SetProgNo: SetProgNo::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMPEG2TuneRequest as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<ITuneRequest as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMPEG2TuneRequestFactory_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn CreateTuneRequest(&self, tuningspace: &::core::option::Option<ITuningSpace>) -> ::windows::core::Result<IMPEG2TuneRequest>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMPEG2TuneRequestFactory {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMPEG2TuneRequestFactory_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2TuneRequestFactory_Impl, const OFFSET: isize>() -> IMPEG2TuneRequestFactory_Vtbl {
        unsafe extern "system" fn CreateTuneRequest<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2TuneRequestFactory_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tuningspace: *mut ::core::ffi::c_void, tunerequest: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CreateTuneRequest(::core::mem::transmute(&tuningspace)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tunerequest, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            CreateTuneRequest: CreateTuneRequest::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMPEG2TuneRequestFactory as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
pub trait IMPEG2TuneRequestSupport_Impl: Sized {}
impl ::windows::core::RuntimeName for IMPEG2TuneRequestSupport {}
impl IMPEG2TuneRequestSupport_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2TuneRequestSupport_Impl, const OFFSET: isize>() -> IMPEG2TuneRequestSupport_Vtbl {
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMPEG2TuneRequestSupport as ::windows::core::Interface>::IID
    }
}
pub trait IMPEG2_TIF_CONTROL_Impl: Sized {
    fn RegisterTIF(&self, punktif: &::core::option::Option<::windows::core::IUnknown>, ppvregistrationcontext: *mut u32) -> ::windows::core::Result<()>;
    fn UnregisterTIF(&self, pvregistrationcontext: u32) -> ::windows::core::Result<()>;
    fn AddPIDs(&self, ulcpids: u32, pulpids: *const u32) -> ::windows::core::Result<()>;
    fn DeletePIDs(&self, ulcpids: u32, pulpids: *const u32) -> ::windows::core::Result<()>;
    fn GetPIDCount(&self) -> ::windows::core::Result<u32>;
    fn GetPIDs(&self, pulcpids: *mut u32, pulpids: *mut u32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IMPEG2_TIF_CONTROL {}
impl IMPEG2_TIF_CONTROL_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2_TIF_CONTROL_Impl, const OFFSET: isize>() -> IMPEG2_TIF_CONTROL_Vtbl {
        unsafe extern "system" fn RegisterTIF<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2_TIF_CONTROL_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, punktif: *mut ::core::ffi::c_void, ppvregistrationcontext: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterTIF(::core::mem::transmute(&punktif), ::core::mem::transmute_copy(&ppvregistrationcontext)).into()
        }
        unsafe extern "system" fn UnregisterTIF<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2_TIF_CONTROL_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvregistrationcontext: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnregisterTIF(::core::mem::transmute_copy(&pvregistrationcontext)).into()
        }
        unsafe extern "system" fn AddPIDs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2_TIF_CONTROL_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcpids: u32, pulpids: *const u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AddPIDs(::core::mem::transmute_copy(&ulcpids), ::core::mem::transmute_copy(&pulpids)).into()
        }
        unsafe extern "system" fn DeletePIDs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2_TIF_CONTROL_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcpids: u32, pulpids: *const u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DeletePIDs(::core::mem::transmute_copy(&ulcpids), ::core::mem::transmute_copy(&pulpids)).into()
        }
        unsafe extern "system" fn GetPIDCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2_TIF_CONTROL_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcpids: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPIDCount() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pulcpids, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPIDs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMPEG2_TIF_CONTROL_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcpids: *mut u32, pulpids: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPIDs(::core::mem::transmute_copy(&pulcpids), ::core::mem::transmute_copy(&pulpids)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RegisterTIF: RegisterTIF::<Identity, Impl, OFFSET>,
            UnregisterTIF: UnregisterTIF::<Identity, Impl, OFFSET>,
            AddPIDs: AddPIDs::<Identity, Impl, OFFSET>,
            DeletePIDs: DeletePIDs::<Identity, Impl, OFFSET>,
            GetPIDCount: GetPIDCount::<Identity, Impl, OFFSET>,
            GetPIDs: GetPIDs::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMPEG2_TIF_CONTROL as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSEventBinder_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Bind(&self, peventobject: &::core::option::Option<super::super::System::Com::IDispatch>, eventname: &::windows::core::BSTR, eventhandler: &::windows::core::BSTR) -> ::windows::core::Result<i32>;
    fn Unbind(&self, cancelcookie: u32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSEventBinder {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSEventBinder_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSEventBinder_Impl, const OFFSET: isize>() -> IMSEventBinder_Vtbl {
        unsafe extern "system" fn Bind<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSEventBinder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, peventobject: *mut ::core::ffi::c_void, eventname: ::core::mem::ManuallyDrop<::windows::core::BSTR>, eventhandler: ::core::mem::ManuallyDrop<::windows::core::BSTR>, cancelid: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Bind(::core::mem::transmute(&peventobject), ::core::mem::transmute(&eventname), ::core::mem::transmute(&eventhandler)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(cancelid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Unbind<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSEventBinder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cancelcookie: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Unbind(::core::mem::transmute_copy(&cancelcookie)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Bind: Bind::<Identity, Impl, OFFSET>,
            Unbind: Unbind::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSEventBinder as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidAnalogTuner_Impl: Sized + IMSVidTuner_Impl {
    fn Channel(&self) -> ::windows::core::Result<i32>;
    fn SetChannel(&self, channel: i32) -> ::windows::core::Result<()>;
    fn VideoFrequency(&self) -> ::windows::core::Result<i32>;
    fn AudioFrequency(&self) -> ::windows::core::Result<i32>;
    fn CountryCode(&self) -> ::windows::core::Result<i32>;
    fn SetCountryCode(&self, lcc: i32) -> ::windows::core::Result<()>;
    fn SAP(&self) -> ::windows::core::Result<i16>;
    fn SetSAP(&self, fsapon: i16) -> ::windows::core::Result<()>;
    fn ChannelAvailable(&self, nchannel: i32, signalstrength: *mut i32, fsignalpresent: *mut i16) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidAnalogTuner {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidAnalogTuner_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTuner_Impl, const OFFSET: isize>() -> IMSVidAnalogTuner_Vtbl {
        unsafe extern "system" fn Channel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, channel: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Channel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(channel, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetChannel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, channel: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetChannel(::core::mem::transmute_copy(&channel)).into()
        }
        unsafe extern "system" fn VideoFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lcc: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VideoFrequency() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lcc, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AudioFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lcc: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AudioFrequency() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lcc, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CountryCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lcc: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CountryCode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lcc, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCountryCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lcc: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCountryCode(::core::mem::transmute_copy(&lcc)).into()
        }
        unsafe extern "system" fn SAP<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfsapon: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SAP() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfsapon, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSAP<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fsapon: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSAP(::core::mem::transmute_copy(&fsapon)).into()
        }
        unsafe extern "system" fn ChannelAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, nchannel: i32, signalstrength: *mut i32, fsignalpresent: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChannelAvailable(::core::mem::transmute_copy(&nchannel), ::core::mem::transmute_copy(&signalstrength), ::core::mem::transmute_copy(&fsignalpresent)).into()
        }
        Self {
            base__: IMSVidTuner_Vtbl::new::<Identity, Impl, OFFSET>(),
            Channel: Channel::<Identity, Impl, OFFSET>,
            SetChannel: SetChannel::<Identity, Impl, OFFSET>,
            VideoFrequency: VideoFrequency::<Identity, Impl, OFFSET>,
            AudioFrequency: AudioFrequency::<Identity, Impl, OFFSET>,
            CountryCode: CountryCode::<Identity, Impl, OFFSET>,
            SetCountryCode: SetCountryCode::<Identity, Impl, OFFSET>,
            SAP: SAP::<Identity, Impl, OFFSET>,
            SetSAP: SetSAP::<Identity, Impl, OFFSET>,
            ChannelAvailable: ChannelAvailable::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidAnalogTuner as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidInputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidVideoInputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidTuner as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidAnalogTuner2_Impl: Sized + IMSVidAnalogTuner_Impl {
    fn TVFormats(&self) -> ::windows::core::Result<i32>;
    fn TunerModes(&self) -> ::windows::core::Result<i32>;
    fn NumAuxInputs(&self) -> ::windows::core::Result<i32>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidAnalogTuner2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidAnalogTuner2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTuner2_Impl, const OFFSET: isize>() -> IMSVidAnalogTuner2_Vtbl {
        unsafe extern "system" fn TVFormats<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTuner2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, formats: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TVFormats() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(formats, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TunerModes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTuner2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, modes: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TunerModes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(modes, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn NumAuxInputs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTuner2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, inputs: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.NumAuxInputs() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(inputs, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidAnalogTuner_Vtbl::new::<Identity, Impl, OFFSET>(),
            TVFormats: TVFormats::<Identity, Impl, OFFSET>,
            TunerModes: TunerModes::<Identity, Impl, OFFSET>,
            NumAuxInputs: NumAuxInputs::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidAnalogTuner2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidInputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidVideoInputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidTuner as ::windows::core::Interface>::IID || iid == &<IMSVidAnalogTuner as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidAnalogTunerEvent_Impl: Sized + IMSVidTunerEvent_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidAnalogTunerEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidAnalogTunerEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAnalogTunerEvent_Impl, const OFFSET: isize>() -> IMSVidAnalogTunerEvent_Vtbl {
        Self { base__: IMSVidTunerEvent_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidAnalogTunerEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidTunerEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidAudioRenderer_Impl: Sized + IMSVidOutputDevice_Impl {
    fn SetVolume(&self, lvol: i32) -> ::windows::core::Result<()>;
    fn Volume(&self) -> ::windows::core::Result<i32>;
    fn SetBalance(&self, lbal: i32) -> ::windows::core::Result<()>;
    fn Balance(&self) -> ::windows::core::Result<i32>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidAudioRenderer {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidAudioRenderer_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRenderer_Impl, const OFFSET: isize>() -> IMSVidAudioRenderer_Vtbl {
        unsafe extern "system" fn SetVolume<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lvol: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVolume(::core::mem::transmute_copy(&lvol)).into()
        }
        unsafe extern "system" fn Volume<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lvol: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Volume() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lvol, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBalance<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lbal: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBalance(::core::mem::transmute_copy(&lbal)).into()
        }
        unsafe extern "system" fn Balance<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lbal: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Balance() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lbal, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidOutputDevice_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetVolume: SetVolume::<Identity, Impl, OFFSET>,
            Volume: Volume::<Identity, Impl, OFFSET>,
            SetBalance: SetBalance::<Identity, Impl, OFFSET>,
            Balance: Balance::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidAudioRenderer as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDevice as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidAudioRendererDevices_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> ::windows::core::Result<i32>;
    fn _NewEnum(&self) -> ::windows::core::Result<super::super::System::Ole::IEnumVARIANT>;
    fn get_Item(&self, v: &super::super::System::Com::VARIANT) -> ::windows::core::Result<IMSVidAudioRenderer>;
    fn Add(&self, pdb: &::core::option::Option<IMSVidAudioRenderer>) -> ::windows::core::Result<()>;
    fn Remove(&self, v: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidAudioRendererDevices {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidAudioRendererDevices_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererDevices_Impl, const OFFSET: isize>() -> IMSVidAudioRendererDevices_Vtbl {
        unsafe extern "system" fn Count<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lcount: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Count() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lcount, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._NewEnum() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, v: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, pdb: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_Item(::core::mem::transmute(&v)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdb, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdb: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Add(::core::mem::transmute(&pdb)).into()
        }
        unsafe extern "system" fn Remove<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, v: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Remove(::core::mem::transmute(&v)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Count: Count::<Identity, Impl, OFFSET>,
            _NewEnum: _NewEnum::<Identity, Impl, OFFSET>,
            get_Item: get_Item::<Identity, Impl, OFFSET>,
            Add: Add::<Identity, Impl, OFFSET>,
            Remove: Remove::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidAudioRendererDevices as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidAudioRendererEvent_Impl: Sized + IMSVidOutputDeviceEvent_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidAudioRendererEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidAudioRendererEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererEvent_Impl, const OFFSET: isize>() -> IMSVidAudioRendererEvent_Vtbl {
        Self { base__: IMSVidOutputDeviceEvent_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidAudioRendererEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidAudioRendererEvent2_Impl: Sized + IMSVidAudioRendererEvent_Impl {
    fn AVDecAudioDualMono(&self) -> ::windows::core::Result<()>;
    fn AVAudioSampleRate(&self) -> ::windows::core::Result<()>;
    fn AVAudioChannelConfig(&self) -> ::windows::core::Result<()>;
    fn AVAudioChannelCount(&self) -> ::windows::core::Result<()>;
    fn AVDecCommonMeanBitRate(&self) -> ::windows::core::Result<()>;
    fn AVDDSurroundMode(&self) -> ::windows::core::Result<()>;
    fn AVDecCommonInputFormat(&self) -> ::windows::core::Result<()>;
    fn AVDecCommonOutputFormat(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidAudioRendererEvent2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidAudioRendererEvent2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererEvent2_Impl, const OFFSET: isize>() -> IMSVidAudioRendererEvent2_Vtbl {
        unsafe extern "system" fn AVDecAudioDualMono<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererEvent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AVDecAudioDualMono().into()
        }
        unsafe extern "system" fn AVAudioSampleRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererEvent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AVAudioSampleRate().into()
        }
        unsafe extern "system" fn AVAudioChannelConfig<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererEvent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AVAudioChannelConfig().into()
        }
        unsafe extern "system" fn AVAudioChannelCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererEvent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AVAudioChannelCount().into()
        }
        unsafe extern "system" fn AVDecCommonMeanBitRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererEvent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AVDecCommonMeanBitRate().into()
        }
        unsafe extern "system" fn AVDDSurroundMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererEvent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AVDDSurroundMode().into()
        }
        unsafe extern "system" fn AVDecCommonInputFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererEvent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AVDecCommonInputFormat().into()
        }
        unsafe extern "system" fn AVDecCommonOutputFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidAudioRendererEvent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AVDecCommonOutputFormat().into()
        }
        Self {
            base__: IMSVidAudioRendererEvent_Vtbl::new::<Identity, Impl, OFFSET>(),
            AVDecAudioDualMono: AVDecAudioDualMono::<Identity, Impl, OFFSET>,
            AVAudioSampleRate: AVAudioSampleRate::<Identity, Impl, OFFSET>,
            AVAudioChannelConfig: AVAudioChannelConfig::<Identity, Impl, OFFSET>,
            AVAudioChannelCount: AVAudioChannelCount::<Identity, Impl, OFFSET>,
            AVDecCommonMeanBitRate: AVDecCommonMeanBitRate::<Identity, Impl, OFFSET>,
            AVDDSurroundMode: AVDDSurroundMode::<Identity, Impl, OFFSET>,
            AVDecCommonInputFormat: AVDecCommonInputFormat::<Identity, Impl, OFFSET>,
            AVDecCommonOutputFormat: AVDecCommonOutputFormat::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidAudioRendererEvent2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidAudioRendererEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidClosedCaptioning_Impl: Sized + IMSVidFeature_Impl {
    fn Enable(&self) -> ::windows::core::Result<i16>;
    fn SetEnable(&self, on: i16) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidClosedCaptioning {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidClosedCaptioning_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidClosedCaptioning_Impl, const OFFSET: isize>() -> IMSVidClosedCaptioning_Vtbl {
        unsafe extern "system" fn Enable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidClosedCaptioning_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, on: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Enable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(on, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetEnable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidClosedCaptioning_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, on: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetEnable(::core::mem::transmute_copy(&on)).into()
        }
        Self {
            base__: IMSVidFeature_Vtbl::new::<Identity, Impl, OFFSET>(),
            Enable: Enable::<Identity, Impl, OFFSET>,
            SetEnable: SetEnable::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidClosedCaptioning as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidFeature as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidClosedCaptioning2_Impl: Sized + IMSVidClosedCaptioning_Impl {
    fn Service(&self) -> ::windows::core::Result<MSVidCCService>;
    fn SetService(&self, on: MSVidCCService) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidClosedCaptioning2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidClosedCaptioning2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidClosedCaptioning2_Impl, const OFFSET: isize>() -> IMSVidClosedCaptioning2_Vtbl {
        unsafe extern "system" fn Service<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidClosedCaptioning2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, on: *mut MSVidCCService) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Service() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(on, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetService<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidClosedCaptioning2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, on: MSVidCCService) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetService(::core::mem::transmute_copy(&on)).into()
        }
        Self {
            base__: IMSVidClosedCaptioning_Vtbl::new::<Identity, Impl, OFFSET>(),
            Service: Service::<Identity, Impl, OFFSET>,
            SetService: SetService::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidClosedCaptioning2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidFeature as ::windows::core::Interface>::IID || iid == &<IMSVidClosedCaptioning as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidClosedCaptioning3_Impl: Sized + IMSVidClosedCaptioning2_Impl {
    fn TeleTextFilter(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidClosedCaptioning3 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidClosedCaptioning3_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidClosedCaptioning3_Impl, const OFFSET: isize>() -> IMSVidClosedCaptioning3_Vtbl {
        unsafe extern "system" fn TeleTextFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidClosedCaptioning3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, punkttfilter: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TeleTextFilter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(punkttfilter, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: IMSVidClosedCaptioning2_Vtbl::new::<Identity, Impl, OFFSET>(), TeleTextFilter: TeleTextFilter::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidClosedCaptioning3 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidFeature as ::windows::core::Interface>::IID || iid == &<IMSVidClosedCaptioning as ::windows::core::Interface>::IID || iid == &<IMSVidClosedCaptioning2 as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidCompositionSegment_Impl: Sized + IMSVidGraphSegment_Impl {
    fn Compose(&self, upstream: &::core::option::Option<IMSVidGraphSegment>, downstream: &::core::option::Option<IMSVidGraphSegment>) -> ::windows::core::Result<()>;
    fn Up(&self) -> ::windows::core::Result<IMSVidGraphSegment>;
    fn Down(&self) -> ::windows::core::Result<IMSVidGraphSegment>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IMSVidCompositionSegment {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidCompositionSegment_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCompositionSegment_Impl, const OFFSET: isize>() -> IMSVidCompositionSegment_Vtbl {
        unsafe extern "system" fn Compose<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCompositionSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, upstream: *mut ::core::ffi::c_void, downstream: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Compose(::core::mem::transmute(&upstream), ::core::mem::transmute(&downstream)).into()
        }
        unsafe extern "system" fn Up<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCompositionSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, upstream: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Up() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(upstream, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Down<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCompositionSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, downstream: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Down() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(downstream, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidGraphSegment_Vtbl::new::<Identity, Impl, OFFSET>(),
            Compose: Compose::<Identity, Impl, OFFSET>,
            Up: Up::<Identity, Impl, OFFSET>,
            Down: Down::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidCompositionSegment as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IPersist as ::windows::core::Interface>::IID || iid == &<IMSVidGraphSegment as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidCtl_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn AutoSize(&self) -> ::windows::core::Result<i16>;
    fn SetAutoSize(&self, vbool: i16) -> ::windows::core::Result<()>;
    fn BackColor(&self) -> ::windows::core::Result<u32>;
    fn SetBackColor(&self, backcolor: u32) -> ::windows::core::Result<()>;
    fn Enabled(&self) -> ::windows::core::Result<i16>;
    fn SetEnabled(&self, vbool: i16) -> ::windows::core::Result<()>;
    fn TabStop(&self) -> ::windows::core::Result<i16>;
    fn SetTabStop(&self, vbool: i16) -> ::windows::core::Result<()>;
    fn Window(&self) -> ::windows::core::Result<super::super::Foundation::HWND>;
    fn Refresh(&self) -> ::windows::core::Result<()>;
    fn DisplaySize(&self) -> ::windows::core::Result<DisplaySizeList>;
    fn SetDisplaySize(&self, newvalue: DisplaySizeList) -> ::windows::core::Result<()>;
    fn MaintainAspectRatio(&self) -> ::windows::core::Result<i16>;
    fn SetMaintainAspectRatio(&self, newvalue: i16) -> ::windows::core::Result<()>;
    fn ColorKey(&self) -> ::windows::core::Result<u32>;
    fn SetColorKey(&self, newvalue: u32) -> ::windows::core::Result<()>;
    fn get_InputsAvailable(&self, categoryguid: &::windows::core::BSTR) -> ::windows::core::Result<IMSVidInputDevices>;
    fn get_OutputsAvailable(&self, categoryguid: &::windows::core::BSTR) -> ::windows::core::Result<IMSVidOutputDevices>;
    fn get__InputsAvailable(&self, categoryguid: *const ::windows::core::GUID) -> ::windows::core::Result<IMSVidInputDevices>;
    fn get__OutputsAvailable(&self, categoryguid: *const ::windows::core::GUID) -> ::windows::core::Result<IMSVidOutputDevices>;
    fn VideoRenderersAvailable(&self) -> ::windows::core::Result<IMSVidVideoRendererDevices>;
    fn AudioRenderersAvailable(&self) -> ::windows::core::Result<IMSVidAudioRendererDevices>;
    fn FeaturesAvailable(&self) -> ::windows::core::Result<IMSVidFeatures>;
    fn InputActive(&self) -> ::windows::core::Result<IMSVidInputDevice>;
    fn SetInputActive(&self, pval: &::core::option::Option<IMSVidInputDevice>) -> ::windows::core::Result<()>;
    fn OutputsActive(&self) -> ::windows::core::Result<IMSVidOutputDevices>;
    fn SetOutputsActive(&self, pval: &::core::option::Option<IMSVidOutputDevices>) -> ::windows::core::Result<()>;
    fn VideoRendererActive(&self) -> ::windows::core::Result<IMSVidVideoRenderer>;
    fn SetVideoRendererActive(&self, pval: &::core::option::Option<IMSVidVideoRenderer>) -> ::windows::core::Result<()>;
    fn AudioRendererActive(&self) -> ::windows::core::Result<IMSVidAudioRenderer>;
    fn SetAudioRendererActive(&self, pval: &::core::option::Option<IMSVidAudioRenderer>) -> ::windows::core::Result<()>;
    fn FeaturesActive(&self) -> ::windows::core::Result<IMSVidFeatures>;
    fn SetFeaturesActive(&self, pval: &::core::option::Option<IMSVidFeatures>) -> ::windows::core::Result<()>;
    fn State(&self) -> ::windows::core::Result<MSVidCtlStateList>;
    fn View(&self, v: *const super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
    fn Build(&self) -> ::windows::core::Result<()>;
    fn Pause(&self) -> ::windows::core::Result<()>;
    fn Run(&self) -> ::windows::core::Result<()>;
    fn Stop(&self) -> ::windows::core::Result<()>;
    fn Decompose(&self) -> ::windows::core::Result<()>;
    fn DisableVideo(&self) -> ::windows::core::Result<()>;
    fn DisableAudio(&self) -> ::windows::core::Result<()>;
    fn ViewNext(&self, v: *const super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidCtl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidCtl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>() -> IMSVidCtl_Vtbl {
        unsafe extern "system" fn AutoSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbool: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AutoSize() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbool, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAutoSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, vbool: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAutoSize(::core::mem::transmute_copy(&vbool)).into()
        }
        unsafe extern "system" fn BackColor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, backcolor: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.BackColor() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(backcolor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBackColor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, backcolor: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBackColor(::core::mem::transmute_copy(&backcolor)).into()
        }
        unsafe extern "system" fn Enabled<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbool: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Enabled() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbool, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetEnabled<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, vbool: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetEnabled(::core::mem::transmute_copy(&vbool)).into()
        }
        unsafe extern "system" fn TabStop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbool: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TabStop() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbool, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTabStop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, vbool: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTabStop(::core::mem::transmute_copy(&vbool)).into()
        }
        unsafe extern "system" fn Window<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phwnd: *mut super::super::Foundation::HWND) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Window() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(phwnd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Refresh<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Refresh().into()
        }
        unsafe extern "system" fn DisplaySize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, currentvalue: *mut DisplaySizeList) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DisplaySize() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(currentvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDisplaySize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newvalue: DisplaySizeList) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDisplaySize(::core::mem::transmute_copy(&newvalue)).into()
        }
        unsafe extern "system" fn MaintainAspectRatio<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, currentvalue: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MaintainAspectRatio() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(currentvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaintainAspectRatio<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newvalue: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMaintainAspectRatio(::core::mem::transmute_copy(&newvalue)).into()
        }
        unsafe extern "system" fn ColorKey<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, currentvalue: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ColorKey() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(currentvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetColorKey<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newvalue: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetColorKey(::core::mem::transmute_copy(&newvalue)).into()
        }
        unsafe extern "system" fn get_InputsAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, categoryguid: ::core::mem::ManuallyDrop<::windows::core::BSTR>, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_InputsAvailable(::core::mem::transmute(&categoryguid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_OutputsAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, categoryguid: ::core::mem::ManuallyDrop<::windows::core::BSTR>, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_OutputsAvailable(::core::mem::transmute(&categoryguid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get__InputsAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, categoryguid: *const ::windows::core::GUID, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get__InputsAvailable(::core::mem::transmute_copy(&categoryguid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get__OutputsAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, categoryguid: *const ::windows::core::GUID, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get__OutputsAvailable(::core::mem::transmute_copy(&categoryguid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VideoRenderersAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VideoRenderersAvailable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AudioRenderersAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AudioRenderersAvailable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FeaturesAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FeaturesAvailable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn InputActive<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.InputActive() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetInputActive<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetInputActive(::core::mem::transmute(&pval)).into()
        }
        unsafe extern "system" fn OutputsActive<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.OutputsActive() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputsActive<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOutputsActive(::core::mem::transmute(&pval)).into()
        }
        unsafe extern "system" fn VideoRendererActive<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VideoRendererActive() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetVideoRendererActive<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVideoRendererActive(::core::mem::transmute(&pval)).into()
        }
        unsafe extern "system" fn AudioRendererActive<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AudioRendererActive() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAudioRendererActive<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAudioRendererActive(::core::mem::transmute(&pval)).into()
        }
        unsafe extern "system" fn FeaturesActive<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FeaturesActive() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFeaturesActive<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFeaturesActive(::core::mem::transmute(&pval)).into()
        }
        unsafe extern "system" fn State<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lstate: *mut MSVidCtlStateList) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.State() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lstate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn View<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, v: *const ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.View(::core::mem::transmute_copy(&v)).into()
        }
        unsafe extern "system" fn Build<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Build().into()
        }
        unsafe extern "system" fn Pause<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Pause().into()
        }
        unsafe extern "system" fn Run<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Run().into()
        }
        unsafe extern "system" fn Stop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Stop().into()
        }
        unsafe extern "system" fn Decompose<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Decompose().into()
        }
        unsafe extern "system" fn DisableVideo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DisableVideo().into()
        }
        unsafe extern "system" fn DisableAudio<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DisableAudio().into()
        }
        unsafe extern "system" fn ViewNext<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidCtl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, v: *const ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ViewNext(::core::mem::transmute_copy(&v)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            AutoSize: AutoSize::<Identity, Impl, OFFSET>,
            SetAutoSize: SetAutoSize::<Identity, Impl, OFFSET>,
            BackColor: BackColor::<Identity, Impl, OFFSET>,
            SetBackColor: SetBackColor::<Identity, Impl, OFFSET>,
            Enabled: Enabled::<Identity, Impl, OFFSET>,
            SetEnabled: SetEnabled::<Identity, Impl, OFFSET>,
            TabStop: TabStop::<Identity, Impl, OFFSET>,
            SetTabStop: SetTabStop::<Identity, Impl, OFFSET>,
            Window: Window::<Identity, Impl, OFFSET>,
            Refresh: Refresh::<Identity, Impl, OFFSET>,
            DisplaySize: DisplaySize::<Identity, Impl, OFFSET>,
            SetDisplaySize: SetDisplaySize::<Identity, Impl, OFFSET>,
            MaintainAspectRatio: MaintainAspectRatio::<Identity, Impl, OFFSET>,
            SetMaintainAspectRatio: SetMaintainAspectRatio::<Identity, Impl, OFFSET>,
            ColorKey: ColorKey::<Identity, Impl, OFFSET>,
            SetColorKey: SetColorKey::<Identity, Impl, OFFSET>,
            get_InputsAvailable: get_InputsAvailable::<Identity, Impl, OFFSET>,
            get_OutputsAvailable: get_OutputsAvailable::<Identity, Impl, OFFSET>,
            get__InputsAvailable: get__InputsAvailable::<Identity, Impl, OFFSET>,
            get__OutputsAvailable: get__OutputsAvailable::<Identity, Impl, OFFSET>,
            VideoRenderersAvailable: VideoRenderersAvailable::<Identity, Impl, OFFSET>,
            AudioRenderersAvailable: AudioRenderersAvailable::<Identity, Impl, OFFSET>,
            FeaturesAvailable: FeaturesAvailable::<Identity, Impl, OFFSET>,
            InputActive: InputActive::<Identity, Impl, OFFSET>,
            SetInputActive: SetInputActive::<Identity, Impl, OFFSET>,
            OutputsActive: OutputsActive::<Identity, Impl, OFFSET>,
            SetOutputsActive: SetOutputsActive::<Identity, Impl, OFFSET>,
            VideoRendererActive: VideoRendererActive::<Identity, Impl, OFFSET>,
            SetVideoRendererActive: SetVideoRendererActive::<Identity, Impl, OFFSET>,
            AudioRendererActive: AudioRendererActive::<Identity, Impl, OFFSET>,
            SetAudioRendererActive: SetAudioRendererActive::<Identity, Impl, OFFSET>,
            FeaturesActive: FeaturesActive::<Identity, Impl, OFFSET>,
            SetFeaturesActive: SetFeaturesActive::<Identity, Impl, OFFSET>,
            State: State::<Identity, Impl, OFFSET>,
            View: View::<Identity, Impl, OFFSET>,
            Build: Build::<Identity, Impl, OFFSET>,
            Pause: Pause::<Identity, Impl, OFFSET>,
            Run: Run::<Identity, Impl, OFFSET>,
            Stop: Stop::<Identity, Impl, OFFSET>,
            Decompose: Decompose::<Identity, Impl, OFFSET>,
            DisableVideo: DisableVideo::<Identity, Impl, OFFSET>,
            DisableAudio: DisableAudio::<Identity, Impl, OFFSET>,
            ViewNext: ViewNext::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidCtl as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidDataServices_Impl: Sized + IMSVidFeature_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidDataServices {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidDataServices_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDataServices_Impl, const OFFSET: isize>() -> IMSVidDataServices_Vtbl {
        Self { base__: IMSVidFeature_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidDataServices as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidFeature as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidDataServicesEvent_Impl: Sized + IMSVidDeviceEvent_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidDataServicesEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidDataServicesEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDataServicesEvent_Impl, const OFFSET: isize>() -> IMSVidDataServicesEvent_Vtbl {
        Self { base__: IMSVidDeviceEvent_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidDataServicesEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDeviceEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidDevice_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Name(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn Status(&self) -> ::windows::core::Result<i32>;
    fn SetPower(&self, power: i16) -> ::windows::core::Result<()>;
    fn Power(&self) -> ::windows::core::Result<i16>;
    fn Category(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn ClassID(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn _Category(&self) -> ::windows::core::Result<::windows::core::GUID>;
    fn _ClassID(&self) -> ::windows::core::Result<::windows::core::GUID>;
    fn IsEqualDevice(&self, device: &::core::option::Option<IMSVidDevice>) -> ::windows::core::Result<i16>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidDevice {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidDevice_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDevice_Impl, const OFFSET: isize>() -> IMSVidDevice_Vtbl {
        unsafe extern "system" fn Name<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, name: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Name() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(name, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Status<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, status: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Status() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(status, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPower<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, power: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPower(::core::mem::transmute_copy(&power)).into()
        }
        unsafe extern "system" fn Power<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, power: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Power() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(power, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Category<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guid: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Category() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(guid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ClassID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, clsid: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ClassID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(clsid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _Category<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._Category() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(guid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _ClassID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, clsid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._ClassID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(clsid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsEqualDevice<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, device: *mut ::core::ffi::c_void, isequal: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IsEqualDevice(::core::mem::transmute(&device)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(isequal, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Name: Name::<Identity, Impl, OFFSET>,
            Status: Status::<Identity, Impl, OFFSET>,
            SetPower: SetPower::<Identity, Impl, OFFSET>,
            Power: Power::<Identity, Impl, OFFSET>,
            Category: Category::<Identity, Impl, OFFSET>,
            ClassID: ClassID::<Identity, Impl, OFFSET>,
            _Category: _Category::<Identity, Impl, OFFSET>,
            _ClassID: _ClassID::<Identity, Impl, OFFSET>,
            IsEqualDevice: IsEqualDevice::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
pub trait IMSVidDevice2_Impl: Sized {
    fn DevicePath(&self) -> ::windows::core::Result<::windows::core::BSTR>;
}
impl ::windows::core::RuntimeName for IMSVidDevice2 {}
impl IMSVidDevice2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDevice2_Impl, const OFFSET: isize>() -> IMSVidDevice2_Vtbl {
        unsafe extern "system" fn DevicePath<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDevice2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, devpath: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DevicePath() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(devpath, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), DevicePath: DevicePath::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidDevice2 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidDeviceEvent_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn StateChange(&self, lpd: &::core::option::Option<IMSVidDevice>, oldstate: i32, newstate: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidDeviceEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidDeviceEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDeviceEvent_Impl, const OFFSET: isize>() -> IMSVidDeviceEvent_Vtbl {
        unsafe extern "system" fn StateChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidDeviceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpd: *mut ::core::ffi::c_void, oldstate: i32, newstate: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StateChange(::core::mem::transmute(&lpd), ::core::mem::transmute_copy(&oldstate), ::core::mem::transmute_copy(&newstate)).into()
        }
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(), StateChange: StateChange::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidDeviceEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidEVR_Impl: Sized + IMSVidVideoRenderer_Impl {
    fn Presenter(&self) -> ::windows::core::Result<super::MediaFoundation::IMFVideoPresenter>;
    fn SetPresenter(&self, pallocpresent: &::core::option::Option<super::MediaFoundation::IMFVideoPresenter>) -> ::windows::core::Result<()>;
    fn SetSuppressEffects(&self, bsuppress: i16) -> ::windows::core::Result<()>;
    fn SuppressEffects(&self) -> ::windows::core::Result<i16>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidEVR {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidEVR_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidEVR_Impl, const OFFSET: isize>() -> IMSVidEVR_Vtbl {
        unsafe extern "system" fn Presenter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidEVR_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppallocpresent: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Presenter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppallocpresent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPresenter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidEVR_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pallocpresent: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPresenter(::core::mem::transmute(&pallocpresent)).into()
        }
        unsafe extern "system" fn SetSuppressEffects<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidEVR_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bsuppress: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSuppressEffects(::core::mem::transmute_copy(&bsuppress)).into()
        }
        unsafe extern "system" fn SuppressEffects<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidEVR_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bsuppress: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SuppressEffects() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(bsuppress, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidVideoRenderer_Vtbl::new::<Identity, Impl, OFFSET>(),
            Presenter: Presenter::<Identity, Impl, OFFSET>,
            SetPresenter: SetPresenter::<Identity, Impl, OFFSET>,
            SetSuppressEffects: SetSuppressEffects::<Identity, Impl, OFFSET>,
            SuppressEffects: SuppressEffects::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidEVR as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidVideoRenderer as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidEVREvent_Impl: Sized + IMSVidOutputDeviceEvent_Impl {
    fn OnUserEvent(&self, leventcode: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidEVREvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidEVREvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidEVREvent_Impl, const OFFSET: isize>() -> IMSVidEVREvent_Vtbl {
        unsafe extern "system" fn OnUserEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidEVREvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, leventcode: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnUserEvent(::core::mem::transmute_copy(&leventcode)).into()
        }
        Self { base__: IMSVidOutputDeviceEvent_Vtbl::new::<Identity, Impl, OFFSET>(), OnUserEvent: OnUserEvent::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidEVREvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidEncoder_Impl: Sized + IMSVidFeature_Impl {
    fn VideoEncoderInterface(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
    fn AudioEncoderInterface(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidEncoder {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidEncoder_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidEncoder_Impl, const OFFSET: isize>() -> IMSVidEncoder_Vtbl {
        unsafe extern "system" fn VideoEncoderInterface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidEncoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppencint: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VideoEncoderInterface() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppencint, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AudioEncoderInterface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidEncoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppencint: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AudioEncoderInterface() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppencint, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidFeature_Vtbl::new::<Identity, Impl, OFFSET>(),
            VideoEncoderInterface: VideoEncoderInterface::<Identity, Impl, OFFSET>,
            AudioEncoderInterface: AudioEncoderInterface::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidEncoder as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidFeature as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidFeature_Impl: Sized + IMSVidDevice_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidFeature {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidFeature_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFeature_Impl, const OFFSET: isize>() -> IMSVidFeature_Vtbl {
        Self { base__: IMSVidDevice_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidFeature as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidFeatureEvent_Impl: Sized + IMSVidDeviceEvent_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidFeatureEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidFeatureEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFeatureEvent_Impl, const OFFSET: isize>() -> IMSVidFeatureEvent_Vtbl {
        Self { base__: IMSVidDeviceEvent_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidFeatureEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDeviceEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidFeatures_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> ::windows::core::Result<i32>;
    fn _NewEnum(&self) -> ::windows::core::Result<super::super::System::Ole::IEnumVARIANT>;
    fn get_Item(&self, v: &super::super::System::Com::VARIANT) -> ::windows::core::Result<IMSVidFeature>;
    fn Add(&self, pdb: &::core::option::Option<IMSVidFeature>) -> ::windows::core::Result<()>;
    fn Remove(&self, v: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidFeatures {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidFeatures_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFeatures_Impl, const OFFSET: isize>() -> IMSVidFeatures_Vtbl {
        unsafe extern "system" fn Count<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFeatures_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lcount: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Count() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lcount, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFeatures_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._NewEnum() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFeatures_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, v: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, pdb: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_Item(::core::mem::transmute(&v)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdb, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFeatures_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdb: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Add(::core::mem::transmute(&pdb)).into()
        }
        unsafe extern "system" fn Remove<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFeatures_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, v: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Remove(::core::mem::transmute(&v)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Count: Count::<Identity, Impl, OFFSET>,
            _NewEnum: _NewEnum::<Identity, Impl, OFFSET>,
            get_Item: get_Item::<Identity, Impl, OFFSET>,
            Add: Add::<Identity, Impl, OFFSET>,
            Remove: Remove::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidFeatures as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidFilePlayback_Impl: Sized + IMSVidPlayback_Impl {
    fn FileName(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn SetFileName(&self, filename: &::windows::core::BSTR) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidFilePlayback {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidFilePlayback_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFilePlayback_Impl, const OFFSET: isize>() -> IMSVidFilePlayback_Vtbl {
        unsafe extern "system" fn FileName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFilePlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, filename: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FileName() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(filename, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFileName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFilePlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, filename: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFileName(::core::mem::transmute(&filename)).into()
        }
        Self {
            base__: IMSVidPlayback_Vtbl::new::<Identity, Impl, OFFSET>(),
            FileName: FileName::<Identity, Impl, OFFSET>,
            SetFileName: SetFileName::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidFilePlayback as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidInputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidPlayback as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidFilePlayback2_Impl: Sized + IMSVidFilePlayback_Impl {
    fn Set_SourceFilter(&self, filename: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn Set__SourceFilter(&self, filename: &::windows::core::GUID) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidFilePlayback2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidFilePlayback2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFilePlayback2_Impl, const OFFSET: isize>() -> IMSVidFilePlayback2_Vtbl {
        unsafe extern "system" fn Set_SourceFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFilePlayback2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, filename: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set_SourceFilter(::core::mem::transmute(&filename)).into()
        }
        unsafe extern "system" fn Set__SourceFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFilePlayback2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, filename: ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set__SourceFilter(::core::mem::transmute(&filename)).into()
        }
        Self {
            base__: IMSVidFilePlayback_Vtbl::new::<Identity, Impl, OFFSET>(),
            Set_SourceFilter: Set_SourceFilter::<Identity, Impl, OFFSET>,
            Set__SourceFilter: Set__SourceFilter::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidFilePlayback2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidInputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidPlayback as ::windows::core::Interface>::IID || iid == &<IMSVidFilePlayback as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidFilePlaybackEvent_Impl: Sized + IMSVidPlaybackEvent_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidFilePlaybackEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidFilePlaybackEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidFilePlaybackEvent_Impl, const OFFSET: isize>() -> IMSVidFilePlaybackEvent_Vtbl {
        Self { base__: IMSVidPlaybackEvent_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidFilePlaybackEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidPlaybackEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidGenericSink_Impl: Sized + IMSVidOutputDevice_Impl {
    fn SetSinkFilter(&self, bstrname: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn SinkStreams(&self) -> ::windows::core::Result<MSVidSinkStreams>;
    fn SetSinkStreams(&self, streams: MSVidSinkStreams) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidGenericSink {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidGenericSink_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGenericSink_Impl, const OFFSET: isize>() -> IMSVidGenericSink_Vtbl {
        unsafe extern "system" fn SetSinkFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGenericSink_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bstrname: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSinkFilter(::core::mem::transmute(&bstrname)).into()
        }
        unsafe extern "system" fn SinkStreams<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGenericSink_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstreams: *mut MSVidSinkStreams) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SinkStreams() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstreams, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSinkStreams<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGenericSink_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, streams: MSVidSinkStreams) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSinkStreams(::core::mem::transmute_copy(&streams)).into()
        }
        Self {
            base__: IMSVidOutputDevice_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetSinkFilter: SetSinkFilter::<Identity, Impl, OFFSET>,
            SinkStreams: SinkStreams::<Identity, Impl, OFFSET>,
            SetSinkStreams: SetSinkStreams::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidGenericSink as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDevice as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidGenericSink2_Impl: Sized + IMSVidGenericSink_Impl {
    fn AddFilter(&self, bstrname: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn ResetFilterList(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidGenericSink2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidGenericSink2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGenericSink2_Impl, const OFFSET: isize>() -> IMSVidGenericSink2_Vtbl {
        unsafe extern "system" fn AddFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGenericSink2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bstrname: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AddFilter(::core::mem::transmute(&bstrname)).into()
        }
        unsafe extern "system" fn ResetFilterList<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGenericSink2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ResetFilterList().into()
        }
        Self {
            base__: IMSVidGenericSink_Vtbl::new::<Identity, Impl, OFFSET>(),
            AddFilter: AddFilter::<Identity, Impl, OFFSET>,
            ResetFilterList: ResetFilterList::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidGenericSink2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidGenericSink as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidGraphSegment_Impl: Sized + super::super::System::Com::IPersist_Impl {
    fn Init(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
    fn SetInit(&self, pinit: &::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
    fn EnumFilters(&self) -> ::windows::core::Result<IEnumFilters>;
    fn Container(&self) -> ::windows::core::Result<IMSVidGraphSegmentContainer>;
    fn SetContainer(&self, pctl: &::core::option::Option<IMSVidGraphSegmentContainer>) -> ::windows::core::Result<()>;
    fn Type(&self) -> ::windows::core::Result<MSVidSegmentType>;
    fn Category(&self) -> ::windows::core::Result<::windows::core::GUID>;
    fn Build(&self) -> ::windows::core::Result<()>;
    fn PostBuild(&self) -> ::windows::core::Result<()>;
    fn PreRun(&self) -> ::windows::core::Result<()>;
    fn PostRun(&self) -> ::windows::core::Result<()>;
    fn PreStop(&self) -> ::windows::core::Result<()>;
    fn PostStop(&self) -> ::windows::core::Result<()>;
    fn OnEventNotify(&self, leventcode: i32, leventparm1: isize, leventparm2: isize) -> ::windows::core::Result<()>;
    fn Decompose(&self) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IMSVidGraphSegment {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidGraphSegment_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>() -> IMSVidGraphSegment_Vtbl {
        unsafe extern "system" fn Init<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pinit: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Init() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pinit, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetInit<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pinit: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetInit(::core::mem::transmute(&pinit)).into()
        }
        unsafe extern "system" fn EnumFilters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pnewenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumFilters() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pnewenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Container<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppctl: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Container() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppctl, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetContainer<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pctl: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetContainer(::core::mem::transmute(&pctl)).into()
        }
        unsafe extern "system" fn Type<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptype: *mut MSVidSegmentType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Type() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ptype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Category<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Category() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pguid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Build<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Build().into()
        }
        unsafe extern "system" fn PostBuild<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PostBuild().into()
        }
        unsafe extern "system" fn PreRun<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PreRun().into()
        }
        unsafe extern "system" fn PostRun<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PostRun().into()
        }
        unsafe extern "system" fn PreStop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PreStop().into()
        }
        unsafe extern "system" fn PostStop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PostStop().into()
        }
        unsafe extern "system" fn OnEventNotify<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, leventcode: i32, leventparm1: isize, leventparm2: isize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnEventNotify(::core::mem::transmute_copy(&leventcode), ::core::mem::transmute_copy(&leventparm1), ::core::mem::transmute_copy(&leventparm2)).into()
        }
        unsafe extern "system" fn Decompose<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Decompose().into()
        }
        Self {
            base__: super::super::System::Com::IPersist_Vtbl::new::<Identity, Impl, OFFSET>(),
            Init: Init::<Identity, Impl, OFFSET>,
            SetInit: SetInit::<Identity, Impl, OFFSET>,
            EnumFilters: EnumFilters::<Identity, Impl, OFFSET>,
            Container: Container::<Identity, Impl, OFFSET>,
            SetContainer: SetContainer::<Identity, Impl, OFFSET>,
            Type: Type::<Identity, Impl, OFFSET>,
            Category: Category::<Identity, Impl, OFFSET>,
            Build: Build::<Identity, Impl, OFFSET>,
            PostBuild: PostBuild::<Identity, Impl, OFFSET>,
            PreRun: PreRun::<Identity, Impl, OFFSET>,
            PostRun: PostRun::<Identity, Impl, OFFSET>,
            PreStop: PreStop::<Identity, Impl, OFFSET>,
            PostStop: PostStop::<Identity, Impl, OFFSET>,
            OnEventNotify: OnEventNotify::<Identity, Impl, OFFSET>,
            Decompose: Decompose::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidGraphSegment as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IPersist as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidGraphSegmentContainer_Impl: Sized {
    fn Graph(&self) -> ::windows::core::Result<IGraphBuilder>;
    fn Input(&self) -> ::windows::core::Result<IMSVidGraphSegment>;
    fn Outputs(&self) -> ::windows::core::Result<IEnumMSVidGraphSegment>;
    fn VideoRenderer(&self) -> ::windows::core::Result<IMSVidGraphSegment>;
    fn AudioRenderer(&self) -> ::windows::core::Result<IMSVidGraphSegment>;
    fn Features(&self) -> ::windows::core::Result<IEnumMSVidGraphSegment>;
    fn Composites(&self) -> ::windows::core::Result<IEnumMSVidGraphSegment>;
    fn ParentContainer(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
    fn Decompose(&self, psegment: &::core::option::Option<IMSVidGraphSegment>) -> ::windows::core::Result<()>;
    fn IsWindowless(&self) -> ::windows::core::Result<()>;
    fn GetFocus(&self) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IMSVidGraphSegmentContainer {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidGraphSegmentContainer_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentContainer_Impl, const OFFSET: isize>() -> IMSVidGraphSegmentContainer_Vtbl {
        unsafe extern "system" fn Graph<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppgraph: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Graph() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppgraph, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Input<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppinput: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Input() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppinput, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Outputs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppoutputs: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Outputs() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppoutputs, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VideoRenderer<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppvr: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VideoRenderer() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppvr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AudioRenderer<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppar: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AudioRenderer() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppar, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Features<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppfeatures: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Features() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppfeatures, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Composites<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppcomposites: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Composites() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcomposites, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ParentContainer<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppcontainer: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ParentContainer() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcontainer, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Decompose<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psegment: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Decompose(::core::mem::transmute(&psegment)).into()
        }
        unsafe extern "system" fn IsWindowless<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsWindowless().into()
        }
        unsafe extern "system" fn GetFocus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetFocus().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Graph: Graph::<Identity, Impl, OFFSET>,
            Input: Input::<Identity, Impl, OFFSET>,
            Outputs: Outputs::<Identity, Impl, OFFSET>,
            VideoRenderer: VideoRenderer::<Identity, Impl, OFFSET>,
            AudioRenderer: AudioRenderer::<Identity, Impl, OFFSET>,
            Features: Features::<Identity, Impl, OFFSET>,
            Composites: Composites::<Identity, Impl, OFFSET>,
            ParentContainer: ParentContainer::<Identity, Impl, OFFSET>,
            Decompose: Decompose::<Identity, Impl, OFFSET>,
            IsWindowless: IsWindowless::<Identity, Impl, OFFSET>,
            GetFocus: GetFocus::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidGraphSegmentContainer as ::windows::core::Interface>::IID
    }
}
pub trait IMSVidGraphSegmentUserInput_Impl: Sized {
    fn Click(&self) -> ::windows::core::Result<()>;
    fn DblClick(&self) -> ::windows::core::Result<()>;
    fn KeyDown(&self, keycode: *const i16, shiftstate: i16) -> ::windows::core::Result<()>;
    fn KeyPress(&self, keyascii: *const i16) -> ::windows::core::Result<()>;
    fn KeyUp(&self, keycode: *const i16, shiftstate: i16) -> ::windows::core::Result<()>;
    fn MouseDown(&self, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> ::windows::core::Result<()>;
    fn MouseMove(&self, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> ::windows::core::Result<()>;
    fn MouseUp(&self, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IMSVidGraphSegmentUserInput {}
impl IMSVidGraphSegmentUserInput_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentUserInput_Impl, const OFFSET: isize>() -> IMSVidGraphSegmentUserInput_Vtbl {
        unsafe extern "system" fn Click<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentUserInput_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Click().into()
        }
        unsafe extern "system" fn DblClick<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentUserInput_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DblClick().into()
        }
        unsafe extern "system" fn KeyDown<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentUserInput_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, keycode: *const i16, shiftstate: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.KeyDown(::core::mem::transmute_copy(&keycode), ::core::mem::transmute_copy(&shiftstate)).into()
        }
        unsafe extern "system" fn KeyPress<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentUserInput_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, keyascii: *const i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.KeyPress(::core::mem::transmute_copy(&keyascii)).into()
        }
        unsafe extern "system" fn KeyUp<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentUserInput_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, keycode: *const i16, shiftstate: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.KeyUp(::core::mem::transmute_copy(&keycode), ::core::mem::transmute_copy(&shiftstate)).into()
        }
        unsafe extern "system" fn MouseDown<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentUserInput_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MouseDown(::core::mem::transmute_copy(&buttonstate), ::core::mem::transmute_copy(&shiftstate), ::core::mem::transmute_copy(&x), ::core::mem::transmute_copy(&y)).into()
        }
        unsafe extern "system" fn MouseMove<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentUserInput_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MouseMove(::core::mem::transmute_copy(&buttonstate), ::core::mem::transmute_copy(&shiftstate), ::core::mem::transmute_copy(&x), ::core::mem::transmute_copy(&y)).into()
        }
        unsafe extern "system" fn MouseUp<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidGraphSegmentUserInput_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MouseUp(::core::mem::transmute_copy(&buttonstate), ::core::mem::transmute_copy(&shiftstate), ::core::mem::transmute_copy(&x), ::core::mem::transmute_copy(&y)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Click: Click::<Identity, Impl, OFFSET>,
            DblClick: DblClick::<Identity, Impl, OFFSET>,
            KeyDown: KeyDown::<Identity, Impl, OFFSET>,
            KeyPress: KeyPress::<Identity, Impl, OFFSET>,
            KeyUp: KeyUp::<Identity, Impl, OFFSET>,
            MouseDown: MouseDown::<Identity, Impl, OFFSET>,
            MouseMove: MouseMove::<Identity, Impl, OFFSET>,
            MouseUp: MouseUp::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidGraphSegmentUserInput as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidInputDevice_Impl: Sized + IMSVidDevice_Impl {
    fn IsViewable(&self, v: *const super::super::System::Com::VARIANT) -> ::windows::core::Result<i16>;
    fn View(&self, v: *const super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidInputDevice {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidInputDevice_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidInputDevice_Impl, const OFFSET: isize>() -> IMSVidInputDevice_Vtbl {
        unsafe extern "system" fn IsViewable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidInputDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, v: *const ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, pfviewable: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IsViewable(::core::mem::transmute_copy(&v)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfviewable, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn View<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidInputDevice_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, v: *const ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.View(::core::mem::transmute_copy(&v)).into()
        }
        Self {
            base__: IMSVidDevice_Vtbl::new::<Identity, Impl, OFFSET>(),
            IsViewable: IsViewable::<Identity, Impl, OFFSET>,
            View: View::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidInputDevice as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidInputDeviceEvent_Impl: Sized + super::super::System::Com::IDispatch_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidInputDeviceEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidInputDeviceEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidInputDeviceEvent_Impl, const OFFSET: isize>() -> IMSVidInputDeviceEvent_Vtbl {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidInputDeviceEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidInputDevices_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> ::windows::core::Result<i32>;
    fn _NewEnum(&self) -> ::windows::core::Result<super::super::System::Ole::IEnumVARIANT>;
    fn get_Item(&self, v: &super::super::System::Com::VARIANT) -> ::windows::core::Result<IMSVidInputDevice>;
    fn Add(&self, pdb: &::core::option::Option<IMSVidInputDevice>) -> ::windows::core::Result<()>;
    fn Remove(&self, v: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidInputDevices {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidInputDevices_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidInputDevices_Impl, const OFFSET: isize>() -> IMSVidInputDevices_Vtbl {
        unsafe extern "system" fn Count<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidInputDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lcount: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Count() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lcount, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidInputDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._NewEnum() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidInputDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, v: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, pdb: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_Item(::core::mem::transmute(&v)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdb, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidInputDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdb: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Add(::core::mem::transmute(&pdb)).into()
        }
        unsafe extern "system" fn Remove<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidInputDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, v: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Remove(::core::mem::transmute(&v)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Count: Count::<Identity, Impl, OFFSET>,
            _NewEnum: _NewEnum::<Identity, Impl, OFFSET>,
            get_Item: get_Item::<Identity, Impl, OFFSET>,
            Add: Add::<Identity, Impl, OFFSET>,
            Remove: Remove::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidInputDevices as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidOutputDevice_Impl: Sized + IMSVidDevice_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidOutputDevice {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidOutputDevice_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidOutputDevice_Impl, const OFFSET: isize>() -> IMSVidOutputDevice_Vtbl {
        Self { base__: IMSVidDevice_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidOutputDevice as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidOutputDeviceEvent_Impl: Sized + IMSVidDeviceEvent_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidOutputDeviceEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidOutputDeviceEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidOutputDeviceEvent_Impl, const OFFSET: isize>() -> IMSVidOutputDeviceEvent_Vtbl {
        Self { base__: IMSVidDeviceEvent_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidOutputDeviceEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDeviceEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidOutputDevices_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> ::windows::core::Result<i32>;
    fn _NewEnum(&self) -> ::windows::core::Result<super::super::System::Ole::IEnumVARIANT>;
    fn get_Item(&self, v: &super::super::System::Com::VARIANT) -> ::windows::core::Result<IMSVidOutputDevice>;
    fn Add(&self, pdb: &::core::option::Option<IMSVidOutputDevice>) -> ::windows::core::Result<()>;
    fn Remove(&self, v: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidOutputDevices {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidOutputDevices_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidOutputDevices_Impl, const OFFSET: isize>() -> IMSVidOutputDevices_Vtbl {
        unsafe extern "system" fn Count<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidOutputDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lcount: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Count() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lcount, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidOutputDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._NewEnum() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidOutputDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, v: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, pdb: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_Item(::core::mem::transmute(&v)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdb, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidOutputDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdb: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Add(::core::mem::transmute(&pdb)).into()
        }
        unsafe extern "system" fn Remove<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidOutputDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, v: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Remove(::core::mem::transmute(&v)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Count: Count::<Identity, Impl, OFFSET>,
            _NewEnum: _NewEnum::<Identity, Impl, OFFSET>,
            get_Item: get_Item::<Identity, Impl, OFFSET>,
            Add: Add::<Identity, Impl, OFFSET>,
            Remove: Remove::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidOutputDevices as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidPlayback_Impl: Sized + IMSVidInputDevice_Impl {
    fn EnableResetOnStop(&self) -> ::windows::core::Result<i16>;
    fn SetEnableResetOnStop(&self, newval: i16) -> ::windows::core::Result<()>;
    fn Run(&self) -> ::windows::core::Result<()>;
    fn Pause(&self) -> ::windows::core::Result<()>;
    fn Stop(&self) -> ::windows::core::Result<()>;
    fn get_CanStep(&self, fbackwards: i16) -> ::windows::core::Result<i16>;
    fn Step(&self, lstep: i32) -> ::windows::core::Result<()>;
    fn SetRate(&self, plrate: f64) -> ::windows::core::Result<()>;
    fn Rate(&self) -> ::windows::core::Result<f64>;
    fn SetCurrentPosition(&self, lposition: i32) -> ::windows::core::Result<()>;
    fn CurrentPosition(&self) -> ::windows::core::Result<i32>;
    fn SetPositionMode(&self, lpositionmode: PositionModeList) -> ::windows::core::Result<()>;
    fn PositionMode(&self) -> ::windows::core::Result<PositionModeList>;
    fn Length(&self) -> ::windows::core::Result<i32>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidPlayback {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidPlayback_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>() -> IMSVidPlayback_Vtbl {
        unsafe extern "system" fn EnableResetOnStop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnableResetOnStop() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetEnableResetOnStop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newval: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetEnableResetOnStop(::core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn Run<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Run().into()
        }
        unsafe extern "system" fn Pause<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Pause().into()
        }
        unsafe extern "system" fn Stop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Stop().into()
        }
        unsafe extern "system" fn get_CanStep<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fbackwards: i16, pfcan: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_CanStep(::core::mem::transmute_copy(&fbackwards)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfcan, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Step<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lstep: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Step(::core::mem::transmute_copy(&lstep)).into()
        }
        unsafe extern "system" fn SetRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plrate: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRate(::core::mem::transmute_copy(&plrate)).into()
        }
        unsafe extern "system" fn Rate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plrate: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Rate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plrate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCurrentPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lposition: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCurrentPosition(::core::mem::transmute_copy(&lposition)).into()
        }
        unsafe extern "system" fn CurrentPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lposition: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CurrentPosition() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lposition, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPositionMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpositionmode: PositionModeList) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPositionMode(::core::mem::transmute_copy(&lpositionmode)).into()
        }
        unsafe extern "system" fn PositionMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpositionmode: *mut PositionModeList) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PositionMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpositionmode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Length<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlayback_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, llength: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Length() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(llength, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidInputDevice_Vtbl::new::<Identity, Impl, OFFSET>(),
            EnableResetOnStop: EnableResetOnStop::<Identity, Impl, OFFSET>,
            SetEnableResetOnStop: SetEnableResetOnStop::<Identity, Impl, OFFSET>,
            Run: Run::<Identity, Impl, OFFSET>,
            Pause: Pause::<Identity, Impl, OFFSET>,
            Stop: Stop::<Identity, Impl, OFFSET>,
            get_CanStep: get_CanStep::<Identity, Impl, OFFSET>,
            Step: Step::<Identity, Impl, OFFSET>,
            SetRate: SetRate::<Identity, Impl, OFFSET>,
            Rate: Rate::<Identity, Impl, OFFSET>,
            SetCurrentPosition: SetCurrentPosition::<Identity, Impl, OFFSET>,
            CurrentPosition: CurrentPosition::<Identity, Impl, OFFSET>,
            SetPositionMode: SetPositionMode::<Identity, Impl, OFFSET>,
            PositionMode: PositionMode::<Identity, Impl, OFFSET>,
            Length: Length::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidPlayback as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidInputDevice as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidPlaybackEvent_Impl: Sized + IMSVidInputDeviceEvent_Impl {
    fn EndOfMedia(&self, lpd: &::core::option::Option<IMSVidPlayback>) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidPlaybackEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidPlaybackEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlaybackEvent_Impl, const OFFSET: isize>() -> IMSVidPlaybackEvent_Vtbl {
        unsafe extern "system" fn EndOfMedia<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidPlaybackEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpd: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EndOfMedia(::core::mem::transmute(&lpd)).into()
        }
        Self { base__: IMSVidInputDeviceEvent_Vtbl::new::<Identity, Impl, OFFSET>(), EndOfMedia: EndOfMedia::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidPlaybackEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidRect_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Top(&self) -> ::windows::core::Result<i32>;
    fn SetTop(&self, topval: i32) -> ::windows::core::Result<()>;
    fn Left(&self) -> ::windows::core::Result<i32>;
    fn SetLeft(&self, leftval: i32) -> ::windows::core::Result<()>;
    fn Width(&self) -> ::windows::core::Result<i32>;
    fn SetWidth(&self, widthval: i32) -> ::windows::core::Result<()>;
    fn Height(&self) -> ::windows::core::Result<i32>;
    fn SetHeight(&self, heightval: i32) -> ::windows::core::Result<()>;
    fn HWnd(&self) -> ::windows::core::Result<super::super::Foundation::HWND>;
    fn SetHWnd(&self, hwndval: super::super::Foundation::HWND) -> ::windows::core::Result<()>;
    fn SetRect(&self, rectval: &::core::option::Option<IMSVidRect>) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidRect {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidRect_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidRect_Impl, const OFFSET: isize>() -> IMSVidRect_Vtbl {
        unsafe extern "system" fn Top<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidRect_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, topval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Top() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(topval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidRect_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, topval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTop(::core::mem::transmute_copy(&topval)).into()
        }
        unsafe extern "system" fn Left<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidRect_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, leftval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Left() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(leftval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLeft<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidRect_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, leftval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLeft(::core::mem::transmute_copy(&leftval)).into()
        }
        unsafe extern "system" fn Width<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidRect_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, widthval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Width() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(widthval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWidth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidRect_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, widthval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetWidth(::core::mem::transmute_copy(&widthval)).into()
        }
        unsafe extern "system" fn Height<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidRect_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, heightval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Height() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(heightval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetHeight<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidRect_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, heightval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetHeight(::core::mem::transmute_copy(&heightval)).into()
        }
        unsafe extern "system" fn HWnd<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidRect_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hwndval: *mut super::super::Foundation::HWND) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.HWnd() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(hwndval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetHWnd<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidRect_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hwndval: super::super::Foundation::HWND) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetHWnd(::core::mem::transmute_copy(&hwndval)).into()
        }
        unsafe extern "system" fn SetRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidRect_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rectval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRect(::core::mem::transmute(&rectval)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Top: Top::<Identity, Impl, OFFSET>,
            SetTop: SetTop::<Identity, Impl, OFFSET>,
            Left: Left::<Identity, Impl, OFFSET>,
            SetLeft: SetLeft::<Identity, Impl, OFFSET>,
            Width: Width::<Identity, Impl, OFFSET>,
            SetWidth: SetWidth::<Identity, Impl, OFFSET>,
            Height: Height::<Identity, Impl, OFFSET>,
            SetHeight: SetHeight::<Identity, Impl, OFFSET>,
            HWnd: HWnd::<Identity, Impl, OFFSET>,
            SetHWnd: SetHWnd::<Identity, Impl, OFFSET>,
            SetRect: SetRect::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidRect as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidStreamBufferRecordingControl_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn StartTime(&self) -> ::windows::core::Result<i32>;
    fn SetStartTime(&self, rtstart: i32) -> ::windows::core::Result<()>;
    fn StopTime(&self) -> ::windows::core::Result<i32>;
    fn SetStopTime(&self, rtstop: i32) -> ::windows::core::Result<()>;
    fn RecordingStopped(&self) -> ::windows::core::Result<i16>;
    fn RecordingStarted(&self) -> ::windows::core::Result<i16>;
    fn RecordingType(&self) -> ::windows::core::Result<RecordingType>;
    fn RecordingAttribute(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidStreamBufferRecordingControl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidStreamBufferRecordingControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferRecordingControl_Impl, const OFFSET: isize>() -> IMSVidStreamBufferRecordingControl_Vtbl {
        unsafe extern "system" fn StartTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferRecordingControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rtstart: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.StartTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(rtstart, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStartTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferRecordingControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rtstart: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStartTime(::core::mem::transmute_copy(&rtstart)).into()
        }
        unsafe extern "system" fn StopTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferRecordingControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rtstop: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.StopTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(rtstop, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStopTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferRecordingControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rtstop: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStopTime(::core::mem::transmute_copy(&rtstop)).into()
        }
        unsafe extern "system" fn RecordingStopped<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferRecordingControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phresult: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.RecordingStopped() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(phresult, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RecordingStarted<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferRecordingControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phresult: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.RecordingStarted() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(phresult, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RecordingType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferRecordingControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwtype: *mut RecordingType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.RecordingType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(dwtype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RecordingAttribute<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferRecordingControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, precordingattribute: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.RecordingAttribute() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(precordingattribute, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            StartTime: StartTime::<Identity, Impl, OFFSET>,
            SetStartTime: SetStartTime::<Identity, Impl, OFFSET>,
            StopTime: StopTime::<Identity, Impl, OFFSET>,
            SetStopTime: SetStopTime::<Identity, Impl, OFFSET>,
            RecordingStopped: RecordingStopped::<Identity, Impl, OFFSET>,
            RecordingStarted: RecordingStarted::<Identity, Impl, OFFSET>,
            RecordingType: RecordingType::<Identity, Impl, OFFSET>,
            RecordingAttribute: RecordingAttribute::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidStreamBufferRecordingControl as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidStreamBufferSink_Impl: Sized + IMSVidOutputDevice_Impl {
    fn get_ContentRecorder(&self, pszfilename: &::windows::core::BSTR) -> ::windows::core::Result<IMSVidStreamBufferRecordingControl>;
    fn get_ReferenceRecorder(&self, pszfilename: &::windows::core::BSTR) -> ::windows::core::Result<IMSVidStreamBufferRecordingControl>;
    fn SinkName(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn SetSinkName(&self, name: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn NameSetLock(&self) -> ::windows::core::Result<()>;
    fn SBESink(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidStreamBufferSink {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidStreamBufferSink_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink_Impl, const OFFSET: isize>() -> IMSVidStreamBufferSink_Vtbl {
        unsafe extern "system" fn get_ContentRecorder<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszfilename: ::core::mem::ManuallyDrop<::windows::core::BSTR>, precordingiunknown: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_ContentRecorder(::core::mem::transmute(&pszfilename)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(precordingiunknown, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_ReferenceRecorder<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszfilename: ::core::mem::ManuallyDrop<::windows::core::BSTR>, precordingiunknown: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_ReferenceRecorder(::core::mem::transmute(&pszfilename)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(precordingiunknown, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SinkName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SinkName() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSinkName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, name: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSinkName(::core::mem::transmute(&name)).into()
        }
        unsafe extern "system" fn NameSetLock<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NameSetLock().into()
        }
        unsafe extern "system" fn SBESink<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sbeconfig: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SBESink() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(sbeconfig, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidOutputDevice_Vtbl::new::<Identity, Impl, OFFSET>(),
            get_ContentRecorder: get_ContentRecorder::<Identity, Impl, OFFSET>,
            get_ReferenceRecorder: get_ReferenceRecorder::<Identity, Impl, OFFSET>,
            SinkName: SinkName::<Identity, Impl, OFFSET>,
            SetSinkName: SetSinkName::<Identity, Impl, OFFSET>,
            NameSetLock: NameSetLock::<Identity, Impl, OFFSET>,
            SBESink: SBESink::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSink as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDevice as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidStreamBufferSink2_Impl: Sized + IMSVidStreamBufferSink_Impl {
    fn UnlockProfile(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidStreamBufferSink2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidStreamBufferSink2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink2_Impl, const OFFSET: isize>() -> IMSVidStreamBufferSink2_Vtbl {
        unsafe extern "system" fn UnlockProfile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnlockProfile().into()
        }
        Self { base__: IMSVidStreamBufferSink_Vtbl::new::<Identity, Impl, OFFSET>(), UnlockProfile: UnlockProfile::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSink2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidStreamBufferSink as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidStreamBufferSink3_Impl: Sized + IMSVidStreamBufferSink2_Impl {
    fn SetMinSeek(&self) -> ::windows::core::Result<i32>;
    fn AudioCounter(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
    fn VideoCounter(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
    fn CCCounter(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
    fn WSTCounter(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
    fn SetAudioAnalysisFilter(&self, szclsid: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn AudioAnalysisFilter(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn Set_AudioAnalysisFilter(&self, guid: &::windows::core::GUID) -> ::windows::core::Result<()>;
    fn _AudioAnalysisFilter(&self) -> ::windows::core::Result<::windows::core::GUID>;
    fn SetVideoAnalysisFilter(&self, szclsid: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn VideoAnalysisFilter(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn Set_VideoAnalysisFilter(&self, guid: &::windows::core::GUID) -> ::windows::core::Result<()>;
    fn _VideoAnalysisFilter(&self) -> ::windows::core::Result<::windows::core::GUID>;
    fn SetDataAnalysisFilter(&self, szclsid: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn DataAnalysisFilter(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn Set_DataAnalysisFilter(&self, guid: &::windows::core::GUID) -> ::windows::core::Result<()>;
    fn _DataAnalysisFilter(&self) -> ::windows::core::Result<::windows::core::GUID>;
    fn LicenseErrorCode(&self) -> ::windows::core::Result<::windows::core::HRESULT>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidStreamBufferSink3 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidStreamBufferSink3_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>() -> IMSVidStreamBufferSink3_Vtbl {
        unsafe extern "system" fn SetMinSeek<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwmin: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SetMinSeek() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwmin, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AudioCounter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AudioCounter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VideoCounter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VideoCounter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CCCounter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CCCounter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn WSTCounter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.WSTCounter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAudioAnalysisFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, szclsid: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAudioAnalysisFilter(::core::mem::transmute(&szclsid)).into()
        }
        unsafe extern "system" fn AudioAnalysisFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszclsid: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AudioAnalysisFilter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pszclsid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_AudioAnalysisFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guid: ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set_AudioAnalysisFilter(::core::mem::transmute(&guid)).into()
        }
        unsafe extern "system" fn _AudioAnalysisFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._AudioAnalysisFilter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pguid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetVideoAnalysisFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, szclsid: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVideoAnalysisFilter(::core::mem::transmute(&szclsid)).into()
        }
        unsafe extern "system" fn VideoAnalysisFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszclsid: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VideoAnalysisFilter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pszclsid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_VideoAnalysisFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guid: ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set_VideoAnalysisFilter(::core::mem::transmute(&guid)).into()
        }
        unsafe extern "system" fn _VideoAnalysisFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._VideoAnalysisFilter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pguid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDataAnalysisFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, szclsid: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDataAnalysisFilter(::core::mem::transmute(&szclsid)).into()
        }
        unsafe extern "system" fn DataAnalysisFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszclsid: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DataAnalysisFilter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pszclsid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_DataAnalysisFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guid: ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set_DataAnalysisFilter(::core::mem::transmute(&guid)).into()
        }
        unsafe extern "system" fn _DataAnalysisFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._DataAnalysisFilter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pguid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn LicenseErrorCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hres: *mut ::windows::core::HRESULT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.LicenseErrorCode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(hres, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidStreamBufferSink2_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetMinSeek: SetMinSeek::<Identity, Impl, OFFSET>,
            AudioCounter: AudioCounter::<Identity, Impl, OFFSET>,
            VideoCounter: VideoCounter::<Identity, Impl, OFFSET>,
            CCCounter: CCCounter::<Identity, Impl, OFFSET>,
            WSTCounter: WSTCounter::<Identity, Impl, OFFSET>,
            SetAudioAnalysisFilter: SetAudioAnalysisFilter::<Identity, Impl, OFFSET>,
            AudioAnalysisFilter: AudioAnalysisFilter::<Identity, Impl, OFFSET>,
            Set_AudioAnalysisFilter: Set_AudioAnalysisFilter::<Identity, Impl, OFFSET>,
            _AudioAnalysisFilter: _AudioAnalysisFilter::<Identity, Impl, OFFSET>,
            SetVideoAnalysisFilter: SetVideoAnalysisFilter::<Identity, Impl, OFFSET>,
            VideoAnalysisFilter: VideoAnalysisFilter::<Identity, Impl, OFFSET>,
            Set_VideoAnalysisFilter: Set_VideoAnalysisFilter::<Identity, Impl, OFFSET>,
            _VideoAnalysisFilter: _VideoAnalysisFilter::<Identity, Impl, OFFSET>,
            SetDataAnalysisFilter: SetDataAnalysisFilter::<Identity, Impl, OFFSET>,
            DataAnalysisFilter: DataAnalysisFilter::<Identity, Impl, OFFSET>,
            Set_DataAnalysisFilter: Set_DataAnalysisFilter::<Identity, Impl, OFFSET>,
            _DataAnalysisFilter: _DataAnalysisFilter::<Identity, Impl, OFFSET>,
            LicenseErrorCode: LicenseErrorCode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSink3 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidStreamBufferSink as ::windows::core::Interface>::IID || iid == &<IMSVidStreamBufferSink2 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidStreamBufferSinkEvent_Impl: Sized + IMSVidOutputDeviceEvent_Impl {
    fn CertificateFailure(&self) -> ::windows::core::Result<()>;
    fn CertificateSuccess(&self) -> ::windows::core::Result<()>;
    fn WriteFailure(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidStreamBufferSinkEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidStreamBufferSinkEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSinkEvent_Impl, const OFFSET: isize>() -> IMSVidStreamBufferSinkEvent_Vtbl {
        unsafe extern "system" fn CertificateFailure<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSinkEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CertificateFailure().into()
        }
        unsafe extern "system" fn CertificateSuccess<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSinkEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CertificateSuccess().into()
        }
        unsafe extern "system" fn WriteFailure<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSinkEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.WriteFailure().into()
        }
        Self {
            base__: IMSVidOutputDeviceEvent_Vtbl::new::<Identity, Impl, OFFSET>(),
            CertificateFailure: CertificateFailure::<Identity, Impl, OFFSET>,
            CertificateSuccess: CertificateSuccess::<Identity, Impl, OFFSET>,
            WriteFailure: WriteFailure::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSinkEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidStreamBufferSinkEvent2_Impl: Sized + IMSVidStreamBufferSinkEvent_Impl {
    fn EncryptionOn(&self) -> ::windows::core::Result<()>;
    fn EncryptionOff(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidStreamBufferSinkEvent2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidStreamBufferSinkEvent2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSinkEvent2_Impl, const OFFSET: isize>() -> IMSVidStreamBufferSinkEvent2_Vtbl {
        unsafe extern "system" fn EncryptionOn<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSinkEvent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EncryptionOn().into()
        }
        unsafe extern "system" fn EncryptionOff<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSinkEvent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EncryptionOff().into()
        }
        Self {
            base__: IMSVidStreamBufferSinkEvent_Vtbl::new::<Identity, Impl, OFFSET>(),
            EncryptionOn: EncryptionOn::<Identity, Impl, OFFSET>,
            EncryptionOff: EncryptionOff::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSinkEvent2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidStreamBufferSinkEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidStreamBufferSinkEvent3_Impl: Sized + IMSVidStreamBufferSinkEvent2_Impl {
    fn LicenseChange(&self, dwprot: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidStreamBufferSinkEvent3 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidStreamBufferSinkEvent3_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSinkEvent3_Impl, const OFFSET: isize>() -> IMSVidStreamBufferSinkEvent3_Vtbl {
        unsafe extern "system" fn LicenseChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSinkEvent3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwprot: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.LicenseChange(::core::mem::transmute_copy(&dwprot)).into()
        }
        Self { base__: IMSVidStreamBufferSinkEvent2_Vtbl::new::<Identity, Impl, OFFSET>(), LicenseChange: LicenseChange::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSinkEvent3 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidStreamBufferSinkEvent as ::windows::core::Interface>::IID || iid == &<IMSVidStreamBufferSinkEvent2 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidStreamBufferSinkEvent4_Impl: Sized + IMSVidStreamBufferSinkEvent3_Impl {
    fn WriteFailureClear(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidStreamBufferSinkEvent4 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidStreamBufferSinkEvent4_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSinkEvent4_Impl, const OFFSET: isize>() -> IMSVidStreamBufferSinkEvent4_Vtbl {
        unsafe extern "system" fn WriteFailureClear<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSinkEvent4_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.WriteFailureClear().into()
        }
        Self { base__: IMSVidStreamBufferSinkEvent3_Vtbl::new::<Identity, Impl, OFFSET>(), WriteFailureClear: WriteFailureClear::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSinkEvent4 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidStreamBufferSinkEvent as ::windows::core::Interface>::IID || iid == &<IMSVidStreamBufferSinkEvent2 as ::windows::core::Interface>::IID || iid == &<IMSVidStreamBufferSinkEvent3 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidStreamBufferSource_Impl: Sized + IMSVidFilePlayback_Impl {
    fn Start(&self) -> ::windows::core::Result<i32>;
    fn RecordingAttribute(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
    fn CurrentRatings(&self, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, pbfenattr: *mut i32) -> ::windows::core::Result<()>;
    fn MaxRatingsLevel(&self, ensystem: EnTvRat_System, enrating: EnTvRat_GenericLevel, lbfenattr: i32) -> ::windows::core::Result<()>;
    fn SetBlockUnrated(&self, bblock: i16) -> ::windows::core::Result<()>;
    fn SetUnratedDelay(&self, dwdelay: i32) -> ::windows::core::Result<()>;
    fn SBESource(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidStreamBufferSource {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidStreamBufferSource_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSource_Impl, const OFFSET: isize>() -> IMSVidStreamBufferSource_Vtbl {
        unsafe extern "system" fn Start<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSource_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lstart: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Start() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lstart, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RecordingAttribute<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSource_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, precordingattribute: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.RecordingAttribute() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(precordingattribute, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentRatings<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSource_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, pbfenattr: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CurrentRatings(::core::mem::transmute_copy(&pensystem), ::core::mem::transmute_copy(&penrating), ::core::mem::transmute_copy(&pbfenattr)).into()
        }
        unsafe extern "system" fn MaxRatingsLevel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSource_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ensystem: EnTvRat_System, enrating: EnTvRat_GenericLevel, lbfenattr: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MaxRatingsLevel(::core::mem::transmute_copy(&ensystem), ::core::mem::transmute_copy(&enrating), ::core::mem::transmute_copy(&lbfenattr)).into()
        }
        unsafe extern "system" fn SetBlockUnrated<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSource_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bblock: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBlockUnrated(::core::mem::transmute_copy(&bblock)).into()
        }
        unsafe extern "system" fn SetUnratedDelay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSource_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwdelay: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetUnratedDelay(::core::mem::transmute_copy(&dwdelay)).into()
        }
        unsafe extern "system" fn SBESource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSource_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sbefilter: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SBESource() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(sbefilter, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidFilePlayback_Vtbl::new::<Identity, Impl, OFFSET>(),
            Start: Start::<Identity, Impl, OFFSET>,
            RecordingAttribute: RecordingAttribute::<Identity, Impl, OFFSET>,
            CurrentRatings: CurrentRatings::<Identity, Impl, OFFSET>,
            MaxRatingsLevel: MaxRatingsLevel::<Identity, Impl, OFFSET>,
            SetBlockUnrated: SetBlockUnrated::<Identity, Impl, OFFSET>,
            SetUnratedDelay: SetUnratedDelay::<Identity, Impl, OFFSET>,
            SBESource: SBESource::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSource as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidInputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidPlayback as ::windows::core::Interface>::IID || iid == &<IMSVidFilePlayback as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidStreamBufferSource2_Impl: Sized + IMSVidStreamBufferSource_Impl {
    fn put_RateEx(&self, dwrate: f64, dwframespersecond: u32) -> ::windows::core::Result<()>;
    fn AudioCounter(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
    fn VideoCounter(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
    fn CCCounter(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
    fn WSTCounter(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidStreamBufferSource2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidStreamBufferSource2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSource2_Impl, const OFFSET: isize>() -> IMSVidStreamBufferSource2_Vtbl {
        unsafe extern "system" fn put_RateEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSource2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrate: f64, dwframespersecond: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_RateEx(::core::mem::transmute_copy(&dwrate), ::core::mem::transmute_copy(&dwframespersecond)).into()
        }
        unsafe extern "system" fn AudioCounter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSource2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AudioCounter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VideoCounter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSource2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VideoCounter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CCCounter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSource2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CCCounter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn WSTCounter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSource2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.WSTCounter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidStreamBufferSource_Vtbl::new::<Identity, Impl, OFFSET>(),
            put_RateEx: put_RateEx::<Identity, Impl, OFFSET>,
            AudioCounter: AudioCounter::<Identity, Impl, OFFSET>,
            VideoCounter: VideoCounter::<Identity, Impl, OFFSET>,
            CCCounter: CCCounter::<Identity, Impl, OFFSET>,
            WSTCounter: WSTCounter::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSource2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidInputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidPlayback as ::windows::core::Interface>::IID || iid == &<IMSVidFilePlayback as ::windows::core::Interface>::IID || iid == &<IMSVidStreamBufferSource as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidStreamBufferSourceEvent_Impl: Sized + IMSVidFilePlaybackEvent_Impl {
    fn CertificateFailure(&self) -> ::windows::core::Result<()>;
    fn CertificateSuccess(&self) -> ::windows::core::Result<()>;
    fn RatingsBlocked(&self) -> ::windows::core::Result<()>;
    fn RatingsUnblocked(&self) -> ::windows::core::Result<()>;
    fn RatingsChanged(&self) -> ::windows::core::Result<()>;
    fn TimeHole(&self, streamoffsetms: i32, sizems: i32) -> ::windows::core::Result<()>;
    fn StaleDataRead(&self) -> ::windows::core::Result<()>;
    fn ContentBecomingStale(&self) -> ::windows::core::Result<()>;
    fn StaleFileDeleted(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidStreamBufferSourceEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidStreamBufferSourceEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent_Impl, const OFFSET: isize>() -> IMSVidStreamBufferSourceEvent_Vtbl {
        unsafe extern "system" fn CertificateFailure<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CertificateFailure().into()
        }
        unsafe extern "system" fn CertificateSuccess<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CertificateSuccess().into()
        }
        unsafe extern "system" fn RatingsBlocked<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RatingsBlocked().into()
        }
        unsafe extern "system" fn RatingsUnblocked<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RatingsUnblocked().into()
        }
        unsafe extern "system" fn RatingsChanged<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RatingsChanged().into()
        }
        unsafe extern "system" fn TimeHole<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, streamoffsetms: i32, sizems: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TimeHole(::core::mem::transmute_copy(&streamoffsetms), ::core::mem::transmute_copy(&sizems)).into()
        }
        unsafe extern "system" fn StaleDataRead<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StaleDataRead().into()
        }
        unsafe extern "system" fn ContentBecomingStale<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ContentBecomingStale().into()
        }
        unsafe extern "system" fn StaleFileDeleted<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StaleFileDeleted().into()
        }
        Self {
            base__: IMSVidFilePlaybackEvent_Vtbl::new::<Identity, Impl, OFFSET>(),
            CertificateFailure: CertificateFailure::<Identity, Impl, OFFSET>,
            CertificateSuccess: CertificateSuccess::<Identity, Impl, OFFSET>,
            RatingsBlocked: RatingsBlocked::<Identity, Impl, OFFSET>,
            RatingsUnblocked: RatingsUnblocked::<Identity, Impl, OFFSET>,
            RatingsChanged: RatingsChanged::<Identity, Impl, OFFSET>,
            TimeHole: TimeHole::<Identity, Impl, OFFSET>,
            StaleDataRead: StaleDataRead::<Identity, Impl, OFFSET>,
            ContentBecomingStale: ContentBecomingStale::<Identity, Impl, OFFSET>,
            StaleFileDeleted: StaleFileDeleted::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSourceEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidPlaybackEvent as ::windows::core::Interface>::IID || iid == &<IMSVidFilePlaybackEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidStreamBufferSourceEvent2_Impl: Sized + IMSVidStreamBufferSourceEvent_Impl {
    fn RateChange(&self, qwnewrate: f64, qwoldrate: f64) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidStreamBufferSourceEvent2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidStreamBufferSourceEvent2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent2_Impl, const OFFSET: isize>() -> IMSVidStreamBufferSourceEvent2_Vtbl {
        unsafe extern "system" fn RateChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, qwnewrate: f64, qwoldrate: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RateChange(::core::mem::transmute_copy(&qwnewrate), ::core::mem::transmute_copy(&qwoldrate)).into()
        }
        Self { base__: IMSVidStreamBufferSourceEvent_Vtbl::new::<Identity, Impl, OFFSET>(), RateChange: RateChange::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSourceEvent2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidPlaybackEvent as ::windows::core::Interface>::IID || iid == &<IMSVidFilePlaybackEvent as ::windows::core::Interface>::IID || iid == &<IMSVidStreamBufferSourceEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidStreamBufferSourceEvent3_Impl: Sized + IMSVidStreamBufferSourceEvent2_Impl {
    fn BroadcastEvent(&self, guid: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn BroadcastEventEx(&self, guid: &::windows::core::BSTR, param1: u32, param2: u32, param3: u32, param4: u32) -> ::windows::core::Result<()>;
    fn COPPBlocked(&self) -> ::windows::core::Result<()>;
    fn COPPUnblocked(&self) -> ::windows::core::Result<()>;
    fn ContentPrimarilyAudio(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidStreamBufferSourceEvent3 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidStreamBufferSourceEvent3_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent3_Impl, const OFFSET: isize>() -> IMSVidStreamBufferSourceEvent3_Vtbl {
        unsafe extern "system" fn BroadcastEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guid: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.BroadcastEvent(::core::mem::transmute(&guid)).into()
        }
        unsafe extern "system" fn BroadcastEventEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guid: ::core::mem::ManuallyDrop<::windows::core::BSTR>, param1: u32, param2: u32, param3: u32, param4: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.BroadcastEventEx(::core::mem::transmute(&guid), ::core::mem::transmute_copy(&param1), ::core::mem::transmute_copy(&param2), ::core::mem::transmute_copy(&param3), ::core::mem::transmute_copy(&param4)).into()
        }
        unsafe extern "system" fn COPPBlocked<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.COPPBlocked().into()
        }
        unsafe extern "system" fn COPPUnblocked<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.COPPUnblocked().into()
        }
        unsafe extern "system" fn ContentPrimarilyAudio<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferSourceEvent3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ContentPrimarilyAudio().into()
        }
        Self {
            base__: IMSVidStreamBufferSourceEvent2_Vtbl::new::<Identity, Impl, OFFSET>(),
            BroadcastEvent: BroadcastEvent::<Identity, Impl, OFFSET>,
            BroadcastEventEx: BroadcastEventEx::<Identity, Impl, OFFSET>,
            COPPBlocked: COPPBlocked::<Identity, Impl, OFFSET>,
            COPPUnblocked: COPPUnblocked::<Identity, Impl, OFFSET>,
            ContentPrimarilyAudio: ContentPrimarilyAudio::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSourceEvent3 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidPlaybackEvent as ::windows::core::Interface>::IID || iid == &<IMSVidFilePlaybackEvent as ::windows::core::Interface>::IID || iid == &<IMSVidStreamBufferSourceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidStreamBufferSourceEvent2 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidStreamBufferV2SourceEvent_Impl: Sized + IMSVidFilePlaybackEvent_Impl {
    fn RatingsChanged(&self) -> ::windows::core::Result<()>;
    fn TimeHole(&self, streamoffsetms: i32, sizems: i32) -> ::windows::core::Result<()>;
    fn StaleDataRead(&self) -> ::windows::core::Result<()>;
    fn ContentBecomingStale(&self) -> ::windows::core::Result<()>;
    fn StaleFileDeleted(&self) -> ::windows::core::Result<()>;
    fn RateChange(&self, qwnewrate: f64, qwoldrate: f64) -> ::windows::core::Result<()>;
    fn BroadcastEvent(&self, guid: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn BroadcastEventEx(&self, guid: &::windows::core::BSTR, param1: u32, param2: u32, param3: u32, param4: u32) -> ::windows::core::Result<()>;
    fn ContentPrimarilyAudio(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidStreamBufferV2SourceEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidStreamBufferV2SourceEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferV2SourceEvent_Impl, const OFFSET: isize>() -> IMSVidStreamBufferV2SourceEvent_Vtbl {
        unsafe extern "system" fn RatingsChanged<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferV2SourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RatingsChanged().into()
        }
        unsafe extern "system" fn TimeHole<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferV2SourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, streamoffsetms: i32, sizems: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TimeHole(::core::mem::transmute_copy(&streamoffsetms), ::core::mem::transmute_copy(&sizems)).into()
        }
        unsafe extern "system" fn StaleDataRead<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferV2SourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StaleDataRead().into()
        }
        unsafe extern "system" fn ContentBecomingStale<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferV2SourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ContentBecomingStale().into()
        }
        unsafe extern "system" fn StaleFileDeleted<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferV2SourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StaleFileDeleted().into()
        }
        unsafe extern "system" fn RateChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferV2SourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, qwnewrate: f64, qwoldrate: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RateChange(::core::mem::transmute_copy(&qwnewrate), ::core::mem::transmute_copy(&qwoldrate)).into()
        }
        unsafe extern "system" fn BroadcastEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferV2SourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guid: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.BroadcastEvent(::core::mem::transmute(&guid)).into()
        }
        unsafe extern "system" fn BroadcastEventEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferV2SourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guid: ::core::mem::ManuallyDrop<::windows::core::BSTR>, param1: u32, param2: u32, param3: u32, param4: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.BroadcastEventEx(::core::mem::transmute(&guid), ::core::mem::transmute_copy(&param1), ::core::mem::transmute_copy(&param2), ::core::mem::transmute_copy(&param3), ::core::mem::transmute_copy(&param4)).into()
        }
        unsafe extern "system" fn ContentPrimarilyAudio<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidStreamBufferV2SourceEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ContentPrimarilyAudio().into()
        }
        Self {
            base__: IMSVidFilePlaybackEvent_Vtbl::new::<Identity, Impl, OFFSET>(),
            RatingsChanged: RatingsChanged::<Identity, Impl, OFFSET>,
            TimeHole: TimeHole::<Identity, Impl, OFFSET>,
            StaleDataRead: StaleDataRead::<Identity, Impl, OFFSET>,
            ContentBecomingStale: ContentBecomingStale::<Identity, Impl, OFFSET>,
            StaleFileDeleted: StaleFileDeleted::<Identity, Impl, OFFSET>,
            RateChange: RateChange::<Identity, Impl, OFFSET>,
            BroadcastEvent: BroadcastEvent::<Identity, Impl, OFFSET>,
            BroadcastEventEx: BroadcastEventEx::<Identity, Impl, OFFSET>,
            ContentPrimarilyAudio: ContentPrimarilyAudio::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidStreamBufferV2SourceEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidPlaybackEvent as ::windows::core::Interface>::IID || iid == &<IMSVidFilePlaybackEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidTuner_Impl: Sized + IMSVidVideoInputDevice_Impl {
    fn Tune(&self) -> ::windows::core::Result<ITuneRequest>;
    fn SetTune(&self, ptr: &::core::option::Option<ITuneRequest>) -> ::windows::core::Result<()>;
    fn TuningSpace(&self) -> ::windows::core::Result<ITuningSpace>;
    fn SetTuningSpace(&self, plts: &::core::option::Option<ITuningSpace>) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidTuner {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidTuner_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidTuner_Impl, const OFFSET: isize>() -> IMSVidTuner_Vtbl {
        unsafe extern "system" fn Tune<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pptr: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Tune() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pptr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTune<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptr: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTune(::core::mem::transmute(&ptr)).into()
        }
        unsafe extern "system" fn TuningSpace<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plts: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TuningSpace() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plts, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTuningSpace<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plts: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTuningSpace(::core::mem::transmute(&plts)).into()
        }
        Self {
            base__: IMSVidVideoInputDevice_Vtbl::new::<Identity, Impl, OFFSET>(),
            Tune: Tune::<Identity, Impl, OFFSET>,
            SetTune: SetTune::<Identity, Impl, OFFSET>,
            TuningSpace: TuningSpace::<Identity, Impl, OFFSET>,
            SetTuningSpace: SetTuningSpace::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidTuner as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidInputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidVideoInputDevice as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidTunerEvent_Impl: Sized + IMSVidInputDeviceEvent_Impl {
    fn TuneChanged(&self, lpd: &::core::option::Option<IMSVidTuner>) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidTunerEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidTunerEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidTunerEvent_Impl, const OFFSET: isize>() -> IMSVidTunerEvent_Vtbl {
        unsafe extern "system" fn TuneChanged<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidTunerEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpd: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TuneChanged(::core::mem::transmute(&lpd)).into()
        }
        Self { base__: IMSVidInputDeviceEvent_Vtbl::new::<Identity, Impl, OFFSET>(), TuneChanged: TuneChanged::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidTunerEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidVMR9_Impl: Sized + IMSVidVideoRenderer_Impl {
    fn Allocator_ID(&self) -> ::windows::core::Result<i32>;
    fn SetAllocator(&self, allocpresent: &::core::option::Option<::windows::core::IUnknown>, id: i32) -> ::windows::core::Result<()>;
    fn SetSuppressEffects(&self, bsuppress: i16) -> ::windows::core::Result<()>;
    fn SuppressEffects(&self) -> ::windows::core::Result<i16>;
    fn Allocator(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidVMR9 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidVMR9_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVMR9_Impl, const OFFSET: isize>() -> IMSVidVMR9_Vtbl {
        unsafe extern "system" fn Allocator_ID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVMR9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, id: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Allocator_ID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(id, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAllocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVMR9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, allocpresent: *mut ::core::ffi::c_void, id: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAllocator(::core::mem::transmute(&allocpresent), ::core::mem::transmute_copy(&id)).into()
        }
        unsafe extern "system" fn SetSuppressEffects<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVMR9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bsuppress: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSuppressEffects(::core::mem::transmute_copy(&bsuppress)).into()
        }
        unsafe extern "system" fn SuppressEffects<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVMR9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bsuppress: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SuppressEffects() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(bsuppress, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Allocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVMR9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, allocpresent: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Allocator() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(allocpresent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidVideoRenderer_Vtbl::new::<Identity, Impl, OFFSET>(),
            Allocator_ID: Allocator_ID::<Identity, Impl, OFFSET>,
            SetAllocator: SetAllocator::<Identity, Impl, OFFSET>,
            SetSuppressEffects: SetSuppressEffects::<Identity, Impl, OFFSET>,
            SuppressEffects: SuppressEffects::<Identity, Impl, OFFSET>,
            Allocator: Allocator::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidVMR9 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidVideoRenderer as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
pub trait IMSVidVRGraphSegment_Impl: Sized + IMSVidGraphSegment_Impl {
    fn Set_VMRendererMode(&self, dwmode: i32) -> ::windows::core::Result<()>;
    fn SetOwner(&self, window: super::super::Foundation::HWND) -> ::windows::core::Result<()>;
    fn Owner(&self) -> ::windows::core::Result<super::super::Foundation::HWND>;
    fn UseOverlay(&self) -> ::windows::core::Result<i16>;
    fn SetUseOverlay(&self, useoverlayval: i16) -> ::windows::core::Result<()>;
    fn Visible(&self) -> ::windows::core::Result<i16>;
    fn SetVisible(&self, visible: i16) -> ::windows::core::Result<()>;
    fn ColorKey(&self) -> ::windows::core::Result<u32>;
    fn SetColorKey(&self, colorkey: u32) -> ::windows::core::Result<()>;
    fn Source(&self) -> ::windows::core::Result<super::super::Foundation::RECT>;
    fn SetSource(&self, r: &super::super::Foundation::RECT) -> ::windows::core::Result<()>;
    fn Destination(&self) -> ::windows::core::Result<super::super::Foundation::RECT>;
    fn SetDestination(&self, r: &super::super::Foundation::RECT) -> ::windows::core::Result<()>;
    fn get_NativeSize(&self, sizeval: *mut super::super::Foundation::SIZE, aspectratio: *mut super::super::Foundation::SIZE) -> ::windows::core::Result<()>;
    fn BorderColor(&self) -> ::windows::core::Result<u32>;
    fn SetBorderColor(&self, color: u32) -> ::windows::core::Result<()>;
    fn MaintainAspectRatio(&self) -> ::windows::core::Result<i16>;
    fn SetMaintainAspectRatio(&self, fmaintain: i16) -> ::windows::core::Result<()>;
    fn Refresh(&self) -> ::windows::core::Result<()>;
    fn DisplayChange(&self) -> ::windows::core::Result<()>;
    fn RePaint(&self, hdc: super::super::Graphics::Gdi::HDC) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
impl ::windows::core::RuntimeName for IMSVidVRGraphSegment {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
impl IMSVidVRGraphSegment_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>() -> IMSVidVRGraphSegment_Vtbl {
        unsafe extern "system" fn Set_VMRendererMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwmode: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set_VMRendererMode(::core::mem::transmute_copy(&dwmode)).into()
        }
        unsafe extern "system" fn SetOwner<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, window: super::super::Foundation::HWND) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOwner(::core::mem::transmute_copy(&window)).into()
        }
        unsafe extern "system" fn Owner<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, window: *mut super::super::Foundation::HWND) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Owner() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(window, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn UseOverlay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, useoverlayval: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.UseOverlay() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(useoverlayval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetUseOverlay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, useoverlayval: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetUseOverlay(::core::mem::transmute_copy(&useoverlayval)).into()
        }
        unsafe extern "system" fn Visible<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, visible: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Visible() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(visible, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetVisible<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, visible: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVisible(::core::mem::transmute_copy(&visible)).into()
        }
        unsafe extern "system" fn ColorKey<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, colorkey: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ColorKey() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(colorkey, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetColorKey<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, colorkey: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetColorKey(::core::mem::transmute_copy(&colorkey)).into()
        }
        unsafe extern "system" fn Source<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, r: *mut super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Source() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(r, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, r: super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSource(::core::mem::transmute(&r)).into()
        }
        unsafe extern "system" fn Destination<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, r: *mut super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Destination() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(r, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDestination<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, r: super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDestination(::core::mem::transmute(&r)).into()
        }
        unsafe extern "system" fn get_NativeSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sizeval: *mut super::super::Foundation::SIZE, aspectratio: *mut super::super::Foundation::SIZE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_NativeSize(::core::mem::transmute_copy(&sizeval), ::core::mem::transmute_copy(&aspectratio)).into()
        }
        unsafe extern "system" fn BorderColor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, color: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.BorderColor() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(color, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBorderColor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, color: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBorderColor(::core::mem::transmute_copy(&color)).into()
        }
        unsafe extern "system" fn MaintainAspectRatio<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fmaintain: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MaintainAspectRatio() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(fmaintain, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaintainAspectRatio<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fmaintain: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMaintainAspectRatio(::core::mem::transmute_copy(&fmaintain)).into()
        }
        unsafe extern "system" fn Refresh<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Refresh().into()
        }
        unsafe extern "system" fn DisplayChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DisplayChange().into()
        }
        unsafe extern "system" fn RePaint<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVRGraphSegment_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hdc: super::super::Graphics::Gdi::HDC) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RePaint(::core::mem::transmute_copy(&hdc)).into()
        }
        Self {
            base__: IMSVidGraphSegment_Vtbl::new::<Identity, Impl, OFFSET>(),
            Set_VMRendererMode: Set_VMRendererMode::<Identity, Impl, OFFSET>,
            SetOwner: SetOwner::<Identity, Impl, OFFSET>,
            Owner: Owner::<Identity, Impl, OFFSET>,
            UseOverlay: UseOverlay::<Identity, Impl, OFFSET>,
            SetUseOverlay: SetUseOverlay::<Identity, Impl, OFFSET>,
            Visible: Visible::<Identity, Impl, OFFSET>,
            SetVisible: SetVisible::<Identity, Impl, OFFSET>,
            ColorKey: ColorKey::<Identity, Impl, OFFSET>,
            SetColorKey: SetColorKey::<Identity, Impl, OFFSET>,
            Source: Source::<Identity, Impl, OFFSET>,
            SetSource: SetSource::<Identity, Impl, OFFSET>,
            Destination: Destination::<Identity, Impl, OFFSET>,
            SetDestination: SetDestination::<Identity, Impl, OFFSET>,
            get_NativeSize: get_NativeSize::<Identity, Impl, OFFSET>,
            BorderColor: BorderColor::<Identity, Impl, OFFSET>,
            SetBorderColor: SetBorderColor::<Identity, Impl, OFFSET>,
            MaintainAspectRatio: MaintainAspectRatio::<Identity, Impl, OFFSET>,
            SetMaintainAspectRatio: SetMaintainAspectRatio::<Identity, Impl, OFFSET>,
            Refresh: Refresh::<Identity, Impl, OFFSET>,
            DisplayChange: DisplayChange::<Identity, Impl, OFFSET>,
            RePaint: RePaint::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidVRGraphSegment as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IPersist as ::windows::core::Interface>::IID || iid == &<IMSVidGraphSegment as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidVideoInputDevice_Impl: Sized + IMSVidInputDevice_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidVideoInputDevice {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidVideoInputDevice_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoInputDevice_Impl, const OFFSET: isize>() -> IMSVidVideoInputDevice_Vtbl {
        Self { base__: IMSVidInputDevice_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidVideoInputDevice as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidInputDevice as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidVideoRenderer_Impl: Sized + IMSVidOutputDevice_Impl {
    fn CustomCompositorClass(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn SetCustomCompositorClass(&self, compositorclsid: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn _CustomCompositorClass(&self) -> ::windows::core::Result<::windows::core::GUID>;
    fn Set_CustomCompositorClass(&self, compositorclsid: *const ::windows::core::GUID) -> ::windows::core::Result<()>;
    fn _CustomCompositor(&self) -> ::windows::core::Result<IVMRImageCompositor>;
    fn Set_CustomCompositor(&self, compositor: &::core::option::Option<IVMRImageCompositor>) -> ::windows::core::Result<()>;
    fn MixerBitmap(&self) -> ::windows::core::Result<super::super::System::Ole::IPictureDisp>;
    fn _MixerBitmap(&self) -> ::windows::core::Result<IVMRMixerBitmap>;
    fn SetMixerBitmap(&self, mixerpicturedisp: &::core::option::Option<super::super::System::Ole::IPictureDisp>) -> ::windows::core::Result<()>;
    fn Set_MixerBitmap(&self, mixerpicture: *const VMRALPHABITMAP) -> ::windows::core::Result<()>;
    fn MixerBitmapPositionRect(&self) -> ::windows::core::Result<IMSVidRect>;
    fn SetMixerBitmapPositionRect(&self, rdest: &::core::option::Option<IMSVidRect>) -> ::windows::core::Result<()>;
    fn MixerBitmapOpacity(&self) -> ::windows::core::Result<i32>;
    fn SetMixerBitmapOpacity(&self, opacity: i32) -> ::windows::core::Result<()>;
    fn SetupMixerBitmap(&self, mixerpicturedisp: &::core::option::Option<super::super::System::Ole::IPictureDisp>, opacity: i32, rdest: &::core::option::Option<IMSVidRect>) -> ::windows::core::Result<()>;
    fn SourceSize(&self) -> ::windows::core::Result<SourceSizeList>;
    fn SetSourceSize(&self, newsize: SourceSizeList) -> ::windows::core::Result<()>;
    fn OverScan(&self) -> ::windows::core::Result<i32>;
    fn SetOverScan(&self, lpercent: i32) -> ::windows::core::Result<()>;
    fn AvailableSourceRect(&self) -> ::windows::core::Result<IMSVidRect>;
    fn MaxVidRect(&self) -> ::windows::core::Result<IMSVidRect>;
    fn MinVidRect(&self) -> ::windows::core::Result<IMSVidRect>;
    fn ClippedSourceRect(&self) -> ::windows::core::Result<IMSVidRect>;
    fn SetClippedSourceRect(&self, prect: &::core::option::Option<IMSVidRect>) -> ::windows::core::Result<()>;
    fn UsingOverlay(&self) -> ::windows::core::Result<i16>;
    fn SetUsingOverlay(&self, useoverlayval: i16) -> ::windows::core::Result<()>;
    fn Capture(&self) -> ::windows::core::Result<super::super::System::Ole::IPictureDisp>;
    fn FramesPerSecond(&self) -> ::windows::core::Result<i32>;
    fn DecimateInput(&self) -> ::windows::core::Result<i16>;
    fn SetDecimateInput(&self, pdeci: i16) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidVideoRenderer {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidVideoRenderer_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>() -> IMSVidVideoRenderer_Vtbl {
        unsafe extern "system" fn CustomCompositorClass<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, compositorclsid: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CustomCompositorClass() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(compositorclsid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCustomCompositorClass<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, compositorclsid: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCustomCompositorClass(::core::mem::transmute(&compositorclsid)).into()
        }
        unsafe extern "system" fn _CustomCompositorClass<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, compositorclsid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._CustomCompositorClass() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(compositorclsid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_CustomCompositorClass<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, compositorclsid: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set_CustomCompositorClass(::core::mem::transmute_copy(&compositorclsid)).into()
        }
        unsafe extern "system" fn _CustomCompositor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, compositor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._CustomCompositor() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(compositor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_CustomCompositor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, compositor: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set_CustomCompositor(::core::mem::transmute(&compositor)).into()
        }
        unsafe extern "system" fn MixerBitmap<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mixerpicturedisp: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MixerBitmap() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(mixerpicturedisp, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _MixerBitmap<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mixerpicture: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._MixerBitmap() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(mixerpicture, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMixerBitmap<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mixerpicturedisp: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMixerBitmap(::core::mem::transmute(&mixerpicturedisp)).into()
        }
        unsafe extern "system" fn Set_MixerBitmap<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mixerpicture: *const ::core::mem::ManuallyDrop<VMRALPHABITMAP>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set_MixerBitmap(::core::mem::transmute_copy(&mixerpicture)).into()
        }
        unsafe extern "system" fn MixerBitmapPositionRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rdest: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MixerBitmapPositionRect() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(rdest, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMixerBitmapPositionRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rdest: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMixerBitmapPositionRect(::core::mem::transmute(&rdest)).into()
        }
        unsafe extern "system" fn MixerBitmapOpacity<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, opacity: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MixerBitmapOpacity() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(opacity, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMixerBitmapOpacity<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, opacity: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMixerBitmapOpacity(::core::mem::transmute_copy(&opacity)).into()
        }
        unsafe extern "system" fn SetupMixerBitmap<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mixerpicturedisp: *mut ::core::ffi::c_void, opacity: i32, rdest: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetupMixerBitmap(::core::mem::transmute(&mixerpicturedisp), ::core::mem::transmute_copy(&opacity), ::core::mem::transmute(&rdest)).into()
        }
        unsafe extern "system" fn SourceSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, currentsize: *mut SourceSizeList) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SourceSize() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(currentsize, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourceSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newsize: SourceSizeList) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSourceSize(::core::mem::transmute_copy(&newsize)).into()
        }
        unsafe extern "system" fn OverScan<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plpercent: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.OverScan() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plpercent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOverScan<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpercent: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOverScan(::core::mem::transmute_copy(&lpercent)).into()
        }
        unsafe extern "system" fn AvailableSourceRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prect: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AvailableSourceRect() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prect, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn MaxVidRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppvidrect: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MaxVidRect() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppvidrect, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn MinVidRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppvidrect: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MinVidRect() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppvidrect, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ClippedSourceRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prect: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ClippedSourceRect() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prect, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetClippedSourceRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prect: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetClippedSourceRect(::core::mem::transmute(&prect)).into()
        }
        unsafe extern "system" fn UsingOverlay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, useoverlayval: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.UsingOverlay() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(useoverlayval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetUsingOverlay<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, useoverlayval: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetUsingOverlay(::core::mem::transmute_copy(&useoverlayval)).into()
        }
        unsafe extern "system" fn Capture<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, currentimage: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Capture() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(currentimage, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FramesPerSecond<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FramesPerSecond() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DecimateInput<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdeci: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DecimateInput() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdeci, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDecimateInput<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdeci: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDecimateInput(::core::mem::transmute_copy(&pdeci)).into()
        }
        Self {
            base__: IMSVidOutputDevice_Vtbl::new::<Identity, Impl, OFFSET>(),
            CustomCompositorClass: CustomCompositorClass::<Identity, Impl, OFFSET>,
            SetCustomCompositorClass: SetCustomCompositorClass::<Identity, Impl, OFFSET>,
            _CustomCompositorClass: _CustomCompositorClass::<Identity, Impl, OFFSET>,
            Set_CustomCompositorClass: Set_CustomCompositorClass::<Identity, Impl, OFFSET>,
            _CustomCompositor: _CustomCompositor::<Identity, Impl, OFFSET>,
            Set_CustomCompositor: Set_CustomCompositor::<Identity, Impl, OFFSET>,
            MixerBitmap: MixerBitmap::<Identity, Impl, OFFSET>,
            _MixerBitmap: _MixerBitmap::<Identity, Impl, OFFSET>,
            SetMixerBitmap: SetMixerBitmap::<Identity, Impl, OFFSET>,
            Set_MixerBitmap: Set_MixerBitmap::<Identity, Impl, OFFSET>,
            MixerBitmapPositionRect: MixerBitmapPositionRect::<Identity, Impl, OFFSET>,
            SetMixerBitmapPositionRect: SetMixerBitmapPositionRect::<Identity, Impl, OFFSET>,
            MixerBitmapOpacity: MixerBitmapOpacity::<Identity, Impl, OFFSET>,
            SetMixerBitmapOpacity: SetMixerBitmapOpacity::<Identity, Impl, OFFSET>,
            SetupMixerBitmap: SetupMixerBitmap::<Identity, Impl, OFFSET>,
            SourceSize: SourceSize::<Identity, Impl, OFFSET>,
            SetSourceSize: SetSourceSize::<Identity, Impl, OFFSET>,
            OverScan: OverScan::<Identity, Impl, OFFSET>,
            SetOverScan: SetOverScan::<Identity, Impl, OFFSET>,
            AvailableSourceRect: AvailableSourceRect::<Identity, Impl, OFFSET>,
            MaxVidRect: MaxVidRect::<Identity, Impl, OFFSET>,
            MinVidRect: MinVidRect::<Identity, Impl, OFFSET>,
            ClippedSourceRect: ClippedSourceRect::<Identity, Impl, OFFSET>,
            SetClippedSourceRect: SetClippedSourceRect::<Identity, Impl, OFFSET>,
            UsingOverlay: UsingOverlay::<Identity, Impl, OFFSET>,
            SetUsingOverlay: SetUsingOverlay::<Identity, Impl, OFFSET>,
            Capture: Capture::<Identity, Impl, OFFSET>,
            FramesPerSecond: FramesPerSecond::<Identity, Impl, OFFSET>,
            DecimateInput: DecimateInput::<Identity, Impl, OFFSET>,
            SetDecimateInput: SetDecimateInput::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidVideoRenderer as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDevice as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidVideoRenderer2_Impl: Sized + IMSVidVideoRenderer_Impl {
    fn Allocator(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
    fn _Allocator(&self) -> ::windows::core::Result<IVMRSurfaceAllocator>;
    fn Allocator_ID(&self) -> ::windows::core::Result<i32>;
    fn SetAllocator(&self, allocpresent: &::core::option::Option<::windows::core::IUnknown>, id: i32) -> ::windows::core::Result<()>;
    fn _SetAllocator2(&self, allocpresent: &::core::option::Option<IVMRSurfaceAllocator>, id: i32) -> ::windows::core::Result<()>;
    fn SetSuppressEffects(&self, bsuppress: i16) -> ::windows::core::Result<()>;
    fn SuppressEffects(&self) -> ::windows::core::Result<i16>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidVideoRenderer2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidVideoRenderer2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer2_Impl, const OFFSET: isize>() -> IMSVidVideoRenderer2_Vtbl {
        unsafe extern "system" fn Allocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, allocpresent: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Allocator() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(allocpresent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _Allocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, allocpresent: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._Allocator() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(allocpresent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Allocator_ID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, id: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Allocator_ID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(id, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAllocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, allocpresent: *mut ::core::ffi::c_void, id: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAllocator(::core::mem::transmute(&allocpresent), ::core::mem::transmute_copy(&id)).into()
        }
        unsafe extern "system" fn _SetAllocator2<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, allocpresent: *mut ::core::ffi::c_void, id: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this._SetAllocator2(::core::mem::transmute(&allocpresent), ::core::mem::transmute_copy(&id)).into()
        }
        unsafe extern "system" fn SetSuppressEffects<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bsuppress: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSuppressEffects(::core::mem::transmute_copy(&bsuppress)).into()
        }
        unsafe extern "system" fn SuppressEffects<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRenderer2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bsuppress: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SuppressEffects() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(bsuppress, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidVideoRenderer_Vtbl::new::<Identity, Impl, OFFSET>(),
            Allocator: Allocator::<Identity, Impl, OFFSET>,
            _Allocator: _Allocator::<Identity, Impl, OFFSET>,
            Allocator_ID: Allocator_ID::<Identity, Impl, OFFSET>,
            SetAllocator: SetAllocator::<Identity, Impl, OFFSET>,
            _SetAllocator2: _SetAllocator2::<Identity, Impl, OFFSET>,
            SetSuppressEffects: SetSuppressEffects::<Identity, Impl, OFFSET>,
            SuppressEffects: SuppressEffects::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidVideoRenderer2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidVideoRenderer as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidVideoRendererDevices_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> ::windows::core::Result<i32>;
    fn _NewEnum(&self) -> ::windows::core::Result<super::super::System::Ole::IEnumVARIANT>;
    fn get_Item(&self, v: &super::super::System::Com::VARIANT) -> ::windows::core::Result<IMSVidVideoRenderer>;
    fn Add(&self, pdb: &::core::option::Option<IMSVidVideoRenderer>) -> ::windows::core::Result<()>;
    fn Remove(&self, v: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidVideoRendererDevices {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidVideoRendererDevices_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRendererDevices_Impl, const OFFSET: isize>() -> IMSVidVideoRendererDevices_Vtbl {
        unsafe extern "system" fn Count<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRendererDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lcount: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Count() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lcount, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRendererDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pd: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._NewEnum() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRendererDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, v: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, pdb: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_Item(::core::mem::transmute(&v)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdb, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRendererDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdb: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Add(::core::mem::transmute(&pdb)).into()
        }
        unsafe extern "system" fn Remove<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRendererDevices_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, v: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Remove(::core::mem::transmute(&v)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Count: Count::<Identity, Impl, OFFSET>,
            _NewEnum: _NewEnum::<Identity, Impl, OFFSET>,
            get_Item: get_Item::<Identity, Impl, OFFSET>,
            Add: Add::<Identity, Impl, OFFSET>,
            Remove: Remove::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidVideoRendererDevices as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidVideoRendererEvent_Impl: Sized + IMSVidOutputDeviceEvent_Impl {
    fn OverlayUnavailable(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidVideoRendererEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidVideoRendererEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRendererEvent_Impl, const OFFSET: isize>() -> IMSVidVideoRendererEvent_Vtbl {
        unsafe extern "system" fn OverlayUnavailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRendererEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OverlayUnavailable().into()
        }
        Self { base__: IMSVidOutputDeviceEvent_Vtbl::new::<Identity, Impl, OFFSET>(), OverlayUnavailable: OverlayUnavailable::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidVideoRendererEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidVideoRendererEvent2_Impl: Sized + IMSVidOutputDeviceEvent_Impl {
    fn OverlayUnavailable(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidVideoRendererEvent2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidVideoRendererEvent2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRendererEvent2_Impl, const OFFSET: isize>() -> IMSVidVideoRendererEvent2_Vtbl {
        unsafe extern "system" fn OverlayUnavailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidVideoRendererEvent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OverlayUnavailable().into()
        }
        Self { base__: IMSVidOutputDeviceEvent_Vtbl::new::<Identity, Impl, OFFSET>(), OverlayUnavailable: OverlayUnavailable::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidVideoRendererEvent2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidWebDVD_Impl: Sized + IMSVidPlayback_Impl {
    fn OnDVDEvent(&self, levent: i32, lparam1: isize, lparam2: isize) -> ::windows::core::Result<()>;
    fn PlayTitle(&self, ltitle: i32) -> ::windows::core::Result<()>;
    fn PlayChapterInTitle(&self, ltitle: i32, lchapter: i32) -> ::windows::core::Result<()>;
    fn PlayChapter(&self, lchapter: i32) -> ::windows::core::Result<()>;
    fn PlayChaptersAutoStop(&self, ltitle: i32, lstrchapter: i32, lchaptercount: i32) -> ::windows::core::Result<()>;
    fn PlayAtTime(&self, strtime: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn PlayAtTimeInTitle(&self, ltitle: i32, strtime: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn PlayPeriodInTitleAutoStop(&self, ltitle: i32, strstarttime: &::windows::core::BSTR, strendtime: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn ReplayChapter(&self) -> ::windows::core::Result<()>;
    fn PlayPrevChapter(&self) -> ::windows::core::Result<()>;
    fn PlayNextChapter(&self) -> ::windows::core::Result<()>;
    fn StillOff(&self) -> ::windows::core::Result<()>;
    fn get_AudioLanguage(&self, lstream: i32, fformat: i16) -> ::windows::core::Result<::windows::core::BSTR>;
    fn ShowMenu(&self, menuid: DVDMenuIDConstants) -> ::windows::core::Result<()>;
    fn Resume(&self) -> ::windows::core::Result<()>;
    fn ReturnFromSubmenu(&self) -> ::windows::core::Result<()>;
    fn ButtonsAvailable(&self) -> ::windows::core::Result<i32>;
    fn CurrentButton(&self) -> ::windows::core::Result<i32>;
    fn SelectAndActivateButton(&self, lbutton: i32) -> ::windows::core::Result<()>;
    fn ActivateButton(&self) -> ::windows::core::Result<()>;
    fn SelectRightButton(&self) -> ::windows::core::Result<()>;
    fn SelectLeftButton(&self) -> ::windows::core::Result<()>;
    fn SelectLowerButton(&self) -> ::windows::core::Result<()>;
    fn SelectUpperButton(&self) -> ::windows::core::Result<()>;
    fn ActivateAtPosition(&self, xpos: i32, ypos: i32) -> ::windows::core::Result<()>;
    fn SelectAtPosition(&self, xpos: i32, ypos: i32) -> ::windows::core::Result<()>;
    fn get_ButtonAtPosition(&self, xpos: i32, ypos: i32) -> ::windows::core::Result<i32>;
    fn get_NumberOfChapters(&self, ltitle: i32) -> ::windows::core::Result<i32>;
    fn TotalTitleTime(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn TitlesAvailable(&self) -> ::windows::core::Result<i32>;
    fn VolumesAvailable(&self) -> ::windows::core::Result<i32>;
    fn CurrentVolume(&self) -> ::windows::core::Result<i32>;
    fn CurrentDiscSide(&self) -> ::windows::core::Result<i32>;
    fn CurrentDomain(&self) -> ::windows::core::Result<i32>;
    fn CurrentChapter(&self) -> ::windows::core::Result<i32>;
    fn CurrentTitle(&self) -> ::windows::core::Result<i32>;
    fn CurrentTime(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn DVDTimeCode2bstr(&self, timecode: i32) -> ::windows::core::Result<::windows::core::BSTR>;
    fn DVDDirectory(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn SetDVDDirectory(&self, newval: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn IsSubpictureStreamEnabled(&self, lstream: i32) -> ::windows::core::Result<i16>;
    fn IsAudioStreamEnabled(&self, lstream: i32) -> ::windows::core::Result<i16>;
    fn CurrentSubpictureStream(&self) -> ::windows::core::Result<i32>;
    fn SetCurrentSubpictureStream(&self, newval: i32) -> ::windows::core::Result<()>;
    fn get_SubpictureLanguage(&self, lstream: i32) -> ::windows::core::Result<::windows::core::BSTR>;
    fn CurrentAudioStream(&self) -> ::windows::core::Result<i32>;
    fn SetCurrentAudioStream(&self, newval: i32) -> ::windows::core::Result<()>;
    fn AudioStreamsAvailable(&self) -> ::windows::core::Result<i32>;
    fn AnglesAvailable(&self) -> ::windows::core::Result<i32>;
    fn CurrentAngle(&self) -> ::windows::core::Result<i32>;
    fn SetCurrentAngle(&self, newval: i32) -> ::windows::core::Result<()>;
    fn SubpictureStreamsAvailable(&self) -> ::windows::core::Result<i32>;
    fn SubpictureOn(&self) -> ::windows::core::Result<i16>;
    fn SetSubpictureOn(&self, newval: i16) -> ::windows::core::Result<()>;
    fn DVDUniqueID(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn AcceptParentalLevelChange(&self, faccept: i16, strusername: &::windows::core::BSTR, strpassword: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn NotifyParentalLevelChange(&self, newval: i16) -> ::windows::core::Result<()>;
    fn SelectParentalCountry(&self, lcountry: i32, strusername: &::windows::core::BSTR, strpassword: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn SelectParentalLevel(&self, lparentallevel: i32, strusername: &::windows::core::BSTR, strpassword: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn get_TitleParentalLevels(&self, ltitle: i32) -> ::windows::core::Result<i32>;
    fn PlayerParentalCountry(&self) -> ::windows::core::Result<i32>;
    fn PlayerParentalLevel(&self) -> ::windows::core::Result<i32>;
    fn Eject(&self) -> ::windows::core::Result<()>;
    fn UOPValid(&self, luop: i32) -> ::windows::core::Result<i16>;
    fn get_SPRM(&self, lindex: i32) -> ::windows::core::Result<i16>;
    fn get_GPRM(&self, lindex: i32) -> ::windows::core::Result<i16>;
    fn put_GPRM(&self, lindex: i32, svalue: i16) -> ::windows::core::Result<()>;
    fn get_DVDTextStringType(&self, llangindex: i32, lstringindex: i32) -> ::windows::core::Result<DVDTextStringType>;
    fn get_DVDTextString(&self, llangindex: i32, lstringindex: i32) -> ::windows::core::Result<::windows::core::BSTR>;
    fn get_DVDTextNumberOfStrings(&self, llangindex: i32) -> ::windows::core::Result<i32>;
    fn DVDTextNumberOfLanguages(&self) -> ::windows::core::Result<i32>;
    fn get_DVDTextLanguageLCID(&self, llangindex: i32) -> ::windows::core::Result<i32>;
    fn RegionChange(&self) -> ::windows::core::Result<()>;
    fn DVDAdm(&self) -> ::windows::core::Result<super::super::System::Com::IDispatch>;
    fn DeleteBookmark(&self) -> ::windows::core::Result<()>;
    fn RestoreBookmark(&self) -> ::windows::core::Result<()>;
    fn SaveBookmark(&self) -> ::windows::core::Result<()>;
    fn SelectDefaultAudioLanguage(&self, lang: i32, ext: i32) -> ::windows::core::Result<()>;
    fn SelectDefaultSubpictureLanguage(&self, lang: i32, ext: DVDSPExt) -> ::windows::core::Result<()>;
    fn PreferredSubpictureStream(&self) -> ::windows::core::Result<i32>;
    fn DefaultMenuLanguage(&self) -> ::windows::core::Result<i32>;
    fn SetDefaultMenuLanguage(&self, lang: i32) -> ::windows::core::Result<()>;
    fn DefaultSubpictureLanguage(&self) -> ::windows::core::Result<i32>;
    fn DefaultAudioLanguage(&self) -> ::windows::core::Result<i32>;
    fn DefaultSubpictureLanguageExt(&self) -> ::windows::core::Result<DVDSPExt>;
    fn DefaultAudioLanguageExt(&self) -> ::windows::core::Result<i32>;
    fn get_LanguageFromLCID(&self, lcid: i32) -> ::windows::core::Result<::windows::core::BSTR>;
    fn KaraokeAudioPresentationMode(&self) -> ::windows::core::Result<i32>;
    fn SetKaraokeAudioPresentationMode(&self, newval: i32) -> ::windows::core::Result<()>;
    fn get_KaraokeChannelContent(&self, lstream: i32, lchan: i32) -> ::windows::core::Result<i32>;
    fn get_KaraokeChannelAssignment(&self, lstream: i32) -> ::windows::core::Result<i32>;
    fn RestorePreferredSettings(&self) -> ::windows::core::Result<()>;
    fn get_ButtonRect(&self, lbutton: i32) -> ::windows::core::Result<IMSVidRect>;
    fn DVDScreenInMouseCoordinates(&self) -> ::windows::core::Result<IMSVidRect>;
    fn SetDVDScreenInMouseCoordinates(&self, prect: &::core::option::Option<IMSVidRect>) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidWebDVD {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidWebDVD_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>() -> IMSVidWebDVD_Vtbl {
        unsafe extern "system" fn OnDVDEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, levent: i32, lparam1: isize, lparam2: isize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnDVDEvent(::core::mem::transmute_copy(&levent), ::core::mem::transmute_copy(&lparam1), ::core::mem::transmute_copy(&lparam2)).into()
        }
        unsafe extern "system" fn PlayTitle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ltitle: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayTitle(::core::mem::transmute_copy(&ltitle)).into()
        }
        unsafe extern "system" fn PlayChapterInTitle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ltitle: i32, lchapter: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayChapterInTitle(::core::mem::transmute_copy(&ltitle), ::core::mem::transmute_copy(&lchapter)).into()
        }
        unsafe extern "system" fn PlayChapter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lchapter: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayChapter(::core::mem::transmute_copy(&lchapter)).into()
        }
        unsafe extern "system" fn PlayChaptersAutoStop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ltitle: i32, lstrchapter: i32, lchaptercount: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayChaptersAutoStop(::core::mem::transmute_copy(&ltitle), ::core::mem::transmute_copy(&lstrchapter), ::core::mem::transmute_copy(&lchaptercount)).into()
        }
        unsafe extern "system" fn PlayAtTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strtime: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayAtTime(::core::mem::transmute(&strtime)).into()
        }
        unsafe extern "system" fn PlayAtTimeInTitle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ltitle: i32, strtime: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayAtTimeInTitle(::core::mem::transmute_copy(&ltitle), ::core::mem::transmute(&strtime)).into()
        }
        unsafe extern "system" fn PlayPeriodInTitleAutoStop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ltitle: i32, strstarttime: ::core::mem::ManuallyDrop<::windows::core::BSTR>, strendtime: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayPeriodInTitleAutoStop(::core::mem::transmute_copy(&ltitle), ::core::mem::transmute(&strstarttime), ::core::mem::transmute(&strendtime)).into()
        }
        unsafe extern "system" fn ReplayChapter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReplayChapter().into()
        }
        unsafe extern "system" fn PlayPrevChapter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayPrevChapter().into()
        }
        unsafe extern "system" fn PlayNextChapter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayNextChapter().into()
        }
        unsafe extern "system" fn StillOff<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StillOff().into()
        }
        unsafe extern "system" fn get_AudioLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lstream: i32, fformat: i16, straudiolang: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_AudioLanguage(::core::mem::transmute_copy(&lstream), ::core::mem::transmute_copy(&fformat)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(straudiolang, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ShowMenu<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, menuid: DVDMenuIDConstants) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ShowMenu(::core::mem::transmute_copy(&menuid)).into()
        }
        unsafe extern "system" fn Resume<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Resume().into()
        }
        unsafe extern "system" fn ReturnFromSubmenu<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReturnFromSubmenu().into()
        }
        unsafe extern "system" fn ButtonsAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ButtonsAvailable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentButton<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CurrentButton() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectAndActivateButton<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lbutton: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectAndActivateButton(::core::mem::transmute_copy(&lbutton)).into()
        }
        unsafe extern "system" fn ActivateButton<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ActivateButton().into()
        }
        unsafe extern "system" fn SelectRightButton<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectRightButton().into()
        }
        unsafe extern "system" fn SelectLeftButton<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectLeftButton().into()
        }
        unsafe extern "system" fn SelectLowerButton<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectLowerButton().into()
        }
        unsafe extern "system" fn SelectUpperButton<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectUpperButton().into()
        }
        unsafe extern "system" fn ActivateAtPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, xpos: i32, ypos: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ActivateAtPosition(::core::mem::transmute_copy(&xpos), ::core::mem::transmute_copy(&ypos)).into()
        }
        unsafe extern "system" fn SelectAtPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, xpos: i32, ypos: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectAtPosition(::core::mem::transmute_copy(&xpos), ::core::mem::transmute_copy(&ypos)).into()
        }
        unsafe extern "system" fn get_ButtonAtPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, xpos: i32, ypos: i32, plbutton: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_ButtonAtPosition(::core::mem::transmute_copy(&xpos), ::core::mem::transmute_copy(&ypos)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plbutton, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_NumberOfChapters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ltitle: i32, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_NumberOfChapters(::core::mem::transmute_copy(&ltitle)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TotalTitleTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TotalTitleTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TitlesAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TitlesAvailable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VolumesAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.VolumesAvailable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentVolume<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CurrentVolume() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentDiscSide<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CurrentDiscSide() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentDomain<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CurrentDomain() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentChapter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CurrentChapter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentTitle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CurrentTitle() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CurrentTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DVDTimeCode2bstr<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, timecode: i32, ptimestr: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DVDTimeCode2bstr(::core::mem::transmute_copy(&timecode)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ptimestr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DVDDirectory<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DVDDirectory() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDVDDirectory<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newval: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDVDDirectory(::core::mem::transmute(&newval)).into()
        }
        unsafe extern "system" fn IsSubpictureStreamEnabled<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lstream: i32, fenabled: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IsSubpictureStreamEnabled(::core::mem::transmute_copy(&lstream)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(fenabled, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsAudioStreamEnabled<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lstream: i32, fenabled: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IsAudioStreamEnabled(::core::mem::transmute_copy(&lstream)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(fenabled, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentSubpictureStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CurrentSubpictureStream() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCurrentSubpictureStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCurrentSubpictureStream(::core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn get_SubpictureLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lstream: i32, strlanguage: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_SubpictureLanguage(::core::mem::transmute_copy(&lstream)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(strlanguage, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentAudioStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CurrentAudioStream() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCurrentAudioStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCurrentAudioStream(::core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn AudioStreamsAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AudioStreamsAvailable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AnglesAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AnglesAvailable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentAngle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CurrentAngle() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCurrentAngle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCurrentAngle(::core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn SubpictureStreamsAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SubpictureStreamsAvailable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SubpictureOn<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SubpictureOn() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSubpictureOn<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newval: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSubpictureOn(::core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn DVDUniqueID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DVDUniqueID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AcceptParentalLevelChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, faccept: i16, strusername: ::core::mem::ManuallyDrop<::windows::core::BSTR>, strpassword: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AcceptParentalLevelChange(::core::mem::transmute_copy(&faccept), ::core::mem::transmute(&strusername), ::core::mem::transmute(&strpassword)).into()
        }
        unsafe extern "system" fn NotifyParentalLevelChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newval: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NotifyParentalLevelChange(::core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn SelectParentalCountry<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lcountry: i32, strusername: ::core::mem::ManuallyDrop<::windows::core::BSTR>, strpassword: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectParentalCountry(::core::mem::transmute_copy(&lcountry), ::core::mem::transmute(&strusername), ::core::mem::transmute(&strpassword)).into()
        }
        unsafe extern "system" fn SelectParentalLevel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lparentallevel: i32, strusername: ::core::mem::ManuallyDrop<::windows::core::BSTR>, strpassword: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectParentalLevel(::core::mem::transmute_copy(&lparentallevel), ::core::mem::transmute(&strusername), ::core::mem::transmute(&strpassword)).into()
        }
        unsafe extern "system" fn get_TitleParentalLevels<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ltitle: i32, plparentallevels: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_TitleParentalLevels(::core::mem::transmute_copy(&ltitle)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plparentallevels, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayerParentalCountry<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plcountrycode: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PlayerParentalCountry() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plcountrycode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayerParentalLevel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plparentallevel: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PlayerParentalLevel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plparentallevel, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Eject<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Eject().into()
        }
        unsafe extern "system" fn UOPValid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, luop: i32, pfvalid: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.UOPValid(::core::mem::transmute_copy(&luop)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfvalid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_SPRM<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lindex: i32, pssprm: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_SPRM(::core::mem::transmute_copy(&lindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pssprm, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_GPRM<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lindex: i32, pssprm: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_GPRM(::core::mem::transmute_copy(&lindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pssprm, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_GPRM<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lindex: i32, svalue: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_GPRM(::core::mem::transmute_copy(&lindex), ::core::mem::transmute_copy(&svalue)).into()
        }
        unsafe extern "system" fn get_DVDTextStringType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, llangindex: i32, lstringindex: i32, ptype: *mut DVDTextStringType) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_DVDTextStringType(::core::mem::transmute_copy(&llangindex), ::core::mem::transmute_copy(&lstringindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ptype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_DVDTextString<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, llangindex: i32, lstringindex: i32, pstrtext: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_DVDTextString(::core::mem::transmute_copy(&llangindex), ::core::mem::transmute_copy(&lstringindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstrtext, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_DVDTextNumberOfStrings<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, llangindex: i32, plnumofstrings: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_DVDTextNumberOfStrings(::core::mem::transmute_copy(&llangindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plnumofstrings, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DVDTextNumberOfLanguages<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plnumoflangs: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DVDTextNumberOfLanguages() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plnumoflangs, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_DVDTextLanguageLCID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, llangindex: i32, lcid: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_DVDTextLanguageLCID(::core::mem::transmute_copy(&llangindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lcid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegionChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegionChange().into()
        }
        unsafe extern "system" fn DVDAdm<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DVDAdm() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DeleteBookmark<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DeleteBookmark().into()
        }
        unsafe extern "system" fn RestoreBookmark<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RestoreBookmark().into()
        }
        unsafe extern "system" fn SaveBookmark<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SaveBookmark().into()
        }
        unsafe extern "system" fn SelectDefaultAudioLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lang: i32, ext: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectDefaultAudioLanguage(::core::mem::transmute_copy(&lang), ::core::mem::transmute_copy(&ext)).into()
        }
        unsafe extern "system" fn SelectDefaultSubpictureLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lang: i32, ext: DVDSPExt) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectDefaultSubpictureLanguage(::core::mem::transmute_copy(&lang), ::core::mem::transmute_copy(&ext)).into()
        }
        unsafe extern "system" fn PreferredSubpictureStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PreferredSubpictureStream() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DefaultMenuLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lang: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DefaultMenuLanguage() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lang, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultMenuLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lang: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDefaultMenuLanguage(::core::mem::transmute_copy(&lang)).into()
        }
        unsafe extern "system" fn DefaultSubpictureLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lang: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DefaultSubpictureLanguage() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lang, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DefaultAudioLanguage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lang: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DefaultAudioLanguage() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lang, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DefaultSubpictureLanguageExt<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ext: *mut DVDSPExt) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DefaultSubpictureLanguageExt() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ext, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DefaultAudioLanguageExt<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ext: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DefaultAudioLanguageExt() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ext, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_LanguageFromLCID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lcid: i32, lang: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_LanguageFromLCID(::core::mem::transmute_copy(&lcid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lang, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn KaraokeAudioPresentationMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.KaraokeAudioPresentationMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetKaraokeAudioPresentationMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetKaraokeAudioPresentationMode(::core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn get_KaraokeChannelContent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lstream: i32, lchan: i32, lcontent: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_KaraokeChannelContent(::core::mem::transmute_copy(&lstream), ::core::mem::transmute_copy(&lchan)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lcontent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_KaraokeChannelAssignment<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lstream: i32, lchannelassignment: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_KaraokeChannelAssignment(::core::mem::transmute_copy(&lstream)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lchannelassignment, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RestorePreferredSettings<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RestorePreferredSettings().into()
        }
        unsafe extern "system" fn get_ButtonRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lbutton: i32, prect: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_ButtonRect(::core::mem::transmute_copy(&lbutton)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prect, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DVDScreenInMouseCoordinates<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pprect: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DVDScreenInMouseCoordinates() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pprect, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDVDScreenInMouseCoordinates<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prect: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDVDScreenInMouseCoordinates(::core::mem::transmute(&prect)).into()
        }
        Self {
            base__: IMSVidPlayback_Vtbl::new::<Identity, Impl, OFFSET>(),
            OnDVDEvent: OnDVDEvent::<Identity, Impl, OFFSET>,
            PlayTitle: PlayTitle::<Identity, Impl, OFFSET>,
            PlayChapterInTitle: PlayChapterInTitle::<Identity, Impl, OFFSET>,
            PlayChapter: PlayChapter::<Identity, Impl, OFFSET>,
            PlayChaptersAutoStop: PlayChaptersAutoStop::<Identity, Impl, OFFSET>,
            PlayAtTime: PlayAtTime::<Identity, Impl, OFFSET>,
            PlayAtTimeInTitle: PlayAtTimeInTitle::<Identity, Impl, OFFSET>,
            PlayPeriodInTitleAutoStop: PlayPeriodInTitleAutoStop::<Identity, Impl, OFFSET>,
            ReplayChapter: ReplayChapter::<Identity, Impl, OFFSET>,
            PlayPrevChapter: PlayPrevChapter::<Identity, Impl, OFFSET>,
            PlayNextChapter: PlayNextChapter::<Identity, Impl, OFFSET>,
            StillOff: StillOff::<Identity, Impl, OFFSET>,
            get_AudioLanguage: get_AudioLanguage::<Identity, Impl, OFFSET>,
            ShowMenu: ShowMenu::<Identity, Impl, OFFSET>,
            Resume: Resume::<Identity, Impl, OFFSET>,
            ReturnFromSubmenu: ReturnFromSubmenu::<Identity, Impl, OFFSET>,
            ButtonsAvailable: ButtonsAvailable::<Identity, Impl, OFFSET>,
            CurrentButton: CurrentButton::<Identity, Impl, OFFSET>,
            SelectAndActivateButton: SelectAndActivateButton::<Identity, Impl, OFFSET>,
            ActivateButton: ActivateButton::<Identity, Impl, OFFSET>,
            SelectRightButton: SelectRightButton::<Identity, Impl, OFFSET>,
            SelectLeftButton: SelectLeftButton::<Identity, Impl, OFFSET>,
            SelectLowerButton: SelectLowerButton::<Identity, Impl, OFFSET>,
            SelectUpperButton: SelectUpperButton::<Identity, Impl, OFFSET>,
            ActivateAtPosition: ActivateAtPosition::<Identity, Impl, OFFSET>,
            SelectAtPosition: SelectAtPosition::<Identity, Impl, OFFSET>,
            get_ButtonAtPosition: get_ButtonAtPosition::<Identity, Impl, OFFSET>,
            get_NumberOfChapters: get_NumberOfChapters::<Identity, Impl, OFFSET>,
            TotalTitleTime: TotalTitleTime::<Identity, Impl, OFFSET>,
            TitlesAvailable: TitlesAvailable::<Identity, Impl, OFFSET>,
            VolumesAvailable: VolumesAvailable::<Identity, Impl, OFFSET>,
            CurrentVolume: CurrentVolume::<Identity, Impl, OFFSET>,
            CurrentDiscSide: CurrentDiscSide::<Identity, Impl, OFFSET>,
            CurrentDomain: CurrentDomain::<Identity, Impl, OFFSET>,
            CurrentChapter: CurrentChapter::<Identity, Impl, OFFSET>,
            CurrentTitle: CurrentTitle::<Identity, Impl, OFFSET>,
            CurrentTime: CurrentTime::<Identity, Impl, OFFSET>,
            DVDTimeCode2bstr: DVDTimeCode2bstr::<Identity, Impl, OFFSET>,
            DVDDirectory: DVDDirectory::<Identity, Impl, OFFSET>,
            SetDVDDirectory: SetDVDDirectory::<Identity, Impl, OFFSET>,
            IsSubpictureStreamEnabled: IsSubpictureStreamEnabled::<Identity, Impl, OFFSET>,
            IsAudioStreamEnabled: IsAudioStreamEnabled::<Identity, Impl, OFFSET>,
            CurrentSubpictureStream: CurrentSubpictureStream::<Identity, Impl, OFFSET>,
            SetCurrentSubpictureStream: SetCurrentSubpictureStream::<Identity, Impl, OFFSET>,
            get_SubpictureLanguage: get_SubpictureLanguage::<Identity, Impl, OFFSET>,
            CurrentAudioStream: CurrentAudioStream::<Identity, Impl, OFFSET>,
            SetCurrentAudioStream: SetCurrentAudioStream::<Identity, Impl, OFFSET>,
            AudioStreamsAvailable: AudioStreamsAvailable::<Identity, Impl, OFFSET>,
            AnglesAvailable: AnglesAvailable::<Identity, Impl, OFFSET>,
            CurrentAngle: CurrentAngle::<Identity, Impl, OFFSET>,
            SetCurrentAngle: SetCurrentAngle::<Identity, Impl, OFFSET>,
            SubpictureStreamsAvailable: SubpictureStreamsAvailable::<Identity, Impl, OFFSET>,
            SubpictureOn: SubpictureOn::<Identity, Impl, OFFSET>,
            SetSubpictureOn: SetSubpictureOn::<Identity, Impl, OFFSET>,
            DVDUniqueID: DVDUniqueID::<Identity, Impl, OFFSET>,
            AcceptParentalLevelChange: AcceptParentalLevelChange::<Identity, Impl, OFFSET>,
            NotifyParentalLevelChange: NotifyParentalLevelChange::<Identity, Impl, OFFSET>,
            SelectParentalCountry: SelectParentalCountry::<Identity, Impl, OFFSET>,
            SelectParentalLevel: SelectParentalLevel::<Identity, Impl, OFFSET>,
            get_TitleParentalLevels: get_TitleParentalLevels::<Identity, Impl, OFFSET>,
            PlayerParentalCountry: PlayerParentalCountry::<Identity, Impl, OFFSET>,
            PlayerParentalLevel: PlayerParentalLevel::<Identity, Impl, OFFSET>,
            Eject: Eject::<Identity, Impl, OFFSET>,
            UOPValid: UOPValid::<Identity, Impl, OFFSET>,
            get_SPRM: get_SPRM::<Identity, Impl, OFFSET>,
            get_GPRM: get_GPRM::<Identity, Impl, OFFSET>,
            put_GPRM: put_GPRM::<Identity, Impl, OFFSET>,
            get_DVDTextStringType: get_DVDTextStringType::<Identity, Impl, OFFSET>,
            get_DVDTextString: get_DVDTextString::<Identity, Impl, OFFSET>,
            get_DVDTextNumberOfStrings: get_DVDTextNumberOfStrings::<Identity, Impl, OFFSET>,
            DVDTextNumberOfLanguages: DVDTextNumberOfLanguages::<Identity, Impl, OFFSET>,
            get_DVDTextLanguageLCID: get_DVDTextLanguageLCID::<Identity, Impl, OFFSET>,
            RegionChange: RegionChange::<Identity, Impl, OFFSET>,
            DVDAdm: DVDAdm::<Identity, Impl, OFFSET>,
            DeleteBookmark: DeleteBookmark::<Identity, Impl, OFFSET>,
            RestoreBookmark: RestoreBookmark::<Identity, Impl, OFFSET>,
            SaveBookmark: SaveBookmark::<Identity, Impl, OFFSET>,
            SelectDefaultAudioLanguage: SelectDefaultAudioLanguage::<Identity, Impl, OFFSET>,
            SelectDefaultSubpictureLanguage: SelectDefaultSubpictureLanguage::<Identity, Impl, OFFSET>,
            PreferredSubpictureStream: PreferredSubpictureStream::<Identity, Impl, OFFSET>,
            DefaultMenuLanguage: DefaultMenuLanguage::<Identity, Impl, OFFSET>,
            SetDefaultMenuLanguage: SetDefaultMenuLanguage::<Identity, Impl, OFFSET>,
            DefaultSubpictureLanguage: DefaultSubpictureLanguage::<Identity, Impl, OFFSET>,
            DefaultAudioLanguage: DefaultAudioLanguage::<Identity, Impl, OFFSET>,
            DefaultSubpictureLanguageExt: DefaultSubpictureLanguageExt::<Identity, Impl, OFFSET>,
            DefaultAudioLanguageExt: DefaultAudioLanguageExt::<Identity, Impl, OFFSET>,
            get_LanguageFromLCID: get_LanguageFromLCID::<Identity, Impl, OFFSET>,
            KaraokeAudioPresentationMode: KaraokeAudioPresentationMode::<Identity, Impl, OFFSET>,
            SetKaraokeAudioPresentationMode: SetKaraokeAudioPresentationMode::<Identity, Impl, OFFSET>,
            get_KaraokeChannelContent: get_KaraokeChannelContent::<Identity, Impl, OFFSET>,
            get_KaraokeChannelAssignment: get_KaraokeChannelAssignment::<Identity, Impl, OFFSET>,
            RestorePreferredSettings: RestorePreferredSettings::<Identity, Impl, OFFSET>,
            get_ButtonRect: get_ButtonRect::<Identity, Impl, OFFSET>,
            DVDScreenInMouseCoordinates: DVDScreenInMouseCoordinates::<Identity, Impl, OFFSET>,
            SetDVDScreenInMouseCoordinates: SetDVDScreenInMouseCoordinates::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidWebDVD as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidInputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidPlayback as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidWebDVD2_Impl: Sized + IMSVidWebDVD_Impl {
    fn get_Bookmark(&self, ppdata: *mut *mut u8, pdatalength: *mut u32) -> ::windows::core::Result<()>;
    fn put_Bookmark(&self, pdata: *const u8, dwdatalength: u32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidWebDVD2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidWebDVD2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD2_Impl, const OFFSET: isize>() -> IMSVidWebDVD2_Vtbl {
        unsafe extern "system" fn get_Bookmark<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppdata: *mut *mut u8, pdatalength: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Bookmark(::core::mem::transmute_copy(&ppdata), ::core::mem::transmute_copy(&pdatalength)).into()
        }
        unsafe extern "system" fn put_Bookmark<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVD2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdata: *const u8, dwdatalength: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Bookmark(::core::mem::transmute_copy(&pdata), ::core::mem::transmute_copy(&dwdatalength)).into()
        }
        Self {
            base__: IMSVidWebDVD_Vtbl::new::<Identity, Impl, OFFSET>(),
            get_Bookmark: get_Bookmark::<Identity, Impl, OFFSET>,
            put_Bookmark: put_Bookmark::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidWebDVD2 as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidInputDevice as ::windows::core::Interface>::IID || iid == &<IMSVidPlayback as ::windows::core::Interface>::IID || iid == &<IMSVidWebDVD as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidWebDVDAdm_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn ChangePassword(&self, strusername: &::windows::core::BSTR, strold: &::windows::core::BSTR, strnew: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn SaveParentalLevel(&self, level: i32, strusername: &::windows::core::BSTR, strpassword: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn SaveParentalCountry(&self, country: i32, strusername: &::windows::core::BSTR, strpassword: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn ConfirmPassword(&self, strusername: &::windows::core::BSTR, strpassword: &::windows::core::BSTR) -> ::windows::core::Result<i16>;
    fn GetParentalLevel(&self) -> ::windows::core::Result<i32>;
    fn GetParentalCountry(&self) -> ::windows::core::Result<i32>;
    fn DefaultAudioLCID(&self) -> ::windows::core::Result<i32>;
    fn SetDefaultAudioLCID(&self, newval: i32) -> ::windows::core::Result<()>;
    fn DefaultSubpictureLCID(&self) -> ::windows::core::Result<i32>;
    fn SetDefaultSubpictureLCID(&self, newval: i32) -> ::windows::core::Result<()>;
    fn DefaultMenuLCID(&self) -> ::windows::core::Result<i32>;
    fn SetDefaultMenuLCID(&self, newval: i32) -> ::windows::core::Result<()>;
    fn BookmarkOnStop(&self) -> ::windows::core::Result<i16>;
    fn SetBookmarkOnStop(&self, newval: i16) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidWebDVDAdm {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidWebDVDAdm_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>() -> IMSVidWebDVDAdm_Vtbl {
        unsafe extern "system" fn ChangePassword<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strusername: ::core::mem::ManuallyDrop<::windows::core::BSTR>, strold: ::core::mem::ManuallyDrop<::windows::core::BSTR>, strnew: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChangePassword(::core::mem::transmute(&strusername), ::core::mem::transmute(&strold), ::core::mem::transmute(&strnew)).into()
        }
        unsafe extern "system" fn SaveParentalLevel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, level: i32, strusername: ::core::mem::ManuallyDrop<::windows::core::BSTR>, strpassword: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SaveParentalLevel(::core::mem::transmute_copy(&level), ::core::mem::transmute(&strusername), ::core::mem::transmute(&strpassword)).into()
        }
        unsafe extern "system" fn SaveParentalCountry<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, country: i32, strusername: ::core::mem::ManuallyDrop<::windows::core::BSTR>, strpassword: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SaveParentalCountry(::core::mem::transmute_copy(&country), ::core::mem::transmute(&strusername), ::core::mem::transmute(&strpassword)).into()
        }
        unsafe extern "system" fn ConfirmPassword<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strusername: ::core::mem::ManuallyDrop<::windows::core::BSTR>, strpassword: ::core::mem::ManuallyDrop<::windows::core::BSTR>, pval: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ConfirmPassword(::core::mem::transmute(&strusername), ::core::mem::transmute(&strpassword)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetParentalLevel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, llevel: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetParentalLevel() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(llevel, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetParentalCountry<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lcountry: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetParentalCountry() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lcountry, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DefaultAudioLCID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DefaultAudioLCID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultAudioLCID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDefaultAudioLCID(::core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn DefaultSubpictureLCID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DefaultSubpictureLCID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultSubpictureLCID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDefaultSubpictureLCID(::core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn DefaultMenuLCID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DefaultMenuLCID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultMenuLCID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDefaultMenuLCID(::core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn BookmarkOnStop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pval: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.BookmarkOnStop() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBookmarkOnStop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDAdm_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newval: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBookmarkOnStop(::core::mem::transmute_copy(&newval)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            ChangePassword: ChangePassword::<Identity, Impl, OFFSET>,
            SaveParentalLevel: SaveParentalLevel::<Identity, Impl, OFFSET>,
            SaveParentalCountry: SaveParentalCountry::<Identity, Impl, OFFSET>,
            ConfirmPassword: ConfirmPassword::<Identity, Impl, OFFSET>,
            GetParentalLevel: GetParentalLevel::<Identity, Impl, OFFSET>,
            GetParentalCountry: GetParentalCountry::<Identity, Impl, OFFSET>,
            DefaultAudioLCID: DefaultAudioLCID::<Identity, Impl, OFFSET>,
            SetDefaultAudioLCID: SetDefaultAudioLCID::<Identity, Impl, OFFSET>,
            DefaultSubpictureLCID: DefaultSubpictureLCID::<Identity, Impl, OFFSET>,
            SetDefaultSubpictureLCID: SetDefaultSubpictureLCID::<Identity, Impl, OFFSET>,
            DefaultMenuLCID: DefaultMenuLCID::<Identity, Impl, OFFSET>,
            SetDefaultMenuLCID: SetDefaultMenuLCID::<Identity, Impl, OFFSET>,
            BookmarkOnStop: BookmarkOnStop::<Identity, Impl, OFFSET>,
            SetBookmarkOnStop: SetBookmarkOnStop::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidWebDVDAdm as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidWebDVDEvent_Impl: Sized + IMSVidPlaybackEvent_Impl {
    fn DVDNotify(&self, leventcode: i32, lparam1: &super::super::System::Com::VARIANT, lparam2: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
    fn PlayForwards(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn PlayBackwards(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn ShowMenu(&self, menuid: DVDMenuIDConstants, benabled: i16) -> ::windows::core::Result<()>;
    fn Resume(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn SelectOrActivateButton(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn StillOff(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn PauseOn(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn ChangeCurrentAudioStream(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn ChangeCurrentSubpictureStream(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn ChangeCurrentAngle(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn PlayAtTimeInTitle(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn PlayAtTime(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn PlayChapterInTitle(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn PlayChapter(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn ReplayChapter(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn PlayNextChapter(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn Stop(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn ReturnFromSubmenu(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn PlayTitle(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn PlayPrevChapter(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn ChangeKaraokePresMode(&self, benabled: i16) -> ::windows::core::Result<()>;
    fn ChangeVideoPresMode(&self, benabled: i16) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidWebDVDEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidWebDVDEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>() -> IMSVidWebDVDEvent_Vtbl {
        unsafe extern "system" fn DVDNotify<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, leventcode: i32, lparam1: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, lparam2: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DVDNotify(::core::mem::transmute_copy(&leventcode), ::core::mem::transmute(&lparam1), ::core::mem::transmute(&lparam2)).into()
        }
        unsafe extern "system" fn PlayForwards<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayForwards(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayBackwards<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayBackwards(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ShowMenu<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, menuid: DVDMenuIDConstants, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ShowMenu(::core::mem::transmute_copy(&menuid), ::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn Resume<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Resume(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn SelectOrActivateButton<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SelectOrActivateButton(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn StillOff<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StillOff(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PauseOn<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PauseOn(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ChangeCurrentAudioStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChangeCurrentAudioStream(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ChangeCurrentSubpictureStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChangeCurrentSubpictureStream(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ChangeCurrentAngle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChangeCurrentAngle(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayAtTimeInTitle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayAtTimeInTitle(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayAtTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayAtTime(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayChapterInTitle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayChapterInTitle(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayChapter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayChapter(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ReplayChapter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReplayChapter(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayNextChapter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayNextChapter(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn Stop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Stop(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ReturnFromSubmenu<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReturnFromSubmenu(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayTitle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayTitle(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayPrevChapter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PlayPrevChapter(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ChangeKaraokePresMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChangeKaraokePresMode(::core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ChangeVideoPresMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidWebDVDEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, benabled: i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChangeVideoPresMode(::core::mem::transmute_copy(&benabled)).into()
        }
        Self {
            base__: IMSVidPlaybackEvent_Vtbl::new::<Identity, Impl, OFFSET>(),
            DVDNotify: DVDNotify::<Identity, Impl, OFFSET>,
            PlayForwards: PlayForwards::<Identity, Impl, OFFSET>,
            PlayBackwards: PlayBackwards::<Identity, Impl, OFFSET>,
            ShowMenu: ShowMenu::<Identity, Impl, OFFSET>,
            Resume: Resume::<Identity, Impl, OFFSET>,
            SelectOrActivateButton: SelectOrActivateButton::<Identity, Impl, OFFSET>,
            StillOff: StillOff::<Identity, Impl, OFFSET>,
            PauseOn: PauseOn::<Identity, Impl, OFFSET>,
            ChangeCurrentAudioStream: ChangeCurrentAudioStream::<Identity, Impl, OFFSET>,
            ChangeCurrentSubpictureStream: ChangeCurrentSubpictureStream::<Identity, Impl, OFFSET>,
            ChangeCurrentAngle: ChangeCurrentAngle::<Identity, Impl, OFFSET>,
            PlayAtTimeInTitle: PlayAtTimeInTitle::<Identity, Impl, OFFSET>,
            PlayAtTime: PlayAtTime::<Identity, Impl, OFFSET>,
            PlayChapterInTitle: PlayChapterInTitle::<Identity, Impl, OFFSET>,
            PlayChapter: PlayChapter::<Identity, Impl, OFFSET>,
            ReplayChapter: ReplayChapter::<Identity, Impl, OFFSET>,
            PlayNextChapter: PlayNextChapter::<Identity, Impl, OFFSET>,
            Stop: Stop::<Identity, Impl, OFFSET>,
            ReturnFromSubmenu: ReturnFromSubmenu::<Identity, Impl, OFFSET>,
            PlayTitle: PlayTitle::<Identity, Impl, OFFSET>,
            PlayPrevChapter: PlayPrevChapter::<Identity, Impl, OFFSET>,
            ChangeKaraokePresMode: ChangeKaraokePresMode::<Identity, Impl, OFFSET>,
            ChangeVideoPresMode: ChangeVideoPresMode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidWebDVDEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidPlaybackEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidXDS_Impl: Sized + IMSVidFeature_Impl {
    fn ChannelChangeInterface(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidXDS {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidXDS_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidXDS_Impl, const OFFSET: isize>() -> IMSVidXDS_Vtbl {
        unsafe extern "system" fn ChannelChangeInterface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidXDS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, punkcc: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ChannelChangeInterface() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(punkcc, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: IMSVidFeature_Vtbl::new::<Identity, Impl, OFFSET>(), ChannelChangeInterface: ChannelChangeInterface::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidXDS as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDevice as ::windows::core::Interface>::IID || iid == &<IMSVidFeature as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidXDSEvent_Impl: Sized + IMSVidFeatureEvent_Impl {
    fn RatingChange(&self, prevratingsystem: EnTvRat_System, prevlevel: EnTvRat_GenericLevel, prevattributes: BfEnTvRat_GenericAttributes, newratingsystem: EnTvRat_System, newlevel: EnTvRat_GenericLevel, newattributes: BfEnTvRat_GenericAttributes) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMSVidXDSEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidXDSEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidXDSEvent_Impl, const OFFSET: isize>() -> IMSVidXDSEvent_Vtbl {
        unsafe extern "system" fn RatingChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMSVidXDSEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prevratingsystem: EnTvRat_System, prevlevel: EnTvRat_GenericLevel, prevattributes: BfEnTvRat_GenericAttributes, newratingsystem: EnTvRat_System, newlevel: EnTvRat_GenericLevel, newattributes: BfEnTvRat_GenericAttributes) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RatingChange(::core::mem::transmute_copy(&prevratingsystem), ::core::mem::transmute_copy(&prevlevel), ::core::mem::transmute_copy(&prevattributes), ::core::mem::transmute_copy(&newratingsystem), ::core::mem::transmute_copy(&newlevel), ::core::mem::transmute_copy(&newattributes)).into()
        }
        Self { base__: IMSVidFeatureEvent_Vtbl::new::<Identity, Impl, OFFSET>(), RatingChange: RatingChange::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMSVidXDSEvent as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID || iid == &<IMSVidDeviceEvent as ::windows::core::Interface>::IID || iid == &<IMSVidFeatureEvent as ::windows::core::Interface>::IID
    }
}
pub trait IMceBurnerControl_Impl: Sized {
    fn GetBurnerNoDecryption(&self) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IMceBurnerControl {}
impl IMceBurnerControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMceBurnerControl_Impl, const OFFSET: isize>() -> IMceBurnerControl_Vtbl {
        unsafe extern "system" fn GetBurnerNoDecryption<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMceBurnerControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetBurnerNoDecryption().into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetBurnerNoDecryption: GetBurnerNoDecryption::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMceBurnerControl as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMediaControl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMediaControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaControl_Impl, const OFFSET: isize>() -> IMediaControl_Vtbl {
        unsafe extern "system" fn Run<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Run().into()
        }
        unsafe extern "system" fn Pause<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Pause().into()
        }
        unsafe extern "system" fn Stop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Stop().into()
        }
        unsafe extern "system" fn GetState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mstimeout: i32, pfs: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetState(::core::mem::transmute_copy(&mstimeout)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfs, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RenderFile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strfilename: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RenderFile(::core::mem::transmute(&strfilename)).into()
        }
        unsafe extern "system" fn AddSourceFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strfilename: ::core::mem::ManuallyDrop<::windows::core::BSTR>, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AddSourceFilter(::core::mem::transmute(&strfilename)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FilterCollection<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FilterCollection() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegFilterCollection<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.RegFilterCollection() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn StopWhenReady<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StopWhenReady().into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Run: Run::<Identity, Impl, OFFSET>,
            Pause: Pause::<Identity, Impl, OFFSET>,
            Stop: Stop::<Identity, Impl, OFFSET>,
            GetState: GetState::<Identity, Impl, OFFSET>,
            RenderFile: RenderFile::<Identity, Impl, OFFSET>,
            AddSourceFilter: AddSourceFilter::<Identity, Impl, OFFSET>,
            FilterCollection: FilterCollection::<Identity, Impl, OFFSET>,
            RegFilterCollection: RegFilterCollection::<Identity, Impl, OFFSET>,
            StopWhenReady: StopWhenReady::<Identity, Impl, 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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMediaEvent {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMediaEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaEvent_Impl, const OFFSET: isize>() -> IMediaEvent_Vtbl {
        unsafe extern "system" fn GetEventHandle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hevent: *mut isize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEventHandle() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(hevent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, leventcode: *mut i32, lparam1: *mut isize, lparam2: *mut isize, mstimeout: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetEvent(::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<Impl = Impl>, Impl: IMediaEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mstimeout: i32, pevcode: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.WaitForCompletion(::core::mem::transmute_copy(&mstimeout)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pevcode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CancelDefaultHandling<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, levcode: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CancelDefaultHandling(::core::mem::transmute_copy(&levcode)).into()
        }
        unsafe extern "system" fn RestoreDefaultHandling<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, levcode: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RestoreDefaultHandling(::core::mem::transmute_copy(&levcode)).into()
        }
        unsafe extern "system" fn FreeEventParams<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, levcode: i32, lparam1: isize, lparam2: isize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.FreeEventParams(::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, Impl, OFFSET>(),
            GetEventHandle: GetEventHandle::<Identity, Impl, OFFSET>,
            GetEvent: GetEvent::<Identity, Impl, OFFSET>,
            WaitForCompletion: WaitForCompletion::<Identity, Impl, OFFSET>,
            CancelDefaultHandling: CancelDefaultHandling::<Identity, Impl, OFFSET>,
            RestoreDefaultHandling: RestoreDefaultHandling::<Identity, Impl, OFFSET>,
            FreeEventParams: FreeEventParams::<Identity, Impl, 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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMediaEventEx {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMediaEventEx_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaEventEx_Impl, const OFFSET: isize>() -> IMediaEventEx_Vtbl {
        unsafe extern "system" fn SetNotifyWindow<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaEventEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hwnd: isize, lmsg: i32, linstancedata: isize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetNotifyWindow(::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<Impl = Impl>, Impl: IMediaEventEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lnonotifyflags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetNotifyFlags(::core::mem::transmute_copy(&lnonotifyflags)).into()
        }
        unsafe extern "system" fn GetNotifyFlags<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaEventEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lplnonotifyflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNotifyFlags() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lplnonotifyflags, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMediaEvent_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetNotifyWindow: SetNotifyWindow::<Identity, Impl, OFFSET>,
            SetNotifyFlags: SetNotifyFlags::<Identity, Impl, OFFSET>,
            GetNotifyFlags: GetNotifyFlags::<Identity, Impl, 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<Impl = Impl>, Impl: IMediaEventSink_Impl, const OFFSET: isize>() -> IMediaEventSink_Vtbl {
        unsafe extern "system" fn Notify<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaEventSink_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, eventcode: i32, eventparam1: isize, eventparam2: isize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Notify(::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, Impl, 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: &::core::option::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<Impl = Impl>, Impl: IMediaFilter_Impl, const OFFSET: isize>() -> IMediaFilter_Vtbl {
        unsafe extern "system" fn Stop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Stop().into()
        }
        unsafe extern "system" fn Pause<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Pause().into()
        }
        unsafe extern "system" fn Run<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tstart: i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Run(::core::mem::transmute_copy(&tstart)).into()
        }
        unsafe extern "system" fn GetState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwmillisecstimeout: u32, state: *mut FILTER_STATE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetState(::core::mem::transmute_copy(&dwmillisecstimeout)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(state, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSyncSource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pclock: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSyncSource(::core::mem::transmute(&pclock)).into()
        }
        unsafe extern "system" fn GetSyncSource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pclock: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSyncSource() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pclock, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IPersist_Vtbl::new::<Identity, Impl, OFFSET>(),
            Stop: Stop::<Identity, Impl, OFFSET>,
            Pause: Pause::<Identity, Impl, OFFSET>,
            Run: Run::<Identity, Impl, OFFSET>,
            GetState: GetState::<Identity, Impl, OFFSET>,
            SetSyncSource: SetSyncSource::<Identity, Impl, OFFSET>,
            GetSyncSource: GetSyncSource::<Identity, Impl, 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) -> ::windows::core::Result<MP_PARAMINFO>;
    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<Impl = Impl>, Impl: IMediaParamInfo_Impl, const OFFSET: isize>() -> IMediaParamInfo_Vtbl {
        unsafe extern "system" fn GetParamCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaParamInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwparams: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetParamCount() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwparams, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetParamInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaParamInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwparamindex: u32, pinfo: *mut MP_PARAMINFO) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetParamInfo(::core::mem::transmute_copy(&dwparamindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pinfo, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetParamText<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaParamInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwparamindex: u32, ppwchtext: *mut *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetParamText(::core::mem::transmute_copy(&dwparamindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppwchtext, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNumTimeFormats<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaParamInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwnumtimeformats: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNumTimeFormats() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwnumtimeformats, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSupportedTimeFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaParamInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwformatindex: u32, pguidtimeformat: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSupportedTimeFormat(::core::mem::transmute_copy(&dwformatindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pguidtimeformat, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentTimeFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaParamInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguidtimeformat: *mut ::windows::core::GUID, ptimedata: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentTimeFormat(::core::mem::transmute_copy(&pguidtimeformat), ::core::mem::transmute_copy(&ptimedata)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetParamCount: GetParamCount::<Identity, Impl, OFFSET>,
            GetParamInfo: GetParamInfo::<Identity, Impl, OFFSET>,
            GetParamText: GetParamText::<Identity, Impl, OFFSET>,
            GetNumTimeFormats: GetNumTimeFormats::<Identity, Impl, OFFSET>,
            GetSupportedTimeFormat: GetSupportedTimeFormat::<Identity, Impl, OFFSET>,
            GetCurrentTimeFormat: GetCurrentTimeFormat::<Identity, Impl, 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<Impl = Impl>, Impl: IMediaParams_Impl, const OFFSET: isize>() -> IMediaParams_Vtbl {
        unsafe extern "system" fn GetParam<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaParams_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwparamindex: u32, pvalue: *mut f32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetParam(::core::mem::transmute_copy(&dwparamindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvalue, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetParam<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaParams_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwparamindex: u32, value: f32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetParam(::core::mem::transmute_copy(&dwparamindex), ::core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn AddEnvelope<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaParams_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwparamindex: u32, csegments: u32, penvelopesegments: *const MP_ENVELOPE_SEGMENT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AddEnvelope(::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<Impl = Impl>, Impl: IMediaParams_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwparamindex: u32, reftimestart: i64, reftimeend: i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.FlushEnvelope(::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<Impl = Impl>, Impl: IMediaParams_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guidtimeformat: ::windows::core::GUID, mptimedata: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTimeFormat(::core::mem::transmute(&guidtimeformat), ::core::mem::transmute_copy(&mptimedata)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetParam: GetParam::<Identity, Impl, OFFSET>,
            SetParam: SetParam::<Identity, Impl, OFFSET>,
            AddEnvelope: AddEnvelope::<Identity, Impl, OFFSET>,
            FlushEnvelope: FlushEnvelope::<Identity, Impl, OFFSET>,
            SetTimeFormat: SetTimeFormat::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMediaParams as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMediaPosition {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMediaPosition_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaPosition_Impl, const OFFSET: isize>() -> IMediaPosition_Vtbl {
        unsafe extern "system" fn Duration<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaPosition_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plength: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Duration() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plength, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCurrentPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaPosition_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lltime: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCurrentPosition(::core::mem::transmute_copy(&lltime)).into()
        }
        unsafe extern "system" fn CurrentPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaPosition_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plltime: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CurrentPosition() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plltime, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn StopTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaPosition_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plltime: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.StopTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plltime, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStopTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaPosition_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lltime: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStopTime(::core::mem::transmute_copy(&lltime)).into()
        }
        unsafe extern "system" fn PrerollTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaPosition_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plltime: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PrerollTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plltime, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPrerollTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaPosition_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lltime: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPrerollTime(::core::mem::transmute_copy(&lltime)).into()
        }
        unsafe extern "system" fn SetRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaPosition_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, drate: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRate(::core::mem::transmute_copy(&drate)).into()
        }
        unsafe extern "system" fn Rate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaPosition_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdrate: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Rate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdrate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CanSeekForward<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaPosition_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcanseekforward: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CanSeekForward() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcanseekforward, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CanSeekBackward<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaPosition_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcanseekbackward: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CanSeekBackward() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcanseekbackward, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Duration: Duration::<Identity, Impl, OFFSET>,
            SetCurrentPosition: SetCurrentPosition::<Identity, Impl, OFFSET>,
            CurrentPosition: CurrentPosition::<Identity, Impl, OFFSET>,
            StopTime: StopTime::<Identity, Impl, OFFSET>,
            SetStopTime: SetStopTime::<Identity, Impl, OFFSET>,
            PrerollTime: PrerollTime::<Identity, Impl, OFFSET>,
            SetPrerollTime: SetPrerollTime::<Identity, Impl, OFFSET>,
            SetRate: SetRate::<Identity, Impl, OFFSET>,
            Rate: Rate::<Identity, Impl, OFFSET>,
            CanSeekForward: CanSeekForward::<Identity, Impl, OFFSET>,
            CanSeekBackward: CanSeekBackward::<Identity, Impl, 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(all(feature = "Win32_Foundation", feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Ole"))]
pub trait IMediaPropertyBag_Impl: Sized + super::super::System::Com::StructuredStorage::IPropertyBag_Impl {
    fn EnumProperty(&self, iproperty: u32, pvarpropertyname: *mut super::super::System::Com::VARIANT, pvarpropertyvalue: *mut super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMediaPropertyBag {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Ole"))]
impl IMediaPropertyBag_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaPropertyBag_Impl, const OFFSET: isize>() -> IMediaPropertyBag_Vtbl {
        unsafe extern "system" fn EnumProperty<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaPropertyBag_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, iproperty: u32, pvarpropertyname: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, pvarpropertyvalue: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EnumProperty(::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, Impl, OFFSET>(),
            EnumProperty: EnumProperty::<Identity, Impl, 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(all(feature = "Win32_Foundation", 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::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__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::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(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IMediaSample {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl IMediaSample_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>() -> IMediaSample_Vtbl {
        unsafe extern "system" fn GetPointer<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppbuffer: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPointer() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppbuffer, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> i32 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetSize()
        }
        unsafe extern "system" fn GetTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptimestart: *mut i64, ptimeend: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTime(::core::mem::transmute_copy(&ptimestart), ::core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn SetTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptimestart: *const i64, ptimeend: *const i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTime(::core::mem::transmute_copy(&ptimestart), ::core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn IsSyncPoint<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsSyncPoint().into()
        }
        unsafe extern "system" fn SetSyncPoint<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bissyncpoint: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSyncPoint(::core::mem::transmute_copy(&bissyncpoint)).into()
        }
        unsafe extern "system" fn IsPreroll<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsPreroll().into()
        }
        unsafe extern "system" fn SetPreroll<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bispreroll: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPreroll(::core::mem::transmute_copy(&bispreroll)).into()
        }
        unsafe extern "system" fn GetActualDataLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> i32 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetActualDataLength()
        }
        unsafe extern "system" fn SetActualDataLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, __midl__imediasample0000: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetActualDataLength(::core::mem::transmute_copy(&__midl__imediasample0000)).into()
        }
        unsafe extern "system" fn GetMediaType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppmediatype: *mut *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMediaType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppmediatype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMediaType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmediatype: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMediaType(::core::mem::transmute_copy(&pmediatype)).into()
        }
        unsafe extern "system" fn IsDiscontinuity<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsDiscontinuity().into()
        }
        unsafe extern "system" fn SetDiscontinuity<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bdiscontinuity: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDiscontinuity(::core::mem::transmute_copy(&bdiscontinuity)).into()
        }
        unsafe extern "system" fn GetMediaTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptimestart: *mut i64, ptimeend: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMediaTime(::core::mem::transmute_copy(&ptimestart), ::core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn SetMediaTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptimestart: *const i64, ptimeend: *const i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMediaTime(::core::mem::transmute_copy(&ptimestart), ::core::mem::transmute_copy(&ptimeend)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPointer: GetPointer::<Identity, Impl, OFFSET>,
            GetSize: GetSize::<Identity, Impl, OFFSET>,
            GetTime: GetTime::<Identity, Impl, OFFSET>,
            SetTime: SetTime::<Identity, Impl, OFFSET>,
            IsSyncPoint: IsSyncPoint::<Identity, Impl, OFFSET>,
            SetSyncPoint: SetSyncPoint::<Identity, Impl, OFFSET>,
            IsPreroll: IsPreroll::<Identity, Impl, OFFSET>,
            SetPreroll: SetPreroll::<Identity, Impl, OFFSET>,
            GetActualDataLength: GetActualDataLength::<Identity, Impl, OFFSET>,
            SetActualDataLength: SetActualDataLength::<Identity, Impl, OFFSET>,
            GetMediaType: GetMediaType::<Identity, Impl, OFFSET>,
            SetMediaType: SetMediaType::<Identity, Impl, OFFSET>,
            IsDiscontinuity: IsDiscontinuity::<Identity, Impl, OFFSET>,
            SetDiscontinuity: SetDiscontinuity::<Identity, Impl, OFFSET>,
            GetMediaTime: GetMediaTime::<Identity, Impl, OFFSET>,
            SetMediaTime: SetMediaTime::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMediaSample as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IMediaSample2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl IMediaSample2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample2_Impl, const OFFSET: isize>() -> IMediaSample2_Vtbl {
        unsafe extern "system" fn GetProperties<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cbproperties: u32, pbproperties: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetProperties(::core::mem::transmute_copy(&cbproperties), ::core::mem::transmute_copy(&pbproperties)).into()
        }
        unsafe extern "system" fn SetProperties<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cbproperties: u32, pbproperties: *const u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetProperties(::core::mem::transmute_copy(&cbproperties), ::core::mem::transmute_copy(&pbproperties)).into()
        }
        Self {
            base__: IMediaSample_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetProperties: GetProperties::<Identity, Impl, OFFSET>,
            SetProperties: SetProperties::<Identity, Impl, 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<Impl = Impl>, Impl: IMediaSample2Config_Impl, const OFFSET: isize>() -> IMediaSample2Config_Vtbl {
        unsafe extern "system" fn GetSurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSample2Config_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppdirect3dsurface9: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSurface() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdirect3dsurface9, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetSurface: GetSurface::<Identity, Impl, 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<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>() -> IMediaSeeking_Vtbl {
        unsafe extern "system" fn GetCapabilities<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcapabilities: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCapabilities() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcapabilities, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CheckCapabilities<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcapabilities: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CheckCapabilities(::core::mem::transmute_copy(&pcapabilities)).into()
        }
        unsafe extern "system" fn IsFormatSupported<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pformat: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsFormatSupported(::core::mem::transmute_copy(&pformat)).into()
        }
        unsafe extern "system" fn QueryPreferredFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pformat: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.QueryPreferredFormat() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pformat, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTimeFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pformat: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTimeFormat() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pformat, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsUsingTimeFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pformat: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsUsingTimeFormat(::core::mem::transmute_copy(&pformat)).into()
        }
        unsafe extern "system" fn SetTimeFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pformat: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTimeFormat(::core::mem::transmute_copy(&pformat)).into()
        }
        unsafe extern "system" fn GetDuration<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pduration: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDuration() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pduration, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStopPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstop: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStopPosition() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstop, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcurrent: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentPosition() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcurrent, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ConvertTimeFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConvertTimeFormat(::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<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcurrent: *mut i64, dwcurrentflags: u32, pstop: *mut i64, dwstopflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPositions(::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<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcurrent: *mut i64, pstop: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPositions(::core::mem::transmute_copy(&pcurrent), ::core::mem::transmute_copy(&pstop)).into()
        }
        unsafe extern "system" fn GetAvailable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pearliest: *mut i64, platest: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAvailable(::core::mem::transmute_copy(&pearliest), ::core::mem::transmute_copy(&platest)).into()
        }
        unsafe extern "system" fn SetRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, drate: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRate(::core::mem::transmute_copy(&drate)).into()
        }
        unsafe extern "system" fn GetRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdrate: *mut f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdrate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPreroll<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaSeeking_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pllpreroll: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPreroll() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pllpreroll, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCapabilities: GetCapabilities::<Identity, Impl, OFFSET>,
            CheckCapabilities: CheckCapabilities::<Identity, Impl, OFFSET>,
            IsFormatSupported: IsFormatSupported::<Identity, Impl, OFFSET>,
            QueryPreferredFormat: QueryPreferredFormat::<Identity, Impl, OFFSET>,
            GetTimeFormat: GetTimeFormat::<Identity, Impl, OFFSET>,
            IsUsingTimeFormat: IsUsingTimeFormat::<Identity, Impl, OFFSET>,
            SetTimeFormat: SetTimeFormat::<Identity, Impl, OFFSET>,
            GetDuration: GetDuration::<Identity, Impl, OFFSET>,
            GetStopPosition: GetStopPosition::<Identity, Impl, OFFSET>,
            GetCurrentPosition: GetCurrentPosition::<Identity, Impl, OFFSET>,
            ConvertTimeFormat: ConvertTimeFormat::<Identity, Impl, OFFSET>,
            SetPositions: SetPositions::<Identity, Impl, OFFSET>,
            GetPositions: GetPositions::<Identity, Impl, OFFSET>,
            GetAvailable: GetAvailable::<Identity, Impl, OFFSET>,
            SetRate: SetRate::<Identity, Impl, OFFSET>,
            GetRate: GetRate::<Identity, Impl, OFFSET>,
            GetPreroll: GetPreroll::<Identity, Impl, 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: &::core::option::Option<IMediaStream>, dwflags: u32) -> ::windows::core::Result<()>;
    fn AllocateSample(&self, dwflags: u32) -> ::windows::core::Result<IStreamSample>;
    fn CreateSharedSample(&self, pexistingsample: &::core::option::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<Impl = Impl>, Impl: IMediaStream_Impl, const OFFSET: isize>() -> IMediaStream_Vtbl {
        unsafe extern "system" fn GetMultiMediaStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppmultimediastream: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMultiMediaStream() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppmultimediastream, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetInformation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppurposeid: *mut ::windows::core::GUID, ptype: *mut STREAM_TYPE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetInformation(::core::mem::transmute_copy(&ppurposeid), ::core::mem::transmute_copy(&ptype)).into()
        }
        unsafe extern "system" fn SetSameFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstreamthathasdesiredformat: *mut ::core::ffi::c_void, dwflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSameFormat(::core::mem::transmute(&pstreamthathasdesiredformat), ::core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn AllocateSample<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwflags: u32, ppsample: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AllocateSample(::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppsample, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CreateSharedSample<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStream_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CreateSharedSample(::core::mem::transmute(&pexistingsample), ::core::mem::transmute_copy(&dwflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppnewsample, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SendEndOfStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SendEndOfStream(::core::mem::transmute_copy(&dwflags)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetMultiMediaStream: GetMultiMediaStream::<Identity, Impl, OFFSET>,
            GetInformation: GetInformation::<Identity, Impl, OFFSET>,
            SetSameFormat: SetSameFormat::<Identity, Impl, OFFSET>,
            AllocateSample: AllocateSample::<Identity, Impl, OFFSET>,
            CreateSharedSample: CreateSharedSample::<Identity, Impl, OFFSET>,
            SendEndOfStream: SendEndOfStream::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMediaStream as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
pub trait IMediaStreamFilter_Impl: Sized + IBaseFilter_Impl {
    fn AddMediaStream(&self, pammediastream: &::core::option::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) -> ::windows::core::Result<i64>;
    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(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
impl ::windows::core::RuntimeName for IMediaStreamFilter {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com"))]
impl IMediaStreamFilter_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStreamFilter_Impl, const OFFSET: isize>() -> IMediaStreamFilter_Vtbl {
        unsafe extern "system" fn AddMediaStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStreamFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pammediastream: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AddMediaStream(::core::mem::transmute(&pammediastream)).into()
        }
        unsafe extern "system" fn GetMediaStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStreamFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, idpurpose: *const ::windows::core::GUID, ppmediastream: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMediaStream(::core::mem::transmute_copy(&idpurpose)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppmediastream, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumMediaStreams<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStreamFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: i32, ppmediastream: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumMediaStreams(::core::mem::transmute_copy(&index)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppmediastream, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SupportSeeking<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStreamFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brenderer: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SupportSeeking(::core::mem::transmute_copy(&brenderer)).into()
        }
        unsafe extern "system" fn ReferenceTimeToStreamTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStreamFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptime: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ReferenceTimeToStreamTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ptime, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentStreamTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStreamFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcurrentstreamtime: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentStreamTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcurrentstreamtime, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn WaitUntil<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStreamFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, waitstreamtime: i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.WaitUntil(::core::mem::transmute_copy(&waitstreamtime)).into()
        }
        unsafe extern "system" fn Flush<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStreamFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bcanceleos: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Flush(::core::mem::transmute_copy(&bcanceleos)).into()
        }
        unsafe extern "system" fn EndOfStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaStreamFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EndOfStream().into()
        }
        Self {
            base__: IBaseFilter_Vtbl::new::<Identity, Impl, OFFSET>(),
            AddMediaStream: AddMediaStream::<Identity, Impl, OFFSET>,
            GetMediaStream: GetMediaStream::<Identity, Impl, OFFSET>,
            EnumMediaStreams: EnumMediaStreams::<Identity, Impl, OFFSET>,
            SupportSeeking: SupportSeeking::<Identity, Impl, OFFSET>,
            ReferenceTimeToStreamTime: ReferenceTimeToStreamTime::<Identity, Impl, OFFSET>,
            GetCurrentStreamTime: GetCurrentStreamTime::<Identity, Impl, OFFSET>,
            WaitUntil: WaitUntil::<Identity, Impl, OFFSET>,
            Flush: Flush::<Identity, Impl, OFFSET>,
            EndOfStream: EndOfStream::<Identity, Impl, 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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IMediaTypeInfo {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMediaTypeInfo_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaTypeInfo_Impl, const OFFSET: isize>() -> IMediaTypeInfo_Vtbl {
        unsafe extern "system" fn Type<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaTypeInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strtype: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Type() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(strtype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Subtype<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMediaTypeInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strtype: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Subtype() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(strtype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Type: Type::<Identity, Impl, OFFSET>,
            Subtype: Subtype::<Identity, Impl, 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 ::core::option::Option<IMediaSample>, pstarttime: *const i64, pendtime: *const i64, dwflags: u32) -> ::windows::core::Result<()>;
    fn ReleaseBuffer(&self, pbuffer: &::core::option::Option<IMediaSample>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IMemAllocator {}
impl IMemAllocator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemAllocator_Impl, const OFFSET: isize>() -> IMemAllocator_Vtbl {
        unsafe extern "system" fn SetProperties<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prequest: *const ALLOCATOR_PROPERTIES, pactual: *mut ALLOCATOR_PROPERTIES) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SetProperties(::core::mem::transmute_copy(&prequest)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pactual, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProperties<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pprops: *mut ALLOCATOR_PROPERTIES) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetProperties() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pprops, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Commit<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Commit().into()
        }
        unsafe extern "system" fn Decommit<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Decommit().into()
        }
        unsafe extern "system" fn GetBuffer<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemAllocator_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetBuffer(::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<Impl = Impl>, Impl: IMemAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbuffer: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReleaseBuffer(::core::mem::transmute(&pbuffer)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetProperties: SetProperties::<Identity, Impl, OFFSET>,
            GetProperties: GetProperties::<Identity, Impl, OFFSET>,
            Commit: Commit::<Identity, Impl, OFFSET>,
            Decommit: Decommit::<Identity, Impl, OFFSET>,
            GetBuffer: GetBuffer::<Identity, Impl, OFFSET>,
            ReleaseBuffer: ReleaseBuffer::<Identity, Impl, 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: &::core::option::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<Impl = Impl>, Impl: IMemAllocatorCallbackTemp_Impl, const OFFSET: isize>() -> IMemAllocatorCallbackTemp_Vtbl {
        unsafe extern "system" fn SetNotify<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemAllocatorCallbackTemp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pnotify: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetNotify(::core::mem::transmute(&pnotify)).into()
        }
        unsafe extern "system" fn GetFreeCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemAllocatorCallbackTemp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plbuffersfree: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetFreeCount() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plbuffersfree, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IMemAllocator_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetNotify: SetNotify::<Identity, Impl, OFFSET>,
            GetFreeCount: GetFreeCount::<Identity, Impl, 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<Impl = Impl>, Impl: IMemAllocatorNotifyCallbackTemp_Impl, const OFFSET: isize>() -> IMemAllocatorNotifyCallbackTemp_Vtbl {
        unsafe extern "system" fn NotifyRelease<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemAllocatorNotifyCallbackTemp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NotifyRelease().into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), NotifyRelease: NotifyRelease::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMemAllocatorNotifyCallbackTemp as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IMemInputPin_Impl: Sized {
    fn GetAllocator(&self) -> ::windows::core::Result<IMemAllocator>;
    fn NotifyAllocator(&self, pallocator: &::core::option::Option<IMemAllocator>, breadonly: super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
    fn GetAllocatorRequirements(&self) -> ::windows::core::Result<ALLOCATOR_PROPERTIES>;
    fn Receive(&self, psample: &::core::option::Option<IMediaSample>) -> ::windows::core::Result<()>;
    fn ReceiveMultiple(&self, psamples: *const ::core::option::Option<IMediaSample>, nsamples: i32) -> ::windows::core::Result<i32>;
    fn ReceiveCanBlock(&self) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IMemInputPin {}
#[cfg(feature = "Win32_Foundation")]
impl IMemInputPin_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemInputPin_Impl, const OFFSET: isize>() -> IMemInputPin_Vtbl {
        unsafe extern "system" fn GetAllocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemInputPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppallocator: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAllocator() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppallocator, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn NotifyAllocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemInputPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pallocator: *mut ::core::ffi::c_void, breadonly: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NotifyAllocator(::core::mem::transmute(&pallocator), ::core::mem::transmute_copy(&breadonly)).into()
        }
        unsafe extern "system" fn GetAllocatorRequirements<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemInputPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pprops: *mut ALLOCATOR_PROPERTIES) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAllocatorRequirements() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pprops, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Receive<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemInputPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psample: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Receive(::core::mem::transmute(&psample)).into()
        }
        unsafe extern "system" fn ReceiveMultiple<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemInputPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psamples: *const *mut ::core::ffi::c_void, nsamples: i32, nsamplesprocessed: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ReceiveMultiple(::core::mem::transmute_copy(&psamples), ::core::mem::transmute_copy(&nsamples)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(nsamplesprocessed, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ReceiveCanBlock<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemInputPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReceiveCanBlock().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAllocator: GetAllocator::<Identity, Impl, OFFSET>,
            NotifyAllocator: NotifyAllocator::<Identity, Impl, OFFSET>,
            GetAllocatorRequirements: GetAllocatorRequirements::<Identity, Impl, OFFSET>,
            Receive: Receive::<Identity, Impl, OFFSET>,
            ReceiveMultiple: ReceiveMultiple::<Identity, Impl, OFFSET>,
            ReceiveCanBlock: ReceiveCanBlock::<Identity, Impl, 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<Impl = Impl>, Impl: IMemoryData_Impl, const OFFSET: isize>() -> IMemoryData_Vtbl {
        unsafe extern "system" fn SetBuffer<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMemoryData_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cbsize: u32, pbdata: *const u8, dwflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBuffer(::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<Impl = Impl>, Impl: IMemoryData_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwlength: *mut u32, ppbdata: *mut *mut u8, pcbactualdata: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetInfo(::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<Impl = Impl>, Impl: IMemoryData_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cbdatavalid: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetActual(::core::mem::transmute_copy(&cbdatavalid)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetBuffer: SetBuffer::<Identity, Impl, OFFSET>,
            GetInfo: GetInfo::<Identity, Impl, OFFSET>,
            SetActual: SetActual::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMemoryData as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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: &::core::option::Option<IMixerOCXNotify>) -> ::windows::core::Result<()>;
    fn UnAdvise(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IMixerOCX {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl IMixerOCX_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerOCX_Impl, const OFFSET: isize>() -> IMixerOCX_Vtbl {
        unsafe extern "system" fn OnDisplayChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerOCX_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulbitsperpixel: u32, ulscreenwidth: u32, ulscreenheight: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnDisplayChange(::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<Impl = Impl>, Impl: IMixerOCX_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwpictaspectratiox: *mut u32, pdwpictaspectratioy: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAspectRatio(::core::mem::transmute_copy(&pdwpictaspectratiox), ::core::mem::transmute_copy(&pdwpictaspectratioy)).into()
        }
        unsafe extern "system" fn GetVideoSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerOCX_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwvideowidth: *mut u32, pdwvideoheight: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetVideoSize(::core::mem::transmute_copy(&pdwvideowidth), ::core::mem::transmute_copy(&pdwvideoheight)).into()
        }
        unsafe extern "system" fn GetStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerOCX_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwstatus: *mut *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStatus() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwstatus, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OnDraw<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerOCX_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hdcdraw: super::super::Graphics::Gdi::HDC, prcdraw: *const super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnDraw(::core::mem::transmute_copy(&hdcdraw), ::core::mem::transmute_copy(&prcdraw)).into()
        }
        unsafe extern "system" fn SetDrawRegion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerOCX_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDrawRegion(::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<Impl = Impl>, Impl: IMixerOCX_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmdns: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Advise(::core::mem::transmute(&pmdns)).into()
        }
        unsafe extern "system" fn UnAdvise<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerOCX_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnAdvise().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnDisplayChange: OnDisplayChange::<Identity, Impl, OFFSET>,
            GetAspectRatio: GetAspectRatio::<Identity, Impl, OFFSET>,
            GetVideoSize: GetVideoSize::<Identity, Impl, OFFSET>,
            GetStatus: GetStatus::<Identity, Impl, OFFSET>,
            OnDraw: OnDraw::<Identity, Impl, OFFSET>,
            SetDrawRegion: SetDrawRegion::<Identity, Impl, OFFSET>,
            Advise: Advise::<Identity, Impl, OFFSET>,
            UnAdvise: UnAdvise::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMixerOCX as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IMixerOCXNotify {}
#[cfg(feature = "Win32_Foundation")]
impl IMixerOCXNotify_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerOCXNotify_Impl, const OFFSET: isize>() -> IMixerOCXNotify_Vtbl {
        unsafe extern "system" fn OnInvalidateRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerOCXNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpcrect: *const super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnInvalidateRect(::core::mem::transmute_copy(&lpcrect)).into()
        }
        unsafe extern "system" fn OnStatusChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerOCXNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulstatusflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnStatusChange(::core::mem::transmute_copy(&ulstatusflags)).into()
        }
        unsafe extern "system" fn OnDataChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerOCXNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, uldataflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnDataChange(::core::mem::transmute_copy(&uldataflags)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnInvalidateRect: OnInvalidateRect::<Identity, Impl, OFFSET>,
            OnStatusChange: OnStatusChange::<Identity, Impl, OFFSET>,
            OnDataChange: OnDataChange::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMixerOCXNotify as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IMixerPinConfig {}
#[cfg(feature = "Win32_Foundation")]
impl IMixerPinConfig_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerPinConfig_Impl, const OFFSET: isize>() -> IMixerPinConfig_Vtbl {
        unsafe extern "system" fn SetRelativePosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerPinConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwleft: u32, dwtop: u32, dwright: u32, dwbottom: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRelativePosition(::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<Impl = Impl>, Impl: IMixerPinConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwleft: *mut u32, pdwtop: *mut u32, pdwright: *mut u32, pdwbottom: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRelativePosition(::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<Impl = Impl>, Impl: IMixerPinConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwzorder: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetZOrder(::core::mem::transmute_copy(&dwzorder)).into()
        }
        unsafe extern "system" fn GetZOrder<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerPinConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwzorder: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetZOrder(::core::mem::transmute_copy(&pdwzorder)).into()
        }
        unsafe extern "system" fn SetColorKey<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerPinConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcolorkey: *mut COLORKEY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetColorKey(::core::mem::transmute_copy(&pcolorkey)).into()
        }
        unsafe extern "system" fn GetColorKey<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerPinConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcolorkey: *mut COLORKEY, pcolor: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetColorKey(::core::mem::transmute_copy(&pcolorkey), ::core::mem::transmute_copy(&pcolor)).into()
        }
        unsafe extern "system" fn SetBlendingParameter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerPinConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwblendingparameter: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBlendingParameter(::core::mem::transmute_copy(&dwblendingparameter)).into()
        }
        unsafe extern "system" fn GetBlendingParameter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerPinConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwblendingparameter: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetBlendingParameter(::core::mem::transmute_copy(&pdwblendingparameter)).into()
        }
        unsafe extern "system" fn SetAspectRatioMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerPinConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, amaspectratiomode: AM_ASPECT_RATIO_MODE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAspectRatioMode(::core::mem::transmute_copy(&amaspectratiomode)).into()
        }
        unsafe extern "system" fn GetAspectRatioMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerPinConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pamaspectratiomode: *mut AM_ASPECT_RATIO_MODE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAspectRatioMode(::core::mem::transmute_copy(&pamaspectratiomode)).into()
        }
        unsafe extern "system" fn SetStreamTransparent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerPinConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bstreamtransparent: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStreamTransparent(::core::mem::transmute_copy(&bstreamtransparent)).into()
        }
        unsafe extern "system" fn GetStreamTransparent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerPinConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbstreamtransparent: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetStreamTransparent(::core::mem::transmute_copy(&pbstreamtransparent)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetRelativePosition: SetRelativePosition::<Identity, Impl, OFFSET>,
            GetRelativePosition: GetRelativePosition::<Identity, Impl, OFFSET>,
            SetZOrder: SetZOrder::<Identity, Impl, OFFSET>,
            GetZOrder: GetZOrder::<Identity, Impl, OFFSET>,
            SetColorKey: SetColorKey::<Identity, Impl, OFFSET>,
            GetColorKey: GetColorKey::<Identity, Impl, OFFSET>,
            SetBlendingParameter: SetBlendingParameter::<Identity, Impl, OFFSET>,
            GetBlendingParameter: GetBlendingParameter::<Identity, Impl, OFFSET>,
            SetAspectRatioMode: SetAspectRatioMode::<Identity, Impl, OFFSET>,
            GetAspectRatioMode: GetAspectRatioMode::<Identity, Impl, OFFSET>,
            SetStreamTransparent: SetStreamTransparent::<Identity, Impl, OFFSET>,
            GetStreamTransparent: GetStreamTransparent::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMixerPinConfig as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl ::windows::core::RuntimeName for IMixerPinConfig2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl IMixerPinConfig2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerPinConfig2_Impl, const OFFSET: isize>() -> IMixerPinConfig2_Vtbl {
        unsafe extern "system" fn SetOverlaySurfaceColorControls<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerPinConfig2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcolorcontrol: *mut super::super::Graphics::DirectDraw::DDCOLORCONTROL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOverlaySurfaceColorControls(::core::mem::transmute_copy(&pcolorcontrol)).into()
        }
        unsafe extern "system" fn GetOverlaySurfaceColorControls<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMixerPinConfig2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcolorcontrol: *mut super::super::Graphics::DirectDraw::DDCOLORCONTROL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetOverlaySurfaceColorControls(::core::mem::transmute_copy(&pcolorcontrol)).into()
        }
        Self {
            base__: IMixerPinConfig_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetOverlaySurfaceColorControls: SetOverlaySurfaceColorControls::<Identity, Impl, OFFSET>,
            GetOverlaySurfaceColorControls: GetOverlaySurfaceColorControls::<Identity, Impl, 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_Foundation")]
pub trait IMpeg2Data_Impl: Sized {
    fn GetSection(&self, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, dwtimeout: u32) -> ::windows::core::Result<ISectionList>;
    fn GetTable(&self, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, dwtimeout: u32) -> ::windows::core::Result<ISectionList>;
    fn GetStreamOfSections(&self, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, hdatareadyevent: super::super::Foundation::HANDLE) -> ::windows::core::Result<IMpeg2Stream>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IMpeg2Data {}
#[cfg(feature = "Win32_Foundation")]
impl IMpeg2Data_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2Data_Impl, const OFFSET: isize>() -> IMpeg2Data_Vtbl {
        unsafe extern "system" fn GetSection<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2Data_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, dwtimeout: u32, ppsectionlist: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSection(::core::mem::transmute_copy(&pid), ::core::mem::transmute_copy(&tid), ::core::mem::transmute_copy(&pfilter), ::core::mem::transmute_copy(&dwtimeout)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppsectionlist, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2Data_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, dwtimeout: u32, ppsectionlist: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTable(::core::mem::transmute_copy(&pid), ::core::mem::transmute_copy(&tid), ::core::mem::transmute_copy(&pfilter), ::core::mem::transmute_copy(&dwtimeout)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppsectionlist, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStreamOfSections<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2Data_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, hdatareadyevent: super::super::Foundation::HANDLE, ppmpegstream: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStreamOfSections(::core::mem::transmute_copy(&pid), ::core::mem::transmute_copy(&tid), ::core::mem::transmute_copy(&pfilter), ::core::mem::transmute_copy(&hdatareadyevent)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppmpegstream, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSection: GetSection::<Identity, Impl, OFFSET>,
            GetTable: GetTable::<Identity, Impl, OFFSET>,
            GetStreamOfSections: GetStreamOfSections::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMpeg2Data as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
pub trait IMpeg2Demultiplexer_Impl: Sized {
    fn CreateOutputPin(&self, pmediatype: *mut super::MediaFoundation::AM_MEDIA_TYPE, pszpinname: &::windows::core::PCWSTR, ppipin: *mut ::core::option::Option<IPin>) -> ::windows::core::Result<()>;
    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(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IMpeg2Demultiplexer {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl IMpeg2Demultiplexer_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2Demultiplexer_Impl, const OFFSET: isize>() -> IMpeg2Demultiplexer_Vtbl {
        unsafe extern "system" fn CreateOutputPin<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2Demultiplexer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmediatype: *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>, pszpinname: ::windows::core::PCWSTR, ppipin: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CreateOutputPin(::core::mem::transmute_copy(&pmediatype), ::core::mem::transmute(&pszpinname), ::core::mem::transmute_copy(&ppipin)).into()
        }
        unsafe extern "system" fn SetOutputPinMediaType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2Demultiplexer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszpinname: ::windows::core::PCWSTR, pmediatype: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOutputPinMediaType(::core::mem::transmute(&pszpinname), ::core::mem::transmute_copy(&pmediatype)).into()
        }
        unsafe extern "system" fn DeleteOutputPin<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2Demultiplexer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszpinname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DeleteOutputPin(::core::mem::transmute(&pszpinname)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CreateOutputPin: CreateOutputPin::<Identity, Impl, OFFSET>,
            SetOutputPinMediaType: SetOutputPinMediaType::<Identity, Impl, OFFSET>,
            DeleteOutputPin: DeleteOutputPin::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMpeg2Demultiplexer as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IMpeg2Stream_Impl: Sized {
    fn Initialize(&self, requesttype: MPEG_REQUEST_TYPE, pmpeg2data: &::core::option::Option<IMpeg2Data>, pcontext: *const MPEG_CONTEXT, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, hdatareadyevent: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn SupplyDataBuffer(&self, pstreambuffer: *const MPEG_STREAM_BUFFER) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IMpeg2Stream {}
#[cfg(feature = "Win32_Foundation")]
impl IMpeg2Stream_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2Stream_Impl, const OFFSET: isize>() -> IMpeg2Stream_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2Stream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, requesttype: MPEG_REQUEST_TYPE, pmpeg2data: *mut ::core::ffi::c_void, pcontext: *const MPEG_CONTEXT, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, hdatareadyevent: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute_copy(&requesttype), ::core::mem::transmute(&pmpeg2data), ::core::mem::transmute_copy(&pcontext), ::core::mem::transmute_copy(&pid), ::core::mem::transmute_copy(&tid), ::core::mem::transmute_copy(&pfilter), ::core::mem::transmute_copy(&hdatareadyevent)).into()
        }
        unsafe extern "system" fn SupplyDataBuffer<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2Stream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstreambuffer: *const MPEG_STREAM_BUFFER) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SupplyDataBuffer(::core::mem::transmute_copy(&pstreambuffer)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            SupplyDataBuffer: SupplyDataBuffer::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMpeg2Stream as ::windows::core::Interface>::IID
    }
}
pub trait IMpeg2TableFilter_Impl: Sized {
    fn AddPID(&self, p: u16) -> ::windows::core::Result<()>;
    fn AddTable(&self, p: u16, t: u8) -> ::windows::core::Result<()>;
    fn AddExtension(&self, p: u16, t: u8, e: u16) -> ::windows::core::Result<()>;
    fn RemovePID(&self, p: u16) -> ::windows::core::Result<()>;
    fn RemoveTable(&self, p: u16, t: u8) -> ::windows::core::Result<()>;
    fn RemoveExtension(&self, p: u16, t: u8, e: u16) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IMpeg2TableFilter {}
impl IMpeg2TableFilter_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2TableFilter_Impl, const OFFSET: isize>() -> IMpeg2TableFilter_Vtbl {
        unsafe extern "system" fn AddPID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2TableFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, p: u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AddPID(::core::mem::transmute_copy(&p)).into()
        }
        unsafe extern "system" fn AddTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2TableFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, p: u16, t: u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AddTable(::core::mem::transmute_copy(&p), ::core::mem::transmute_copy(&t)).into()
        }
        unsafe extern "system" fn AddExtension<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2TableFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, p: u16, t: u8, e: u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AddExtension(::core::mem::transmute_copy(&p), ::core::mem::transmute_copy(&t), ::core::mem::transmute_copy(&e)).into()
        }
        unsafe extern "system" fn RemovePID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2TableFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, p: u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RemovePID(::core::mem::transmute_copy(&p)).into()
        }
        unsafe extern "system" fn RemoveTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2TableFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, p: u16, t: u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RemoveTable(::core::mem::transmute_copy(&p), ::core::mem::transmute_copy(&t)).into()
        }
        unsafe extern "system" fn RemoveExtension<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpeg2TableFilter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, p: u16, t: u8, e: u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RemoveExtension(::core::mem::transmute_copy(&p), ::core::mem::transmute_copy(&t), ::core::mem::transmute_copy(&e)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddPID: AddPID::<Identity, Impl, OFFSET>,
            AddTable: AddTable::<Identity, Impl, OFFSET>,
            AddExtension: AddExtension::<Identity, Impl, OFFSET>,
            RemovePID: RemovePID::<Identity, Impl, OFFSET>,
            RemoveTable: RemoveTable::<Identity, Impl, OFFSET>,
            RemoveExtension: RemoveExtension::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMpeg2TableFilter 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) -> ::windows::core::Result<MPEG1WAVEFORMAT>;
}
#[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<Impl = Impl>, Impl: IMpegAudioDecoder_Impl, const OFFSET: isize>() -> IMpegAudioDecoder_Vtbl {
        unsafe extern "system" fn FrequencyDivider<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpegAudioDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdivider: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FrequencyDivider() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdivider, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFrequencyDivider<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpegAudioDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, divider: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFrequencyDivider(::core::mem::transmute_copy(&divider)).into()
        }
        unsafe extern "system" fn DecoderAccuracy<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpegAudioDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, paccuracy: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DecoderAccuracy() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(paccuracy, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDecoderAccuracy<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpegAudioDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, accuracy: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDecoderAccuracy(::core::mem::transmute_copy(&accuracy)).into()
        }
        unsafe extern "system" fn Stereo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpegAudioDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstereo: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Stereo() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstereo, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStereo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpegAudioDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, stereo: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStereo(::core::mem::transmute_copy(&stereo)).into()
        }
        unsafe extern "system" fn DecoderWordSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpegAudioDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwordsize: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DecoderWordSize() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwordsize, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDecoderWordSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpegAudioDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, wordsize: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDecoderWordSize(::core::mem::transmute_copy(&wordsize)).into()
        }
        unsafe extern "system" fn IntegerDecode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpegAudioDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pintdecode: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IntegerDecode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pintdecode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetIntegerDecode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpegAudioDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, intdecode: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetIntegerDecode(::core::mem::transmute_copy(&intdecode)).into()
        }
        unsafe extern "system" fn DualMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpegAudioDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pintdecode: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DualMode(::core::mem::transmute_copy(&pintdecode)).into()
        }
        unsafe extern "system" fn SetDualMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpegAudioDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, intdecode: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDualMode(::core::mem::transmute_copy(&intdecode)).into()
        }
        unsafe extern "system" fn AudioFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMpegAudioDecoder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpfmt: *mut MPEG1WAVEFORMAT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AudioFormat() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpfmt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FrequencyDivider: FrequencyDivider::<Identity, Impl, OFFSET>,
            SetFrequencyDivider: SetFrequencyDivider::<Identity, Impl, OFFSET>,
            DecoderAccuracy: DecoderAccuracy::<Identity, Impl, OFFSET>,
            SetDecoderAccuracy: SetDecoderAccuracy::<Identity, Impl, OFFSET>,
            Stereo: Stereo::<Identity, Impl, OFFSET>,
            SetStereo: SetStereo::<Identity, Impl, OFFSET>,
            DecoderWordSize: DecoderWordSize::<Identity, Impl, OFFSET>,
            SetDecoderWordSize: SetDecoderWordSize::<Identity, Impl, OFFSET>,
            IntegerDecode: IntegerDecode::<Identity, Impl, OFFSET>,
            SetIntegerDecode: SetIntegerDecode::<Identity, Impl, OFFSET>,
            DualMode: DualMode::<Identity, Impl, OFFSET>,
            SetDualMode: SetDualMode::<Identity, Impl, OFFSET>,
            AudioFormat: AudioFormat::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMpegAudioDecoder as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IMultiMediaStream {}
#[cfg(feature = "Win32_Foundation")]
impl IMultiMediaStream_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMultiMediaStream_Impl, const OFFSET: isize>() -> IMultiMediaStream_Vtbl {
        unsafe extern "system" fn GetInformation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwflags: *mut MMSSF_GET_INFORMATION_FLAGS, pstreamtype: *mut STREAM_TYPE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetInformation(::core::mem::transmute_copy(&pdwflags), ::core::mem::transmute_copy(&pstreamtype)).into()
        }
        unsafe extern "system" fn GetMediaStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, idpurpose: *const ::windows::core::GUID, ppmediastream: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMediaStream(::core::mem::transmute_copy(&idpurpose)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppmediastream, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumMediaStreams<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: i32, ppmediastream: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumMediaStreams(::core::mem::transmute_copy(&index)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppmediastream, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcurrentstate: *mut STREAM_STATE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetState() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcurrentstate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newstate: STREAM_STATE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetState(::core::mem::transmute_copy(&newstate)).into()
        }
        unsafe extern "system" fn GetTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcurrenttime: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcurrenttime, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDuration<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pduration: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDuration() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pduration, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Seek<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, seektime: i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Seek(::core::mem::transmute_copy(&seektime)).into()
        }
        unsafe extern "system" fn GetEndOfStreamEventHandle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IMultiMediaStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pheos: *mut super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEndOfStreamEventHandle() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pheos, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInformation: GetInformation::<Identity, Impl, OFFSET>,
            GetMediaStream: GetMediaStream::<Identity, Impl, OFFSET>,
            EnumMediaStreams: EnumMediaStreams::<Identity, Impl, OFFSET>,
            GetState: GetState::<Identity, Impl, OFFSET>,
            SetState: SetState::<Identity, Impl, OFFSET>,
            GetTime: GetTime::<Identity, Impl, OFFSET>,
            GetDuration: GetDuration::<Identity, Impl, OFFSET>,
            Seek: Seek::<Identity, Impl, OFFSET>,
            GetEndOfStreamEventHandle: GetEndOfStreamEventHandle::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IMultiMediaStream as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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: &::core::option::Option<IOverlayNotify>, dwinterests: u32) -> ::windows::core::Result<()>;
    fn Unadvise(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IOverlay {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl IOverlay_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlay_Impl, const OFFSET: isize>() -> IOverlay_Vtbl {
        unsafe extern "system" fn GetPalette<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlay_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwcolors: *mut u32, pppalette: *mut *mut super::super::Graphics::Gdi::PALETTEENTRY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetPalette(::core::mem::transmute_copy(&pdwcolors), ::core::mem::transmute_copy(&pppalette)).into()
        }
        unsafe extern "system" fn SetPalette<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlay_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwcolors: u32, ppalette: *const super::super::Graphics::Gdi::PALETTEENTRY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPalette(::core::mem::transmute_copy(&dwcolors), ::core::mem::transmute_copy(&ppalette)).into()
        }
        unsafe extern "system" fn GetDefaultColorKey<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlay_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcolorkey: *mut COLORKEY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDefaultColorKey() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcolorkey, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetColorKey<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlay_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcolorkey: *mut COLORKEY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetColorKey() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcolorkey, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetColorKey<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlay_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcolorkey: *mut COLORKEY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetColorKey(::core::mem::transmute_copy(&pcolorkey)).into()
        }
        unsafe extern "system" fn GetWindowHandle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlay_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phwnd: *mut super::super::Foundation::HWND) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetWindowHandle() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(phwnd, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetClipList<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlay_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetClipList(::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<Impl = Impl>, Impl: IOverlay_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psourcerect: *mut super::super::Foundation::RECT, pdestinationrect: *mut super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetVideoPosition(::core::mem::transmute_copy(&psourcerect), ::core::mem::transmute_copy(&pdestinationrect)).into()
        }
        unsafe extern "system" fn Advise<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlay_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, poverlaynotify: *mut ::core::ffi::c_void, dwinterests: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Advise(::core::mem::transmute(&poverlaynotify), ::core::mem::transmute_copy(&dwinterests)).into()
        }
        unsafe extern "system" fn Unadvise<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlay_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Unadvise().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPalette: GetPalette::<Identity, Impl, OFFSET>,
            SetPalette: SetPalette::<Identity, Impl, OFFSET>,
            GetDefaultColorKey: GetDefaultColorKey::<Identity, Impl, OFFSET>,
            GetColorKey: GetColorKey::<Identity, Impl, OFFSET>,
            SetColorKey: SetColorKey::<Identity, Impl, OFFSET>,
            GetWindowHandle: GetWindowHandle::<Identity, Impl, OFFSET>,
            GetClipList: GetClipList::<Identity, Impl, OFFSET>,
            GetVideoPosition: GetVideoPosition::<Identity, Impl, OFFSET>,
            Advise: Advise::<Identity, Impl, OFFSET>,
            Unadvise: Unadvise::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IOverlay as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IOverlayNotify {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl IOverlayNotify_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlayNotify_Impl, const OFFSET: isize>() -> IOverlayNotify_Vtbl {
        unsafe extern "system" fn OnPaletteChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlayNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwcolors: u32, ppalette: *const super::super::Graphics::Gdi::PALETTEENTRY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnPaletteChange(::core::mem::transmute_copy(&dwcolors), ::core::mem::transmute_copy(&ppalette)).into()
        }
        unsafe extern "system" fn OnClipChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlayNotify_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnClipChange(::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<Impl = Impl>, Impl: IOverlayNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcolorkey: *const COLORKEY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnColorKeyChange(::core::mem::transmute_copy(&pcolorkey)).into()
        }
        unsafe extern "system" fn OnPositionChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlayNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psourcerect: *const super::super::Foundation::RECT, pdestinationrect: *const super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnPositionChange(::core::mem::transmute_copy(&psourcerect), ::core::mem::transmute_copy(&pdestinationrect)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnPaletteChange: OnPaletteChange::<Identity, Impl, OFFSET>,
            OnClipChange: OnClipChange::<Identity, Impl, OFFSET>,
            OnColorKeyChange: OnColorKeyChange::<Identity, Impl, OFFSET>,
            OnPositionChange: OnPositionChange::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IOverlayNotify as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
pub trait IOverlayNotify2_Impl: Sized + IOverlayNotify_Impl {
    fn OnDisplayChange(&self, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IOverlayNotify2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl IOverlayNotify2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlayNotify2_Impl, const OFFSET: isize>() -> IOverlayNotify2_Vtbl {
        unsafe extern "system" fn OnDisplayChange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IOverlayNotify2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.OnDisplayChange(::core::mem::transmute_copy(&hmonitor)).into()
        }
        Self { base__: IOverlayNotify_Vtbl::new::<Identity, Impl, OFFSET>(), OnDisplayChange: OnDisplayChange::<Identity, Impl, 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_Foundation")]
pub trait IPAT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetTransportStreamId(&self) -> ::windows::core::Result<u16>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordProgramNumber(&self, dwindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordProgramMapPid(&self, dwindex: u32) -> ::windows::core::Result<u16>;
    fn FindRecordProgramMapPid(&self, wprogramnumber: u16) -> ::windows::core::Result<u16>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn GetNextTable(&self) -> ::windows::core::Result<IPAT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn ConvertNextToCurrent(&self) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IPAT {}
#[cfg(feature = "Win32_Foundation")]
impl IPAT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPAT_Impl, const OFFSET: isize>() -> IPAT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetTransportStreamId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTransportStreamId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordProgramNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordProgramNumber(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordProgramMapPid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordProgramMapPid(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FindRecordProgramMapPid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, wprogramnumber: u16, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FindRecordProgramMapPid(::core::mem::transmute_copy(&wprogramnumber)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForNextTable(::core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pppat: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNextTable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pppat, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForWhenCurrent(::core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPAT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConvertNextToCurrent().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetTransportStreamId: GetTransportStreamId::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordProgramNumber: GetRecordProgramNumber::<Identity, Impl, OFFSET>,
            GetRecordProgramMapPid: GetRecordProgramMapPid::<Identity, Impl, OFFSET>,
            FindRecordProgramMapPid: FindRecordProgramMapPid::<Identity, Impl, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, Impl, OFFSET>,
            GetNextTable: GetNextTable::<Identity, Impl, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, Impl, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPAT as ::windows::core::Interface>::IID
    }
}
pub trait IPBDAAttributesDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u16>;
    fn GetAttributePayload(&self, ppbattributebuffer: *mut *mut u8, pdwattributelength: *mut u32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IPBDAAttributesDescriptor {}
impl IPBDAAttributesDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDAAttributesDescriptor_Impl, const OFFSET: isize>() -> IPBDAAttributesDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDAAttributesDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDAAttributesDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAttributePayload<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDAAttributesDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppbattributebuffer: *mut *mut u8, pdwattributelength: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAttributePayload(::core::mem::transmute_copy(&ppbattributebuffer), ::core::mem::transmute_copy(&pdwattributelength)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetAttributePayload: GetAttributePayload::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPBDAAttributesDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IPBDAEntitlementDescriptor_Impl: Sized {
    fn GetTag(&self) -> ::windows::core::Result<u8>;
    fn GetLength(&self) -> ::windows::core::Result<u16>;
    fn GetToken(&self, ppbtokenbuffer: *mut *mut u8, pdwtokenlength: *mut u32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IPBDAEntitlementDescriptor {}
impl IPBDAEntitlementDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDAEntitlementDescriptor_Impl, const OFFSET: isize>() -> IPBDAEntitlementDescriptor_Vtbl {
        unsafe extern "system" fn GetTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDAEntitlementDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTag() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDAEntitlementDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetToken<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDAEntitlementDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppbtokenbuffer: *mut *mut u8, pdwtokenlength: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetToken(::core::mem::transmute_copy(&ppbtokenbuffer), ::core::mem::transmute_copy(&pdwtokenlength)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, Impl, OFFSET>,
            GetLength: GetLength::<Identity, Impl, OFFSET>,
            GetToken: GetToken::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPBDAEntitlementDescriptor as ::windows::core::Interface>::IID
    }
}
pub trait IPBDASiParser_Impl: Sized {
    fn Initialize(&self, punk: &::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
    fn GetEIT(&self, dwsize: u32, pbuffer: *const u8) -> ::windows::core::Result<IPBDA_EIT>;
    fn GetServices(&self, dwsize: u32, pbuffer: *const u8) -> ::windows::core::Result<IPBDA_Services>;
}
impl ::windows::core::RuntimeName for IPBDASiParser {}
impl IPBDASiParser_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDASiParser_Impl, const OFFSET: isize>() -> IPBDASiParser_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDASiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, punk: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&punk)).into()
        }
        unsafe extern "system" fn GetEIT<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDASiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwsize: u32, pbuffer: *const u8, ppeit: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEIT(::core::mem::transmute_copy(&dwsize), ::core::mem::transmute_copy(&pbuffer)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppeit, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServices<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDASiParser_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwsize: u32, pbuffer: *const u8, ppservices: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServices(::core::mem::transmute_copy(&dwsize), ::core::mem::transmute_copy(&pbuffer)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppservices, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetEIT: GetEIT::<Identity, Impl, OFFSET>,
            GetServices: GetServices::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPBDASiParser as ::windows::core::Interface>::IID
    }
}
pub trait IPBDA_EIT_Impl: Sized {
    fn Initialize(&self, size: u32, pbuffer: *const u8) -> ::windows::core::Result<()>;
    fn GetTableId(&self) -> ::windows::core::Result<u8>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u16>;
    fn GetServiceIdx(&self) -> ::windows::core::Result<u64>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordEventId(&self, dwrecordindex: u32) -> ::windows::core::Result<u64>;
    fn GetRecordStartTime(&self, dwrecordindex: u32) -> ::windows::core::Result<MPEG_DATE_AND_TIME>;
    fn GetRecordDuration(&self, dwrecordindex: u32) -> ::windows::core::Result<MPEG_TIME>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IPBDA_EIT {}
impl IPBDA_EIT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_EIT_Impl, const OFFSET: isize>() -> IPBDA_EIT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, size: u32, pbuffer: *const u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute_copy(&size), ::core::mem::transmute_copy(&pbuffer)).into()
        }
        unsafe extern "system" fn GetTableId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceIdx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, plwval: *mut u64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetServiceIdx() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEventId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, plwval: *mut u64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordEventId(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(plwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordStartTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pmdtval: *mut MPEG_DATE_AND_TIME) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordStartTime(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmdtval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDuration<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pmdval: *mut MPEG_TIME) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDuration(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmdval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfDescriptors(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptorByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_EIT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordDescriptorByTag(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetTableId: GetTableId::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetServiceIdx: GetServiceIdx::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordEventId: GetRecordEventId::<Identity, Impl, OFFSET>,
            GetRecordStartTime: GetRecordStartTime::<Identity, Impl, OFFSET>,
            GetRecordDuration: GetRecordDuration::<Identity, Impl, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPBDA_EIT as ::windows::core::Interface>::IID
    }
}
pub trait IPBDA_Services_Impl: Sized {
    fn Initialize(&self, size: u32, pbuffer: *const u8) -> ::windows::core::Result<()>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u32>;
    fn GetRecordByIndex(&self, dwrecordindex: u32) -> ::windows::core::Result<u64>;
}
impl ::windows::core::RuntimeName for IPBDA_Services {}
impl IPBDA_Services_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_Services_Impl, const OFFSET: isize>() -> IPBDA_Services_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_Services_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, size: u32, pbuffer: *const u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute_copy(&size), ::core::mem::transmute_copy(&pbuffer)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_Services_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPBDA_Services_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pul64serviceidx: *mut u64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordByIndex(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pul64serviceidx, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordByIndex: GetRecordByIndex::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPBDA_Services as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IPMT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetProgramNumber(&self) -> ::windows::core::Result<u16>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetPcrPid(&self) -> ::windows::core::Result<u16>;
    fn GetCountOfTableDescriptors(&self) -> ::windows::core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn GetCountOfRecords(&self) -> ::windows::core::Result<u16>;
    fn GetRecordStreamType(&self, dwrecordindex: u32) -> ::windows::core::Result<u8>;
    fn GetRecordElementaryPid(&self, dwrecordindex: u32) -> ::windows::core::Result<u16>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> ::windows::core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwdescindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn QueryServiceGatewayInfo(&self, ppdsmcclist: *mut *mut DSMCC_ELEMENT, puicount: *mut u32) -> ::windows::core::Result<()>;
    fn QueryMPEInfo(&self, ppmpelist: *mut *mut MPE_ELEMENT, puicount: *mut u32) -> ::windows::core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn GetNextTable(&self) -> ::windows::core::Result<IPMT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn ConvertNextToCurrent(&self) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IPMT {}
#[cfg(feature = "Win32_Foundation")]
impl IPMT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>() -> IPMT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetProgramNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetProgramNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPcrPid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppidval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPcrPid() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppidval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfTableDescriptors() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableDescriptorByIndex(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptorByTag(::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfRecords() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordStreamType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordStreamType(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordElementaryPid<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, ppidval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordElementaryPid(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppidval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordCountOfDescriptors(::core::mem::transmute_copy(&dwrecordindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, dwdescindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRecordDescriptorByIndex(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&dwdescindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordDescriptorByTag(::core::mem::transmute_copy(&dwrecordindex), ::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn QueryServiceGatewayInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppdsmcclist: *mut *mut DSMCC_ELEMENT, puicount: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.QueryServiceGatewayInfo(::core::mem::transmute_copy(&ppdsmcclist), ::core::mem::transmute_copy(&puicount)).into()
        }
        unsafe extern "system" fn QueryMPEInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppmpelist: *mut *mut MPE_ELEMENT, puicount: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.QueryMPEInfo(::core::mem::transmute_copy(&ppmpelist), ::core::mem::transmute_copy(&puicount)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForNextTable(::core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pppmt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNextTable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pppmt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForWhenCurrent(::core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPMT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConvertNextToCurrent().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetProgramNumber: GetProgramNumber::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetPcrPid: GetPcrPid::<Identity, Impl, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, Impl, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, Impl, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, Impl, OFFSET>,
            GetRecordStreamType: GetRecordStreamType::<Identity, Impl, OFFSET>,
            GetRecordElementaryPid: GetRecordElementaryPid::<Identity, Impl, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, Impl, OFFSET>,
            QueryServiceGatewayInfo: QueryServiceGatewayInfo::<Identity, Impl, OFFSET>,
            QueryMPEInfo: QueryMPEInfo::<Identity, Impl, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, Impl, OFFSET>,
            GetNextTable: GetNextTable::<Identity, Impl, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, Impl, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPMT as ::windows::core::Interface>::IID
    }
}
pub trait IPSITables_Impl: Sized {
    fn GetTable(&self, dwtsid: u32, dwtid_pid: u32, dwhashedver: u32, dwpara4: u32) -> ::windows::core::Result<::windows::core::IUnknown>;
}
impl ::windows::core::RuntimeName for IPSITables {}
impl IPSITables_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPSITables_Impl, const OFFSET: isize>() -> IPSITables_Vtbl {
        unsafe extern "system" fn GetTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPSITables_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwtsid: u32, dwtid_pid: u32, dwhashedver: u32, dwpara4: u32, ppiunknown: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTable(::core::mem::transmute_copy(&dwtsid), ::core::mem::transmute_copy(&dwtid_pid), ::core::mem::transmute_copy(&dwhashedver), ::core::mem::transmute_copy(&dwpara4)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppiunknown, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetTable: GetTable::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPSITables as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IPTFilterLicenseRenewal_Impl: Sized {
    fn RenewLicenses(&self, wszfilename: &::windows::core::PCWSTR, wszexpiredkid: &::windows::core::PCWSTR, dwcallersid: u32, bhighpriority: super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
    fn CancelLicenseRenewal(&self) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IPTFilterLicenseRenewal {}
#[cfg(feature = "Win32_Foundation")]
impl IPTFilterLicenseRenewal_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPTFilterLicenseRenewal_Impl, const OFFSET: isize>() -> IPTFilterLicenseRenewal_Vtbl {
        unsafe extern "system" fn RenewLicenses<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPTFilterLicenseRenewal_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, wszfilename: ::windows::core::PCWSTR, wszexpiredkid: ::windows::core::PCWSTR, dwcallersid: u32, bhighpriority: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RenewLicenses(::core::mem::transmute(&wszfilename), ::core::mem::transmute(&wszexpiredkid), ::core::mem::transmute_copy(&dwcallersid), ::core::mem::transmute_copy(&bhighpriority)).into()
        }
        unsafe extern "system" fn CancelLicenseRenewal<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPTFilterLicenseRenewal_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CancelLicenseRenewal().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RenewLicenses: RenewLicenses::<Identity, Impl, OFFSET>,
            CancelLicenseRenewal: CancelLicenseRenewal::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPTFilterLicenseRenewal as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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: &::core::option::Option<IMediaPropertyBag>, perrorlog: &::core::option::Option<super::super::System::Com::IErrorLog>) -> ::windows::core::Result<()>;
    fn Save(&self, ppropbag: &::core::option::Option<IMediaPropertyBag>, fcleardirty: super::super::Foundation::BOOL, fsaveallproperties: super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com_StructuredStorage"))]
impl ::windows::core::RuntimeName for IPersistMediaPropertyBag {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com_StructuredStorage"))]
impl IPersistMediaPropertyBag_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPersistMediaPropertyBag_Impl, const OFFSET: isize>() -> IPersistMediaPropertyBag_Vtbl {
        unsafe extern "system" fn InitNew<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPersistMediaPropertyBag_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.InitNew().into()
        }
        unsafe extern "system" fn Load<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPersistMediaPropertyBag_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppropbag: *mut ::core::ffi::c_void, perrorlog: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Load(::core::mem::transmute(&ppropbag), ::core::mem::transmute(&perrorlog)).into()
        }
        unsafe extern "system" fn Save<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPersistMediaPropertyBag_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Save(::core::mem::transmute(&ppropbag), ::core::mem::transmute_copy(&fcleardirty), ::core::mem::transmute_copy(&fsaveallproperties)).into()
        }
        Self {
            base__: super::super::System::Com::IPersist_Vtbl::new::<Identity, Impl, OFFSET>(),
            InitNew: InitNew::<Identity, Impl, OFFSET>,
            Load: Load::<Identity, Impl, OFFSET>,
            Save: Save::<Identity, Impl, 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_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IPersistTuneXml_Impl: Sized + super::super::System::Com::IPersist_Impl {
    fn InitNew(&self) -> ::windows::core::Result<()>;
    fn Load(&self, varvalue: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
    fn Save(&self) -> ::windows::core::Result<super::super::System::Com::VARIANT>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IPersistTuneXml {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IPersistTuneXml_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPersistTuneXml_Impl, const OFFSET: isize>() -> IPersistTuneXml_Vtbl {
        unsafe extern "system" fn InitNew<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPersistTuneXml_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.InitNew().into()
        }
        unsafe extern "system" fn Load<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPersistTuneXml_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, varvalue: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Load(::core::mem::transmute(&varvalue)).into()
        }
        unsafe extern "system" fn Save<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPersistTuneXml_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvarfragment: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Save() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvarfragment, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IPersist_Vtbl::new::<Identity, Impl, OFFSET>(),
            InitNew: InitNew::<Identity, Impl, OFFSET>,
            Load: Load::<Identity, Impl, OFFSET>,
            Save: Save::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPersistTuneXml as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IPersist as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IPersistTuneXmlUtility_Impl: Sized {
    fn Deserialize(&self, varvalue: &super::super::System::Com::VARIANT) -> ::windows::core::Result<::windows::core::IUnknown>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IPersistTuneXmlUtility {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IPersistTuneXmlUtility_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPersistTuneXmlUtility_Impl, const OFFSET: isize>() -> IPersistTuneXmlUtility_Vtbl {
        unsafe extern "system" fn Deserialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPersistTuneXmlUtility_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, varvalue: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, ppobject: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Deserialize(::core::mem::transmute(&varvalue)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppobject, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Deserialize: Deserialize::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPersistTuneXmlUtility as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IPersistTuneXmlUtility2_Impl: Sized + IPersistTuneXmlUtility_Impl {
    fn Serialize(&self, pitunerequest: &::core::option::Option<ITuneRequest>) -> ::windows::core::Result<::windows::core::BSTR>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IPersistTuneXmlUtility2 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IPersistTuneXmlUtility2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPersistTuneXmlUtility2_Impl, const OFFSET: isize>() -> IPersistTuneXmlUtility2_Vtbl {
        unsafe extern "system" fn Serialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPersistTuneXmlUtility2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pitunerequest: *mut ::core::ffi::c_void, pstring: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Serialize(::core::mem::transmute(&pitunerequest)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pstring, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: IPersistTuneXmlUtility_Vtbl::new::<Identity, Impl, OFFSET>(), Serialize: Serialize::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPersistTuneXmlUtility2 as ::windows::core::Interface>::IID || iid == &<IPersistTuneXmlUtility as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IPin_Impl: Sized {
    fn Connect(&self, preceivepin: &::core::option::Option<IPin>, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> ::windows::core::Result<()>;
    fn ReceiveConnection(&self, pconnector: &::core::option::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) -> ::windows::core::Result<super::MediaFoundation::AM_MEDIA_TYPE>;
    fn QueryPinInfo(&self) -> ::windows::core::Result<PIN_INFO>;
    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::Result<()>;
    fn EnumMediaTypes(&self) -> ::windows::core::Result<IEnumMediaTypes>;
    fn QueryInternalConnections(&self, appin: *mut ::core::option::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_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl ::windows::core::RuntimeName for IPin {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IPin_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>() -> IPin_Vtbl {
        unsafe extern "system" fn Connect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, preceivepin: *mut ::core::ffi::c_void, pmt: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Connect(::core::mem::transmute(&preceivepin), ::core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn ReceiveConnection<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pconnector: *mut ::core::ffi::c_void, pmt: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReceiveConnection(::core::mem::transmute(&pconnector), ::core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn Disconnect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Disconnect().into()
        }
        unsafe extern "system" fn ConnectedTo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppin: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ConnectedTo() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppin, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ConnectionMediaType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmt: *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ConnectionMediaType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryPinInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pinfo: *mut ::core::mem::ManuallyDrop<PIN_INFO>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.QueryPinInfo() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pinfo, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryDirection<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppindir: *mut PIN_DIRECTION) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.QueryDirection() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppindir, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, id: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.QueryId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(id, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryAccept<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmt: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.QueryAccept(::core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn EnumMediaTypes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumMediaTypes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryInternalConnections<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, appin: *mut *mut ::core::ffi::c_void, npin: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.QueryInternalConnections(::core::mem::transmute_copy(&appin), ::core::mem::transmute_copy(&npin)).into()
        }
        unsafe extern "system" fn EndOfStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EndOfStream().into()
        }
        unsafe extern "system" fn BeginFlush<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.BeginFlush().into()
        }
        unsafe extern "system" fn EndFlush<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EndFlush().into()
        }
        unsafe extern "system" fn NewSegment<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tstart: i64, tstop: i64, drate: f64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NewSegment(::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, Impl, OFFSET>,
            ReceiveConnection: ReceiveConnection::<Identity, Impl, OFFSET>,
            Disconnect: Disconnect::<Identity, Impl, OFFSET>,
            ConnectedTo: ConnectedTo::<Identity, Impl, OFFSET>,
            ConnectionMediaType: ConnectionMediaType::<Identity, Impl, OFFSET>,
            QueryPinInfo: QueryPinInfo::<Identity, Impl, OFFSET>,
            QueryDirection: QueryDirection::<Identity, Impl, OFFSET>,
            QueryId: QueryId::<Identity, Impl, OFFSET>,
            QueryAccept: QueryAccept::<Identity, Impl, OFFSET>,
            EnumMediaTypes: EnumMediaTypes::<Identity, Impl, OFFSET>,
            QueryInternalConnections: QueryInternalConnections::<Identity, Impl, OFFSET>,
            EndOfStream: EndOfStream::<Identity, Impl, OFFSET>,
            BeginFlush: BeginFlush::<Identity, Impl, OFFSET>,
            EndFlush: EndFlush::<Identity, Impl, OFFSET>,
            NewSegment: NewSegment::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPin as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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::Result<()>;
    fn DynamicDisconnect(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IPinConnection {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl IPinConnection_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinConnection_Impl, const OFFSET: isize>() -> IPinConnection_Vtbl {
        unsafe extern "system" fn DynamicQueryAccept<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinConnection_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmt: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DynamicQueryAccept(::core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn NotifyEndOfStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinConnection_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnotifyevent: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NotifyEndOfStream(::core::mem::transmute_copy(&hnotifyevent)).into()
        }
        unsafe extern "system" fn IsEndPin<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinConnection_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsEndPin().into()
        }
        unsafe extern "system" fn DynamicDisconnect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinConnection_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DynamicDisconnect().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            DynamicQueryAccept: DynamicQueryAccept::<Identity, Impl, OFFSET>,
            NotifyEndOfStream: NotifyEndOfStream::<Identity, Impl, OFFSET>,
            IsEndPin: IsEndPin::<Identity, Impl, OFFSET>,
            DynamicDisconnect: DynamicDisconnect::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPinConnection as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IPinFlowControl_Impl: Sized {
    fn Block(&self, dwblockflags: u32, hevent: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IPinFlowControl {}
#[cfg(feature = "Win32_Foundation")]
impl IPinFlowControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinFlowControl_Impl, const OFFSET: isize>() -> IPinFlowControl_Vtbl {
        unsafe extern "system" fn Block<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinFlowControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwblockflags: u32, hevent: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Block(::core::mem::transmute_copy(&dwblockflags), ::core::mem::transmute_copy(&hevent)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Block: Block::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IPinFlowControl as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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: &::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
    fn ConnectDirect(&self, ppin: &::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
    fn ConnectWithType(&self, ppin: &::core::option::Option<::windows::core::IUnknown>, pmediatype: &::core::option::Option<super::super::System::Com::IDispatch>) -> ::windows::core::Result<()>;
    fn Disconnect(&self) -> ::windows::core::Result<()>;
    fn Render(&self) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IPinInfo {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IPinInfo_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinInfo_Impl, const OFFSET: isize>() -> IPinInfo_Vtbl {
        unsafe extern "system" fn Pin<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Pin() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ConnectedTo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ConnectedTo() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ConnectionMediaType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.ConnectionMediaType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FilterInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FilterInfo() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Name<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Name() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Direction<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppdirection: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Direction() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdirection, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PinID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strpinid: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PinID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(strpinid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn MediaTypes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MediaTypes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Connect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppin: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Connect(::core::mem::transmute(&ppin)).into()
        }
        unsafe extern "system" fn ConnectDirect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppin: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConnectDirect(::core::mem::transmute(&ppin)).into()
        }
        unsafe extern "system" fn ConnectWithType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppin: *mut ::core::ffi::c_void, pmediatype: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConnectWithType(::core::mem::transmute(&ppin), ::core::mem::transmute(&pmediatype)).into()
        }
        unsafe extern "system" fn Disconnect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Disconnect().into()
        }
        unsafe extern "system" fn Render<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IPinInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Render().into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Pin: Pin::<Identity, Impl, OFFSET>,
            ConnectedTo: ConnectedTo::<Identity, Impl, OFFSET>,
            ConnectionMediaType: ConnectionMediaType::<Identity, Impl, OFFSET>,
            FilterInfo: FilterInfo::<Identity, Impl, OFFSET>,
            Name: Name::<Identity, Impl, OFFSET>,
            Direction: Direction::<Identity, Impl, OFFSET>,
            PinID: PinID::<Identity, Impl, OFFSET>,
            MediaTypes: MediaTypes::<Identity, Impl, OFFSET>,
            Connect: Connect::<Identity, Impl, OFFSET>,
            ConnectDirect: ConnectDirect::<Identity, Impl, OFFSET>,
            ConnectWithType: ConnectWithType::<Identity, Impl, OFFSET>,
            Disconnect: Disconnect::<Identity, Impl, OFFSET>,
            Render: Render::<Identity, Impl, 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<Impl = Impl>, Impl: IQualProp_Impl, const OFFSET: isize>() -> IQualProp_Vtbl {
        unsafe extern "system" fn FramesDroppedInRenderer<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IQualProp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcframes: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FramesDroppedInRenderer() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcframes, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FramesDrawn<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IQualProp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcframesdrawn: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FramesDrawn() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcframesdrawn, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AvgFrameRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IQualProp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, piavgframerate: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AvgFrameRate() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(piavgframerate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Jitter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IQualProp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ijitter: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Jitter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ijitter, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AvgSyncOffset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IQualProp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, piavg: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AvgSyncOffset() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(piavg, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DevSyncOffset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IQualProp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pidev: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DevSyncOffset() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pidev, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FramesDroppedInRenderer: FramesDroppedInRenderer::<Identity, Impl, OFFSET>,
            FramesDrawn: FramesDrawn::<Identity, Impl, OFFSET>,
            AvgFrameRate: AvgFrameRate::<Identity, Impl, OFFSET>,
            Jitter: Jitter::<Identity, Impl, OFFSET>,
            AvgSyncOffset: AvgSyncOffset::<Identity, Impl, OFFSET>,
            DevSyncOffset: DevSyncOffset::<Identity, Impl, 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: &::core::option::Option<IBaseFilter>, q: &Quality) -> ::windows::core::Result<()>;
    fn SetSink(&self, piqc: &::core::option::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<Impl = Impl>, Impl: IQualityControl_Impl, const OFFSET: isize>() -> IQualityControl_Vtbl {
        unsafe extern "system" fn Notify<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IQualityControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pself: *mut ::core::ffi::c_void, q: Quality) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Notify(::core::mem::transmute(&pself), ::core::mem::transmute(&q)).into()
        }
        unsafe extern "system" fn SetSink<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IQualityControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, piqc: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSink(::core::mem::transmute(&piqc)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Notify: Notify::<Identity, Impl, OFFSET>,
            SetSink: SetSink::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IQualityControl as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IQueueCommand_Impl: Sized {
    fn InvokeAtStreamTime(&self, pcmd: *mut ::core::option::Option<IDeferredCommand>, time: f64, iid: *const ::windows::core::GUID, dispidmethod: i32, wflags: i16, cargs: i32, pdispparams: *const super::super::System::Com::VARIANT, pvarresult: *mut super::super::System::Com::VARIANT, puargerr: *mut i16) -> ::windows::core::Result<()>;
    fn InvokeAtPresentationTime(&self, pcmd: *mut ::core::option::Option<IDeferredCommand>, time: f64, iid: *const ::windows::core::GUID, dispidmethod: i32, wflags: i16, cargs: i32, pdispparams: *const super::super::System::Com::VARIANT, pvarresult: *mut super::super::System::Com::VARIANT, puargerr: *mut i16) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IQueueCommand {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IQueueCommand_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IQueueCommand_Impl, const OFFSET: isize>() -> IQueueCommand_Vtbl {
        unsafe extern "system" fn InvokeAtStreamTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IQueueCommand_Impl, 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::ManuallyDrop<super::super::System::Com::VARIANT>, pvarresult: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, puargerr: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.InvokeAtStreamTime(::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<Impl = Impl>, Impl: IQueueCommand_Impl, 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::ManuallyDrop<super::super::System::Com::VARIANT>, pvarresult: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, puargerr: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.InvokeAtPresentationTime(::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, Impl, OFFSET>,
            InvokeAtPresentationTime: InvokeAtPresentationTime::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IQueueCommand as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IRegFilterInfo {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IRegFilterInfo_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IRegFilterInfo_Impl, const OFFSET: isize>() -> IRegFilterInfo_Vtbl {
        unsafe extern "system" fn Name<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IRegFilterInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strname: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Name() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(strname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Filter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IRegFilterInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunk: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Filter() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunk, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Name: Name::<Identity, Impl, OFFSET>,
            Filter: Filter::<Identity, Impl, 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: &::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IRegisterServiceProvider {}
impl IRegisterServiceProvider_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IRegisterServiceProvider_Impl, const OFFSET: isize>() -> IRegisterServiceProvider_Vtbl {
        unsafe extern "system" fn RegisterService<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IRegisterServiceProvider_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guidservice: *const ::windows::core::GUID, punkobject: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterService(::core::mem::transmute_copy(&guidservice), ::core::mem::transmute(&punkobject)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RegisterService: RegisterService::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IRegisterServiceProvider as ::windows::core::Interface>::IID
    }
}
pub trait IRegisterTuner_Impl: Sized {
    fn Register(&self, ptuner: &::core::option::Option<ITuner>, pgraph: &::core::option::Option<IGraphBuilder>) -> ::windows::core::Result<()>;
    fn Unregister(&self) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IRegisterTuner {}
impl IRegisterTuner_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IRegisterTuner_Impl, const OFFSET: isize>() -> IRegisterTuner_Vtbl {
        unsafe extern "system" fn Register<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IRegisterTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptuner: *mut ::core::ffi::c_void, pgraph: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Register(::core::mem::transmute(&ptuner), ::core::mem::transmute(&pgraph)).into()
        }
        unsafe extern "system" fn Unregister<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IRegisterTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Unregister().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Register: Register::<Identity, Impl, OFFSET>,
            Unregister: Unregister::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IRegisterTuner 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<Impl = Impl>, Impl: IResourceConsumer_Impl, const OFFSET: isize>() -> IResourceConsumer_Vtbl {
        unsafe extern "system" fn AcquireResource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IResourceConsumer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, idresource: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AcquireResource(::core::mem::transmute_copy(&idresource)).into()
        }
        unsafe extern "system" fn ReleaseResource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IResourceConsumer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, idresource: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReleaseResource(::core::mem::transmute_copy(&idresource)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AcquireResource: AcquireResource::<Identity, Impl, OFFSET>,
            ReleaseResource: ReleaseResource::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IResourceConsumer as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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: &::core::option::Option<::windows::core::IUnknown>, pconsumer: &::core::option::Option<IResourceConsumer>) -> ::windows::core::Result<()>;
    fn NotifyAcquire(&self, idresource: i32, pconsumer: &::core::option::Option<IResourceConsumer>, hr: ::windows::core::HRESULT) -> ::windows::core::Result<()>;
    fn NotifyRelease(&self, idresource: i32, pconsumer: &::core::option::Option<IResourceConsumer>, bstillwant: super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
    fn CancelRequest(&self, idresource: i32, pconsumer: &::core::option::Option<IResourceConsumer>) -> ::windows::core::Result<()>;
    fn SetFocus(&self, pfocusobject: &::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
    fn ReleaseFocus(&self, pfocusobject: &::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IResourceManager {}
#[cfg(feature = "Win32_Foundation")]
impl IResourceManager_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IResourceManager_Impl, const OFFSET: isize>() -> IResourceManager_Vtbl {
        unsafe extern "system" fn Register<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IResourceManager_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pname: ::windows::core::PCWSTR, cresource: i32, pltoken: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Register(::core::mem::transmute(&pname), ::core::mem::transmute_copy(&cresource)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pltoken, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterGroup<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IResourceManager_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pname: ::windows::core::PCWSTR, cresource: i32, paltokens: *const i32, pltoken: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.RegisterGroup(::core::mem::transmute(&pname), ::core::mem::transmute_copy(&cresource), ::core::mem::transmute_copy(&paltokens)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pltoken, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RequestResource<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IResourceManager_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RequestResource(::core::mem::transmute_copy(&idresource), ::core::mem::transmute(&pfocusobject), ::core::mem::transmute(&pconsumer)).into()
        }
        unsafe extern "system" fn NotifyAcquire<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IResourceManager_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, idresource: i32, pconsumer: *mut ::core::ffi::c_void, hr: ::windows::core::HRESULT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NotifyAcquire(::core::mem::transmute_copy(&idresource), ::core::mem::transmute(&pconsumer), ::core::mem::transmute_copy(&hr)).into()
        }
        unsafe extern "system" fn NotifyRelease<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IResourceManager_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NotifyRelease(::core::mem::transmute_copy(&idresource), ::core::mem::transmute(&pconsumer), ::core::mem::transmute_copy(&bstillwant)).into()
        }
        unsafe extern "system" fn CancelRequest<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IResourceManager_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, idresource: i32, pconsumer: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CancelRequest(::core::mem::transmute_copy(&idresource), ::core::mem::transmute(&pconsumer)).into()
        }
        unsafe extern "system" fn SetFocus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IResourceManager_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfocusobject: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFocus(::core::mem::transmute(&pfocusobject)).into()
        }
        unsafe extern "system" fn ReleaseFocus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IResourceManager_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfocusobject: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ReleaseFocus(::core::mem::transmute(&pfocusobject)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Register: Register::<Identity, Impl, OFFSET>,
            RegisterGroup: RegisterGroup::<Identity, Impl, OFFSET>,
            RequestResource: RequestResource::<Identity, Impl, OFFSET>,
            NotifyAcquire: NotifyAcquire::<Identity, Impl, OFFSET>,
            NotifyRelease: NotifyRelease::<Identity, Impl, OFFSET>,
            CancelRequest: CancelRequest::<Identity, Impl, OFFSET>,
            SetFocus: SetFocus::<Identity, Impl, OFFSET>,
            ReleaseFocus: ReleaseFocus::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IResourceManager as ::windows::core::Interface>::IID
    }
}
pub trait ISBE2Crossbar_Impl: Sized {
    fn EnableDefaultMode(&self, defaultflags: u32) -> ::windows::core::Result<()>;
    fn GetInitialProfile(&self) -> ::windows::core::Result<ISBE2MediaTypeProfile>;
    fn SetOutputProfile(&self, pprofile: &::core::option::Option<ISBE2MediaTypeProfile>, pcoutputpins: *mut u32, ppoutputpins: *mut ::core::option::Option<IPin>) -> ::windows::core::Result<()>;
    fn EnumStreams(&self) -> ::windows::core::Result<ISBE2EnumStream>;
}
impl ::windows::core::RuntimeName for ISBE2Crossbar {}
impl ISBE2Crossbar_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2Crossbar_Impl, const OFFSET: isize>() -> ISBE2Crossbar_Vtbl {
        unsafe extern "system" fn EnableDefaultMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2Crossbar_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, defaultflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.EnableDefaultMode(::core::mem::transmute_copy(&defaultflags)).into()
        }
        unsafe extern "system" fn GetInitialProfile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2Crossbar_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppprofile: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetInitialProfile() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppprofile, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputProfile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2Crossbar_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pprofile: *mut ::core::ffi::c_void, pcoutputpins: *mut u32, ppoutputpins: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOutputProfile(::core::mem::transmute(&pprofile), ::core::mem::transmute_copy(&pcoutputpins), ::core::mem::transmute_copy(&ppoutputpins)).into()
        }
        unsafe extern "system" fn EnumStreams<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2Crossbar_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppstreams: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumStreams() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppstreams, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            EnableDefaultMode: EnableDefaultMode::<Identity, Impl, OFFSET>,
            GetInitialProfile: GetInitialProfile::<Identity, Impl, OFFSET>,
            SetOutputProfile: SetOutputProfile::<Identity, Impl, OFFSET>,
            EnumStreams: EnumStreams::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ISBE2Crossbar as ::windows::core::Interface>::IID
    }
}
pub trait ISBE2EnumStream_Impl: Sized {
    fn Next(&self, crequest: u32, pstreamdesc: *mut SBE2_STREAM_DESC, pcreceived: *mut u32) -> ::windows::core::Result<()>;
    fn Skip(&self, crecords: u32) -> ::windows::core::Result<()>;
    fn Reset(&self) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<ISBE2EnumStream>;
}
impl ::windows::core::RuntimeName for ISBE2EnumStream {}
impl ISBE2EnumStream_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2EnumStream_Impl, const OFFSET: isize>() -> ISBE2EnumStream_Vtbl {
        unsafe extern "system" fn Next<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2EnumStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, crequest: u32, pstreamdesc: *mut SBE2_STREAM_DESC, pcreceived: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Next(::core::mem::transmute_copy(&crequest), ::core::mem::transmute_copy(&pstreamdesc), ::core::mem::transmute_copy(&pcreceived)).into()
        }
        unsafe extern "system" fn Skip<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2EnumStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, crecords: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Skip(::core::mem::transmute_copy(&crecords)).into()
        }
        unsafe extern "system" fn Reset<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2EnumStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Reset().into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2EnumStream_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppienumstream: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppienumstream, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, Impl, OFFSET>,
            Skip: Skip::<Identity, Impl, OFFSET>,
            Reset: Reset::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ISBE2EnumStream as ::windows::core::Interface>::IID
    }
}
pub trait ISBE2FileScan_Impl: Sized {
    fn RepairFile(&self, filename: &::windows::core::PCWSTR) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for ISBE2FileScan {}
impl ISBE2FileScan_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2FileScan_Impl, const OFFSET: isize>() -> ISBE2FileScan_Vtbl {
        unsafe extern "system" fn RepairFile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2FileScan_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, filename: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RepairFile(::core::mem::transmute(&filename)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RepairFile: RepairFile::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ISBE2FileScan as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait ISBE2GlobalEvent_Impl: Sized {
    fn GetEvent(&self, idevt: *const ::windows::core::GUID, param1: u32, param2: u32, param3: u32, param4: u32, pspanning: *mut super::super::Foundation::BOOL, pcb: *mut u32, pb: *mut u8) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for ISBE2GlobalEvent {}
#[cfg(feature = "Win32_Foundation")]
impl ISBE2GlobalEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2GlobalEvent_Impl, const OFFSET: isize>() -> ISBE2GlobalEvent_Vtbl {
        unsafe extern "system" fn GetEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2GlobalEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, idevt: *const ::windows::core::GUID, param1: u32, param2: u32, param3: u32, param4: u32, pspanning: *mut super::super::Foundation::BOOL, pcb: *mut u32, pb: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetEvent(::core::mem::transmute_copy(&idevt), ::core::mem::transmute_copy(&param1), ::core::mem::transmute_copy(&param2), ::core::mem::transmute_copy(&param3), ::core::mem::transmute_copy(&param4), ::core::mem::transmute_copy(&pspanning), ::core::mem::transmute_copy(&pcb), ::core::mem::transmute_copy(&pb)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetEvent: GetEvent::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ISBE2GlobalEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait ISBE2GlobalEvent2_Impl: Sized + ISBE2GlobalEvent_Impl {
    fn GetEventEx(&self, idevt: *const ::windows::core::GUID, param1: u32, param2: u32, param3: u32, param4: u32, pspanning: *mut super::super::Foundation::BOOL, pcb: *mut u32, pb: *mut u8, pstreamtime: *mut i64) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for ISBE2GlobalEvent2 {}
#[cfg(feature = "Win32_Foundation")]
impl ISBE2GlobalEvent2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2GlobalEvent2_Impl, const OFFSET: isize>() -> ISBE2GlobalEvent2_Vtbl {
        unsafe extern "system" fn GetEventEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2GlobalEvent2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, idevt: *const ::windows::core::GUID, param1: u32, param2: u32, param3: u32, param4: u32, pspanning: *mut super::super::Foundation::BOOL, pcb: *mut u32, pb: *mut u8, pstreamtime: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetEventEx(::core::mem::transmute_copy(&idevt), ::core::mem::transmute_copy(&param1), ::core::mem::transmute_copy(&param2), ::core::mem::transmute_copy(&param3), ::core::mem::transmute_copy(&param4), ::core::mem::transmute_copy(&pspanning), ::core::mem::transmute_copy(&pcb), ::core::mem::transmute_copy(&pb), ::core::mem::transmute_copy(&pstreamtime)).into()
        }
        Self { base__: ISBE2GlobalEvent_Vtbl::new::<Identity, Impl, OFFSET>(), GetEventEx: GetEventEx::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ISBE2GlobalEvent2 as ::windows::core::Interface>::IID || iid == &<ISBE2GlobalEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
pub trait ISBE2MediaTypeProfile_Impl: Sized {
    fn GetStreamCount(&self) -> ::windows::core::Result<u32>;
    fn GetStream(&self, index: u32) -> ::windows::core::Result<*mut super::MediaFoundation::AM_MEDIA_TYPE>;
    fn AddStream(&self, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> ::windows::core::Result<()>;
    fn DeleteStream(&self, index: u32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for ISBE2MediaTypeProfile {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ISBE2MediaTypeProfile_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2MediaTypeProfile_Impl, const OFFSET: isize>() -> ISBE2MediaTypeProfile_Vtbl {
        unsafe extern "system" fn GetStreamCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2MediaTypeProfile_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcount: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStreamCount() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcount, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2MediaTypeProfile_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: u32, ppmediatype: *mut *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStream(::core::mem::transmute_copy(&index)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppmediatype, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AddStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2MediaTypeProfile_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmediatype: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AddStream(::core::mem::transmute_copy(&pmediatype)).into()
        }
        unsafe extern "system" fn DeleteStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2MediaTypeProfile_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DeleteStream(::core::mem::transmute_copy(&index)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetStreamCount: GetStreamCount::<Identity, Impl, OFFSET>,
            GetStream: GetStream::<Identity, Impl, OFFSET>,
            AddStream: AddStream::<Identity, Impl, OFFSET>,
            DeleteStream: DeleteStream::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ISBE2MediaTypeProfile as ::windows::core::Interface>::IID
    }
}
pub trait ISBE2SpanningEvent_Impl: Sized {
    fn GetEvent(&self, idevt: *const ::windows::core::GUID, streamid: u32, pcb: *mut u32, pb: *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for ISBE2SpanningEvent {}
impl ISBE2SpanningEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2SpanningEvent_Impl, const OFFSET: isize>() -> ISBE2SpanningEvent_Vtbl {
        unsafe extern "system" fn GetEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2SpanningEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, idevt: *const ::windows::core::GUID, streamid: u32, pcb: *mut u32, pb: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetEvent(::core::mem::transmute_copy(&idevt), ::core::mem::transmute_copy(&streamid), ::core::mem::transmute_copy(&pcb), ::core::mem::transmute_copy(&pb)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetEvent: GetEvent::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ISBE2SpanningEvent as ::windows::core::Interface>::IID
    }
}
pub trait ISBE2StreamMap_Impl: Sized {
    fn MapStream(&self, stream: u32) -> ::windows::core::Result<()>;
    fn UnmapStream(&self, stream: u32) -> ::windows::core::Result<()>;
    fn EnumMappedStreams(&self) -> ::windows::core::Result<ISBE2EnumStream>;
}
impl ::windows::core::RuntimeName for ISBE2StreamMap {}
impl ISBE2StreamMap_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2StreamMap_Impl, const OFFSET: isize>() -> ISBE2StreamMap_Vtbl {
        unsafe extern "system" fn MapStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2StreamMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, stream: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.MapStream(::core::mem::transmute_copy(&stream)).into()
        }
        unsafe extern "system" fn UnmapStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2StreamMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, stream: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnmapStream(::core::mem::transmute_copy(&stream)).into()
        }
        unsafe extern "system" fn EnumMappedStreams<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISBE2StreamMap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppstreams: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumMappedStreams() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppstreams, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            MapStream: MapStream::<Identity, Impl, OFFSET>,
            UnmapStream: UnmapStream::<Identity, Impl, OFFSET>,
            EnumMappedStreams: EnumMappedStreams::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ISBE2StreamMap as ::windows::core::Interface>::IID
    }
}
pub trait ISCTE_EAS_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetSequencyNumber(&self) -> ::windows::core::Result<u8>;
    fn GetProtocolVersion(&self) -> ::windows::core::Result<u8>;
    fn GetEASEventID(&self) -> ::windows::core::Result<u16>;
    fn GetOriginatorCode(&self) -> ::windows::core::Result<u8>;
    fn GetEASEventCodeLen(&self) -> ::windows::core::Result<u8>;
    fn GetEASEventCode(&self) -> ::windows::core::Result<u8>;
    fn GetRawNatureOfActivationTextLen(&self) -> ::windows::core::Result<u8>;
    fn GetRawNatureOfActivationText(&self) -> ::windows::core::Result<u8>;
    fn GetNatureOfActivationText(&self, bstris0639code: &::windows::core::BSTR) -> ::windows::core::Result<::windows::core::BSTR>;
    fn GetTimeRemaining(&self) -> ::windows::core::Result<u8>;
    fn GetStartTime(&self) -> ::windows::core::Result<u32>;
    fn GetDuration(&self) -> ::windows::core::Result<u16>;
    fn GetAlertPriority(&self) -> ::windows::core::Result<u8>;
    fn GetDetailsOOBSourceID(&self) -> ::windows::core::Result<u16>;
    fn GetDetailsMajor(&self) -> ::windows::core::Result<u16>;
    fn GetDetailsMinor(&self) -> ::windows::core::Result<u16>;
    fn GetDetailsAudioOOBSourceID(&self) -> ::windows::core::Result<u16>;
    fn GetAlertText(&self, bstris0639code: &::windows::core::BSTR) -> ::windows::core::Result<::windows::core::BSTR>;
    fn GetRawAlertTextLen(&self) -> ::windows::core::Result<u16>;
    fn GetRawAlertText(&self) -> ::windows::core::Result<u8>;
    fn GetLocationCount(&self) -> ::windows::core::Result<u8>;
    fn GetLocationCodes(&self, bindex: u8, pbstate: *mut u8, pbcountysubdivision: *mut u8, pwcounty: *mut u16) -> ::windows::core::Result<()>;
    fn GetExceptionCount(&self) -> ::windows::core::Result<u8>;
    fn GetExceptionService(&self, bindex: u8, pbibref: *mut u8, pwfirst: *mut u16, pwsecond: *mut u16) -> ::windows::core::Result<()>;
    fn GetCountOfTableDescriptors(&self) -> ::windows::core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for ISCTE_EAS {}
impl ISCTE_EAS_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>() -> ISCTE_EAS_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSequencyNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSequencyNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProtocolVersion<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetProtocolVersion() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEASEventID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEASEventID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginatorCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOriginatorCode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEASEventCodeLen<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEASEventCodeLen() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEASEventCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetEASEventCode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRawNatureOfActivationTextLen<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRawNatureOfActivationTextLen() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRawNatureOfActivationText<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRawNatureOfActivationText() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNatureOfActivationText<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bstris0639code: ::core::mem::ManuallyDrop<::windows::core::BSTR>, pbstrstring: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNatureOfActivationText(::core::mem::transmute(&bstris0639code)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrstring, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTimeRemaining<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTimeRemaining() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStartTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStartTime() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDuration<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDuration() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAlertPriority<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAlertPriority() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDetailsOOBSourceID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDetailsOOBSourceID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDetailsMajor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDetailsMajor() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDetailsMinor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDetailsMinor() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDetailsAudioOOBSourceID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDetailsAudioOOBSourceID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAlertText<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bstris0639code: ::core::mem::ManuallyDrop<::windows::core::BSTR>, pbstrstring: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAlertText(::core::mem::transmute(&bstris0639code)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbstrstring, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRawAlertTextLen<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRawAlertTextLen() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRawAlertText<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRawAlertText() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLocationCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetLocationCount() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLocationCodes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindex: u8, pbstate: *mut u8, pbcountysubdivision: *mut u8, pwcounty: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLocationCodes(::core::mem::transmute_copy(&bindex), ::core::mem::transmute_copy(&pbstate), ::core::mem::transmute_copy(&pbcountysubdivision), ::core::mem::transmute_copy(&pwcounty)).into()
        }
        unsafe extern "system" fn GetExceptionCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetExceptionCount() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetExceptionService<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindex: u8, pbibref: *mut u8, pwfirst: *mut u16, pwsecond: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetExceptionService(::core::mem::transmute_copy(&bindex), ::core::mem::transmute_copy(&pbibref), ::core::mem::transmute_copy(&pwfirst), ::core::mem::transmute_copy(&pwsecond)).into()
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfTableDescriptors() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableDescriptorByIndex(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISCTE_EAS_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptorByTag(::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetSequencyNumber: GetSequencyNumber::<Identity, Impl, OFFSET>,
            GetProtocolVersion: GetProtocolVersion::<Identity, Impl, OFFSET>,
            GetEASEventID: GetEASEventID::<Identity, Impl, OFFSET>,
            GetOriginatorCode: GetOriginatorCode::<Identity, Impl, OFFSET>,
            GetEASEventCodeLen: GetEASEventCodeLen::<Identity, Impl, OFFSET>,
            GetEASEventCode: GetEASEventCode::<Identity, Impl, OFFSET>,
            GetRawNatureOfActivationTextLen: GetRawNatureOfActivationTextLen::<Identity, Impl, OFFSET>,
            GetRawNatureOfActivationText: GetRawNatureOfActivationText::<Identity, Impl, OFFSET>,
            GetNatureOfActivationText: GetNatureOfActivationText::<Identity, Impl, OFFSET>,
            GetTimeRemaining: GetTimeRemaining::<Identity, Impl, OFFSET>,
            GetStartTime: GetStartTime::<Identity, Impl, OFFSET>,
            GetDuration: GetDuration::<Identity, Impl, OFFSET>,
            GetAlertPriority: GetAlertPriority::<Identity, Impl, OFFSET>,
            GetDetailsOOBSourceID: GetDetailsOOBSourceID::<Identity, Impl, OFFSET>,
            GetDetailsMajor: GetDetailsMajor::<Identity, Impl, OFFSET>,
            GetDetailsMinor: GetDetailsMinor::<Identity, Impl, OFFSET>,
            GetDetailsAudioOOBSourceID: GetDetailsAudioOOBSourceID::<Identity, Impl, OFFSET>,
            GetAlertText: GetAlertText::<Identity, Impl, OFFSET>,
            GetRawAlertTextLen: GetRawAlertTextLen::<Identity, Impl, OFFSET>,
            GetRawAlertText: GetRawAlertText::<Identity, Impl, OFFSET>,
            GetLocationCount: GetLocationCount::<Identity, Impl, OFFSET>,
            GetLocationCodes: GetLocationCodes::<Identity, Impl, OFFSET>,
            GetExceptionCount: GetExceptionCount::<Identity, Impl, OFFSET>,
            GetExceptionService: GetExceptionService::<Identity, Impl, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, Impl, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ISCTE_EAS as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait ISIInbandEPG_Impl: Sized {
    fn StartSIEPGScan(&self) -> ::windows::core::Result<()>;
    fn StopSIEPGScan(&self) -> ::windows::core::Result<()>;
    fn IsSIEPGScanRunning(&self) -> ::windows::core::Result<super::super::Foundation::BOOL>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for ISIInbandEPG {}
#[cfg(feature = "Win32_Foundation")]
impl ISIInbandEPG_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISIInbandEPG_Impl, const OFFSET: isize>() -> ISIInbandEPG_Vtbl {
        unsafe extern "system" fn StartSIEPGScan<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISIInbandEPG_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StartSIEPGScan().into()
        }
        unsafe extern "system" fn StopSIEPGScan<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISIInbandEPG_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StopSIEPGScan().into()
        }
        unsafe extern "system" fn IsSIEPGScanRunning<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISIInbandEPG_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, brunning: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IsSIEPGScanRunning() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(brunning, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartSIEPGScan: StartSIEPGScan::<Identity, Impl, OFFSET>,
            StopSIEPGScan: StopSIEPGScan::<Identity, Impl, OFFSET>,
            IsSIEPGScanRunning: IsSIEPGScanRunning::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ISIInbandEPG as ::windows::core::Interface>::IID
    }
}
pub trait ISIInbandEPGEvent_Impl: Sized {
    fn SIObjectEvent(&self, pidvb_eit: &::core::option::Option<IDVB_EIT2>, dwtable_id: u32, dwservice_id: u32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for ISIInbandEPGEvent {}
impl ISIInbandEPGEvent_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISIInbandEPGEvent_Impl, const OFFSET: isize>() -> ISIInbandEPGEvent_Vtbl {
        unsafe extern "system" fn SIObjectEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISIInbandEPGEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pidvb_eit: *mut ::core::ffi::c_void, dwtable_id: u32, dwservice_id: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SIObjectEvent(::core::mem::transmute(&pidvb_eit), ::core::mem::transmute_copy(&dwtable_id), ::core::mem::transmute_copy(&dwservice_id)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SIObjectEvent: SIObjectEvent::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ISIInbandEPGEvent as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IScanningTuner_Impl: Sized + ITuner_Impl {
    fn SeekUp(&self) -> ::windows::core::Result<()>;
    fn SeekDown(&self) -> ::windows::core::Result<()>;
    fn ScanUp(&self, millisecondspause: i32) -> ::windows::core::Result<()>;
    fn ScanDown(&self, millisecondspause: i32) -> ::windows::core::Result<()>;
    fn AutoProgram(&self) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IScanningTuner {}
#[cfg(feature = "Win32_System_Com")]
impl IScanningTuner_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTuner_Impl, const OFFSET: isize>() -> IScanningTuner_Vtbl {
        unsafe extern "system" fn SeekUp<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SeekUp().into()
        }
        unsafe extern "system" fn SeekDown<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SeekDown().into()
        }
        unsafe extern "system" fn ScanUp<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, millisecondspause: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ScanUp(::core::mem::transmute_copy(&millisecondspause)).into()
        }
        unsafe extern "system" fn ScanDown<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, millisecondspause: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ScanDown(::core::mem::transmute_copy(&millisecondspause)).into()
        }
        unsafe extern "system" fn AutoProgram<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AutoProgram().into()
        }
        Self {
            base__: ITuner_Vtbl::new::<Identity, Impl, OFFSET>(),
            SeekUp: SeekUp::<Identity, Impl, OFFSET>,
            SeekDown: SeekDown::<Identity, Impl, OFFSET>,
            ScanUp: ScanUp::<Identity, Impl, OFFSET>,
            ScanDown: ScanDown::<Identity, Impl, OFFSET>,
            AutoProgram: AutoProgram::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IScanningTuner as ::windows::core::Interface>::IID || iid == &<ITuner as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IScanningTunerEx_Impl: Sized + IScanningTuner_Impl {
    fn GetCurrentLocator(&self, pilocator: *const ::core::option::Option<ILocator>) -> ::windows::core::Result<()>;
    fn PerformExhaustiveScan(&self, dwlowerfreq: i32, dwhigherfreq: i32, bfinetune: i16, hevent: usize) -> ::windows::core::Result<()>;
    fn TerminateCurrentScan(&self) -> ::windows::core::Result<i32>;
    fn ResumeCurrentScan(&self, hevent: usize) -> ::windows::core::Result<()>;
    fn GetTunerScanningCapability(&self, hardwareassistedscanning: *mut i32, numstandardssupported: *mut i32, broadcaststandards: *mut ::windows::core::GUID) -> ::windows::core::Result<()>;
    fn GetTunerStatus(&self, secondsleft: *mut i32, currentlocktype: *mut i32, autodetect: *mut i32, currentfreq: *mut i32) -> ::windows::core::Result<()>;
    fn GetCurrentTunerStandardCapability(&self, currentbroadcaststandard: &::windows::core::GUID, settlingtime: *mut i32, tvstandardssupported: *mut i32) -> ::windows::core::Result<()>;
    fn SetScanSignalTypeFilter(&self, scanmodulationtypes: i32, analogvideostandard: i32) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for IScanningTunerEx {}
#[cfg(feature = "Win32_System_Com")]
impl IScanningTunerEx_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTunerEx_Impl, const OFFSET: isize>() -> IScanningTunerEx_Vtbl {
        unsafe extern "system" fn GetCurrentLocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTunerEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pilocator: *const *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentLocator(::core::mem::transmute_copy(&pilocator)).into()
        }
        unsafe extern "system" fn PerformExhaustiveScan<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTunerEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwlowerfreq: i32, dwhigherfreq: i32, bfinetune: i16, hevent: usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PerformExhaustiveScan(::core::mem::transmute_copy(&dwlowerfreq), ::core::mem::transmute_copy(&dwhigherfreq), ::core::mem::transmute_copy(&bfinetune), ::core::mem::transmute_copy(&hevent)).into()
        }
        unsafe extern "system" fn TerminateCurrentScan<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTunerEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcurrentfreq: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TerminateCurrentScan() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcurrentfreq, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ResumeCurrentScan<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTunerEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hevent: usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ResumeCurrentScan(::core::mem::transmute_copy(&hevent)).into()
        }
        unsafe extern "system" fn GetTunerScanningCapability<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTunerEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hardwareassistedscanning: *mut i32, numstandardssupported: *mut i32, broadcaststandards: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTunerScanningCapability(::core::mem::transmute_copy(&hardwareassistedscanning), ::core::mem::transmute_copy(&numstandardssupported), ::core::mem::transmute_copy(&broadcaststandards)).into()
        }
        unsafe extern "system" fn GetTunerStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTunerEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, secondsleft: *mut i32, currentlocktype: *mut i32, autodetect: *mut i32, currentfreq: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTunerStatus(::core::mem::transmute_copy(&secondsleft), ::core::mem::transmute_copy(&currentlocktype), ::core::mem::transmute_copy(&autodetect), ::core::mem::transmute_copy(&currentfreq)).into()
        }
        unsafe extern "system" fn GetCurrentTunerStandardCapability<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTunerEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, currentbroadcaststandard: ::windows::core::GUID, settlingtime: *mut i32, tvstandardssupported: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentTunerStandardCapability(::core::mem::transmute(&currentbroadcaststandard), ::core::mem::transmute_copy(&settlingtime), ::core::mem::transmute_copy(&tvstandardssupported)).into()
        }
        unsafe extern "system" fn SetScanSignalTypeFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IScanningTunerEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, scanmodulationtypes: i32, analogvideostandard: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetScanSignalTypeFilter(::core::mem::transmute_copy(&scanmodulationtypes), ::core::mem::transmute_copy(&analogvideostandard)).into()
        }
        Self {
            base__: IScanningTuner_Vtbl::new::<Identity, Impl, OFFSET>(),
            GetCurrentLocator: GetCurrentLocator::<Identity, Impl, OFFSET>,
            PerformExhaustiveScan: PerformExhaustiveScan::<Identity, Impl, OFFSET>,
            TerminateCurrentScan: TerminateCurrentScan::<Identity, Impl, OFFSET>,
            ResumeCurrentScan: ResumeCurrentScan::<Identity, Impl, OFFSET>,
            GetTunerScanningCapability: GetTunerScanningCapability::<Identity, Impl, OFFSET>,
            GetTunerStatus: GetTunerStatus::<Identity, Impl, OFFSET>,
            GetCurrentTunerStandardCapability: GetCurrentTunerStandardCapability::<Identity, Impl, OFFSET>,
            SetScanSignalTypeFilter: SetScanSignalTypeFilter::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IScanningTunerEx as ::windows::core::Interface>::IID || iid == &<ITuner as ::windows::core::Interface>::IID || iid == &<IScanningTuner as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait ISectionList_Impl: Sized {
    fn Initialize(&self, requesttype: MPEG_REQUEST_TYPE, pmpeg2data: &::core::option::Option<IMpeg2Data>, pcontext: *const MPEG_CONTEXT, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, timeout: u32, hdoneevent: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn InitializeWithRawSections(&self, pmplsections: *const MPEG_PACKET_LIST) -> ::windows::core::Result<()>;
    fn CancelPendingRequest(&self) -> ::windows::core::Result<()>;
    fn GetNumberOfSections(&self) -> ::windows::core::Result<u16>;
    fn GetSectionData(&self, sectionnumber: u16, pdwrawpacketlength: *mut u32, ppsection: *mut *mut SECTION) -> ::windows::core::Result<()>;
    fn GetProgramIdentifier(&self, ppid: *const u16) -> ::windows::core::Result<()>;
    fn GetTableIdentifier(&self, ptableid: *const u8) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for ISectionList {}
#[cfg(feature = "Win32_Foundation")]
impl ISectionList_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISectionList_Impl, const OFFSET: isize>() -> ISectionList_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISectionList_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, requesttype: MPEG_REQUEST_TYPE, pmpeg2data: *mut ::core::ffi::c_void, pcontext: *const MPEG_CONTEXT, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, timeout: u32, hdoneevent: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute_copy(&requesttype), ::core::mem::transmute(&pmpeg2data), ::core::mem::transmute_copy(&pcontext), ::core::mem::transmute_copy(&pid), ::core::mem::transmute_copy(&tid), ::core::mem::transmute_copy(&pfilter), ::core::mem::transmute_copy(&timeout), ::core::mem::transmute_copy(&hdoneevent)).into()
        }
        unsafe extern "system" fn InitializeWithRawSections<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISectionList_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmplsections: *const MPEG_PACKET_LIST) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.InitializeWithRawSections(::core::mem::transmute_copy(&pmplsections)).into()
        }
        unsafe extern "system" fn CancelPendingRequest<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISectionList_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CancelPendingRequest().into()
        }
        unsafe extern "system" fn GetNumberOfSections<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISectionList_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcount: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNumberOfSections() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcount, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSectionData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISectionList_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sectionnumber: u16, pdwrawpacketlength: *mut u32, ppsection: *mut *mut SECTION) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetSectionData(::core::mem::transmute_copy(&sectionnumber), ::core::mem::transmute_copy(&pdwrawpacketlength), ::core::mem::transmute_copy(&ppsection)).into()
        }
        unsafe extern "system" fn GetProgramIdentifier<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISectionList_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppid: *const u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetProgramIdentifier(::core::mem::transmute_copy(&ppid)).into()
        }
        unsafe extern "system" fn GetTableIdentifier<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISectionList_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptableid: *const u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableIdentifier(::core::mem::transmute_copy(&ptableid)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            InitializeWithRawSections: InitializeWithRawSections::<Identity, Impl, OFFSET>,
            CancelPendingRequest: CancelPendingRequest::<Identity, Impl, OFFSET>,
            GetNumberOfSections: GetNumberOfSections::<Identity, Impl, OFFSET>,
            GetSectionData: GetSectionData::<Identity, Impl, OFFSET>,
            GetProgramIdentifier: GetProgramIdentifier::<Identity, Impl, OFFSET>,
            GetTableIdentifier: GetTableIdentifier::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ISectionList as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait ISeekingPassThru_Impl: Sized {
    fn Init(&self, bsupportrendering: super::super::Foundation::BOOL, ppin: &::core::option::Option<IPin>) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for ISeekingPassThru {}
#[cfg(feature = "Win32_Foundation")]
impl ISeekingPassThru_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISeekingPassThru_Impl, const OFFSET: isize>() -> ISeekingPassThru_Vtbl {
        unsafe extern "system" fn Init<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISeekingPassThru_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bsupportrendering: super::super::Foundation::BOOL, ppin: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Init(::core::mem::transmute_copy(&bsupportrendering), ::core::mem::transmute(&ppin)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Init: Init::<Identity, Impl, 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<Impl = Impl>, Impl: ISelector_Impl, const OFFSET: isize>() -> ISelector_Vtbl {
        unsafe extern "system" fn NumSources<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISelector_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwnumsources: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.NumSources() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwnumsources, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SourceNodeId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISelector_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwpinid: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SourceNodeId() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwpinid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourceNodeId<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISelector_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwpinid: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSourceNodeId(::core::mem::transmute_copy(&dwpinid)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            NumSources: NumSources::<Identity, Impl, OFFSET>,
            SourceNodeId: SourceNodeId::<Identity, Impl, OFFSET>,
            SetSourceNodeId: SetSourceNodeId::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ISelector as ::windows::core::Interface>::IID
    }
}
pub trait IServiceLocationDescriptor_Impl: Sized {
    fn GetPCR_PID(&self) -> ::windows::core::Result<u16>;
    fn GetNumberOfElements(&self) -> ::windows::core::Result<u8>;
    fn GetElementStreamType(&self, bindex: u8) -> ::windows::core::Result<u8>;
    fn GetElementPID(&self, bindex: u8) -> ::windows::core::Result<u16>;
    fn GetElementLanguageCode(&self, bindex: u8, langcode: *mut u8) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IServiceLocationDescriptor {}
impl IServiceLocationDescriptor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IServiceLocationDescriptor_Impl, const OFFSET: isize>() -> IServiceLocationDescriptor_Vtbl {
        unsafe extern "system" fn GetPCR_PID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IServiceLocationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPCR_PID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNumberOfElements<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IServiceLocationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNumberOfElements() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetElementStreamType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IServiceLocationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindex: u8, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetElementStreamType(::core::mem::transmute_copy(&bindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetElementPID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IServiceLocationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindex: u8, pwval: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetElementPID(::core::mem::transmute_copy(&bindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetElementLanguageCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IServiceLocationDescriptor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bindex: u8, langcode: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetElementLanguageCode(::core::mem::transmute_copy(&bindex), ::core::mem::transmute_copy(&langcode)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPCR_PID: GetPCR_PID::<Identity, Impl, OFFSET>,
            GetNumberOfElements: GetNumberOfElements::<Identity, Impl, OFFSET>,
            GetElementStreamType: GetElementStreamType::<Identity, Impl, OFFSET>,
            GetElementPID: GetElementPID::<Identity, Impl, OFFSET>,
            GetElementLanguageCode: GetElementLanguageCode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IServiceLocationDescriptor 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<Impl = Impl>, Impl: ISpecifyParticularPages_Impl, const OFFSET: isize>() -> ISpecifyParticularPages_Vtbl {
        unsafe extern "system" fn GetPages<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ISpecifyParticularPages_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guidwhatpages: *const ::windows::core::GUID, ppages: *mut super::super::System::Ole::CAUUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPages(::core::mem::transmute_copy(&guidwhatpages)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppages, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetPages: GetPages::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ISpecifyParticularPages as ::windows::core::Interface>::IID
    }
}
pub trait IStreamBufferConfigure_Impl: Sized {
    fn SetDirectory(&self, pszdirectoryname: &::windows::core::PCWSTR) -> ::windows::core::Result<()>;
    fn GetDirectory(&self) -> ::windows::core::Result<::windows::core::PWSTR>;
    fn SetBackingFileCount(&self, dwmin: u32, dwmax: u32) -> ::windows::core::Result<()>;
    fn GetBackingFileCount(&self, pdwmin: *mut u32, pdwmax: *mut u32) -> ::windows::core::Result<()>;
    fn SetBackingFileDuration(&self, dwseconds: u32) -> ::windows::core::Result<()>;
    fn GetBackingFileDuration(&self) -> ::windows::core::Result<u32>;
}
impl ::windows::core::RuntimeName for IStreamBufferConfigure {}
impl IStreamBufferConfigure_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure_Impl, const OFFSET: isize>() -> IStreamBufferConfigure_Vtbl {
        unsafe extern "system" fn SetDirectory<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszdirectoryname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDirectory(::core::mem::transmute(&pszdirectoryname)).into()
        }
        unsafe extern "system" fn GetDirectory<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppszdirectoryname: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDirectory() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppszdirectoryname, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBackingFileCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwmin: u32, dwmax: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBackingFileCount(::core::mem::transmute_copy(&dwmin), ::core::mem::transmute_copy(&dwmax)).into()
        }
        unsafe extern "system" fn GetBackingFileCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwmin: *mut u32, pdwmax: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetBackingFileCount(::core::mem::transmute_copy(&pdwmin), ::core::mem::transmute_copy(&pdwmax)).into()
        }
        unsafe extern "system" fn SetBackingFileDuration<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwseconds: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBackingFileDuration(::core::mem::transmute_copy(&dwseconds)).into()
        }
        unsafe extern "system" fn GetBackingFileDuration<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwseconds: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetBackingFileDuration() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwseconds, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetDirectory: SetDirectory::<Identity, Impl, OFFSET>,
            GetDirectory: GetDirectory::<Identity, Impl, OFFSET>,
            SetBackingFileCount: SetBackingFileCount::<Identity, Impl, OFFSET>,
            GetBackingFileCount: GetBackingFileCount::<Identity, Impl, OFFSET>,
            SetBackingFileDuration: SetBackingFileDuration::<Identity, Impl, OFFSET>,
            GetBackingFileDuration: GetBackingFileDuration::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBufferConfigure as ::windows::core::Interface>::IID
    }
}
pub trait IStreamBufferConfigure2_Impl: Sized + IStreamBufferConfigure_Impl {
    fn SetMultiplexedPacketSize(&self, cbbytesperpacket: u32) -> ::windows::core::Result<()>;
    fn GetMultiplexedPacketSize(&self) -> ::windows::core::Result<u32>;
    fn SetFFTransitionRates(&self, dwmaxfullframerate: u32, dwmaxnonskippingrate: u32) -> ::windows::core::Result<()>;
    fn GetFFTransitionRates(&self, pdwmaxfullframerate: *mut u32, pdwmaxnonskippingrate: *mut u32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IStreamBufferConfigure2 {}
impl IStreamBufferConfigure2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure2_Impl, const OFFSET: isize>() -> IStreamBufferConfigure2_Vtbl {
        unsafe extern "system" fn SetMultiplexedPacketSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cbbytesperpacket: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMultiplexedPacketSize(::core::mem::transmute_copy(&cbbytesperpacket)).into()
        }
        unsafe extern "system" fn GetMultiplexedPacketSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcbbytesperpacket: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMultiplexedPacketSize() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcbbytesperpacket, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFFTransitionRates<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwmaxfullframerate: u32, dwmaxnonskippingrate: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFFTransitionRates(::core::mem::transmute_copy(&dwmaxfullframerate), ::core::mem::transmute_copy(&dwmaxnonskippingrate)).into()
        }
        unsafe extern "system" fn GetFFTransitionRates<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwmaxfullframerate: *mut u32, pdwmaxnonskippingrate: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetFFTransitionRates(::core::mem::transmute_copy(&pdwmaxfullframerate), ::core::mem::transmute_copy(&pdwmaxnonskippingrate)).into()
        }
        Self {
            base__: IStreamBufferConfigure_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetMultiplexedPacketSize: SetMultiplexedPacketSize::<Identity, Impl, OFFSET>,
            GetMultiplexedPacketSize: GetMultiplexedPacketSize::<Identity, Impl, OFFSET>,
            SetFFTransitionRates: SetFFTransitionRates::<Identity, Impl, OFFSET>,
            GetFFTransitionRates: GetFFTransitionRates::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBufferConfigure2 as ::windows::core::Interface>::IID || iid == &<IStreamBufferConfigure as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IStreamBufferConfigure3_Impl: Sized + IStreamBufferConfigure2_Impl {
    fn SetStartRecConfig(&self, fstartstopscur: super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
    fn GetStartRecConfig(&self) -> ::windows::core::Result<super::super::Foundation::BOOL>;
    fn SetNamespace(&self, psznamespace: &::windows::core::PCWSTR) -> ::windows::core::Result<()>;
    fn GetNamespace(&self) -> ::windows::core::Result<::windows::core::PWSTR>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IStreamBufferConfigure3 {}
#[cfg(feature = "Win32_Foundation")]
impl IStreamBufferConfigure3_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure3_Impl, const OFFSET: isize>() -> IStreamBufferConfigure3_Vtbl {
        unsafe extern "system" fn SetStartRecConfig<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fstartstopscur: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStartRecConfig(::core::mem::transmute_copy(&fstartstopscur)).into()
        }
        unsafe extern "system" fn GetStartRecConfig<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pfstartstopscur: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStartRecConfig() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pfstartstopscur, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetNamespace<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psznamespace: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetNamespace(::core::mem::transmute(&psznamespace)).into()
        }
        unsafe extern "system" fn GetNamespace<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferConfigure3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppsznamespace: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNamespace() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppsznamespace, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: IStreamBufferConfigure2_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetStartRecConfig: SetStartRecConfig::<Identity, Impl, OFFSET>,
            GetStartRecConfig: GetStartRecConfig::<Identity, Impl, OFFSET>,
            SetNamespace: SetNamespace::<Identity, Impl, OFFSET>,
            GetNamespace: GetNamespace::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBufferConfigure3 as ::windows::core::Interface>::IID || iid == &<IStreamBufferConfigure as ::windows::core::Interface>::IID || iid == &<IStreamBufferConfigure2 as ::windows::core::Interface>::IID
    }
}
pub trait IStreamBufferDataCounters_Impl: Sized {
    fn GetData(&self) -> ::windows::core::Result<SBE_PIN_DATA>;
    fn ResetData(&self) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IStreamBufferDataCounters {}
impl IStreamBufferDataCounters_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferDataCounters_Impl, const OFFSET: isize>() -> IStreamBufferDataCounters_Vtbl {
        unsafe extern "system" fn GetData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferDataCounters_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppindata: *mut SBE_PIN_DATA) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetData() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppindata, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ResetData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferDataCounters_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ResetData().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetData: GetData::<Identity, Impl, OFFSET>,
            ResetData: ResetData::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBufferDataCounters as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Registry"))]
pub trait IStreamBufferInitialize_Impl: Sized {
    fn SetHKEY(&self, hkeyroot: super::super::System::Registry::HKEY) -> ::windows::core::Result<()>;
    fn SetSIDs(&self, csids: u32, ppsid: *mut super::super::Foundation::PSID) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Registry"))]
impl ::windows::core::RuntimeName for IStreamBufferInitialize {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Registry"))]
impl IStreamBufferInitialize_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferInitialize_Impl, const OFFSET: isize>() -> IStreamBufferInitialize_Vtbl {
        unsafe extern "system" fn SetHKEY<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferInitialize_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hkeyroot: super::super::System::Registry::HKEY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetHKEY(::core::mem::transmute_copy(&hkeyroot)).into()
        }
        unsafe extern "system" fn SetSIDs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferInitialize_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, csids: u32, ppsid: *mut super::super::Foundation::PSID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSIDs(::core::mem::transmute_copy(&csids), ::core::mem::transmute_copy(&ppsid)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetHKEY: SetHKEY::<Identity, Impl, OFFSET>,
            SetSIDs: SetSIDs::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBufferInitialize as ::windows::core::Interface>::IID
    }
}
pub trait IStreamBufferMediaSeeking_Impl: Sized + IMediaSeeking_Impl {}
impl ::windows::core::RuntimeName for IStreamBufferMediaSeeking {}
impl IStreamBufferMediaSeeking_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferMediaSeeking_Impl, const OFFSET: isize>() -> IStreamBufferMediaSeeking_Vtbl {
        Self { base__: IMediaSeeking_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBufferMediaSeeking as ::windows::core::Interface>::IID || iid == &<IMediaSeeking as ::windows::core::Interface>::IID
    }
}
pub trait IStreamBufferMediaSeeking2_Impl: Sized + IStreamBufferMediaSeeking_Impl {
    fn SetRateEx(&self, drate: f64, dwframespersec: u32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IStreamBufferMediaSeeking2 {}
impl IStreamBufferMediaSeeking2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferMediaSeeking2_Impl, const OFFSET: isize>() -> IStreamBufferMediaSeeking2_Vtbl {
        unsafe extern "system" fn SetRateEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferMediaSeeking2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, drate: f64, dwframespersec: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRateEx(::core::mem::transmute_copy(&drate), ::core::mem::transmute_copy(&dwframespersec)).into()
        }
        Self { base__: IStreamBufferMediaSeeking_Vtbl::new::<Identity, Impl, OFFSET>(), SetRateEx: SetRateEx::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBufferMediaSeeking2 as ::windows::core::Interface>::IID || iid == &<IMediaSeeking as ::windows::core::Interface>::IID || iid == &<IStreamBufferMediaSeeking as ::windows::core::Interface>::IID
    }
}
pub trait IStreamBufferRecComp_Impl: Sized {
    fn Initialize(&self, psztargetfilename: &::windows::core::PCWSTR, pszsbrecprofileref: &::windows::core::PCWSTR) -> ::windows::core::Result<()>;
    fn Append(&self, pszsbrecording: &::windows::core::PCWSTR) -> ::windows::core::Result<()>;
    fn AppendEx(&self, pszsbrecording: &::windows::core::PCWSTR, rtstart: i64, rtstop: i64) -> ::windows::core::Result<()>;
    fn GetCurrentLength(&self) -> ::windows::core::Result<u32>;
    fn Close(&self) -> ::windows::core::Result<()>;
    fn Cancel(&self) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IStreamBufferRecComp {}
impl IStreamBufferRecComp_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecComp_Impl, const OFFSET: isize>() -> IStreamBufferRecComp_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecComp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psztargetfilename: ::windows::core::PCWSTR, pszsbrecprofileref: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psztargetfilename), ::core::mem::transmute(&pszsbrecprofileref)).into()
        }
        unsafe extern "system" fn Append<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecComp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszsbrecording: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Append(::core::mem::transmute(&pszsbrecording)).into()
        }
        unsafe extern "system" fn AppendEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecComp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszsbrecording: ::windows::core::PCWSTR, rtstart: i64, rtstop: i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AppendEx(::core::mem::transmute(&pszsbrecording), ::core::mem::transmute_copy(&rtstart), ::core::mem::transmute_copy(&rtstop)).into()
        }
        unsafe extern "system" fn GetCurrentLength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecComp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcseconds: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentLength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcseconds, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Close<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecComp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Close().into()
        }
        unsafe extern "system" fn Cancel<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecComp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Cancel().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            Append: Append::<Identity, Impl, OFFSET>,
            AppendEx: AppendEx::<Identity, Impl, OFFSET>,
            GetCurrentLength: GetCurrentLength::<Identity, Impl, OFFSET>,
            Close: Close::<Identity, Impl, OFFSET>,
            Cancel: Cancel::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBufferRecComp as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IStreamBufferRecordControl_Impl: Sized {
    fn Start(&self, prtstart: *mut i64) -> ::windows::core::Result<()>;
    fn Stop(&self, rtstop: i64) -> ::windows::core::Result<()>;
    fn GetRecordingStatus(&self, phresult: *mut ::windows::core::HRESULT, pbstarted: *mut super::super::Foundation::BOOL, pbstopped: *mut super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IStreamBufferRecordControl {}
#[cfg(feature = "Win32_Foundation")]
impl IStreamBufferRecordControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecordControl_Impl, const OFFSET: isize>() -> IStreamBufferRecordControl_Vtbl {
        unsafe extern "system" fn Start<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecordControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prtstart: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Start(::core::mem::transmute_copy(&prtstart)).into()
        }
        unsafe extern "system" fn Stop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecordControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, rtstop: i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Stop(::core::mem::transmute_copy(&rtstop)).into()
        }
        unsafe extern "system" fn GetRecordingStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecordControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phresult: *mut ::windows::core::HRESULT, pbstarted: *mut super::super::Foundation::BOOL, pbstopped: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRecordingStatus(::core::mem::transmute_copy(&phresult), ::core::mem::transmute_copy(&pbstarted), ::core::mem::transmute_copy(&pbstopped)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Start: Start::<Identity, Impl, OFFSET>,
            Stop: Stop::<Identity, Impl, OFFSET>,
            GetRecordingStatus: GetRecordingStatus::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBufferRecordControl as ::windows::core::Interface>::IID
    }
}
pub trait IStreamBufferRecordingAttribute_Impl: Sized {
    fn SetAttribute(&self, ulreserved: u32, pszattributename: &::windows::core::PCWSTR, streambufferattributetype: STREAMBUFFER_ATTR_DATATYPE, pbattribute: *const u8, cbattributelength: u16) -> ::windows::core::Result<()>;
    fn GetAttributeCount(&self, ulreserved: u32) -> ::windows::core::Result<u16>;
    fn GetAttributeByName(&self, pszattributename: &::windows::core::PCWSTR, pulreserved: *const u32, pstreambufferattributetype: *mut STREAMBUFFER_ATTR_DATATYPE, pbattribute: *mut u8, pcblength: *mut u16) -> ::windows::core::Result<()>;
    fn GetAttributeByIndex(&self, windex: u16, pulreserved: *const u32, pszattributename: ::windows::core::PWSTR, pcchnamelength: *mut u16, pstreambufferattributetype: *mut STREAMBUFFER_ATTR_DATATYPE, pbattribute: *mut u8, pcblength: *mut u16) -> ::windows::core::Result<()>;
    fn EnumAttributes(&self) -> ::windows::core::Result<IEnumStreamBufferRecordingAttrib>;
}
impl ::windows::core::RuntimeName for IStreamBufferRecordingAttribute {}
impl IStreamBufferRecordingAttribute_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecordingAttribute_Impl, const OFFSET: isize>() -> IStreamBufferRecordingAttribute_Vtbl {
        unsafe extern "system" fn SetAttribute<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecordingAttribute_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulreserved: u32, pszattributename: ::windows::core::PCWSTR, streambufferattributetype: STREAMBUFFER_ATTR_DATATYPE, pbattribute: *const u8, cbattributelength: u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAttribute(::core::mem::transmute_copy(&ulreserved), ::core::mem::transmute(&pszattributename), ::core::mem::transmute_copy(&streambufferattributetype), ::core::mem::transmute_copy(&pbattribute), ::core::mem::transmute_copy(&cbattributelength)).into()
        }
        unsafe extern "system" fn GetAttributeCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecordingAttribute_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulreserved: u32, pcattributes: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAttributeCount(::core::mem::transmute_copy(&ulreserved)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pcattributes, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAttributeByName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecordingAttribute_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszattributename: ::windows::core::PCWSTR, pulreserved: *const u32, pstreambufferattributetype: *mut STREAMBUFFER_ATTR_DATATYPE, pbattribute: *mut u8, pcblength: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAttributeByName(::core::mem::transmute(&pszattributename), ::core::mem::transmute_copy(&pulreserved), ::core::mem::transmute_copy(&pstreambufferattributetype), ::core::mem::transmute_copy(&pbattribute), ::core::mem::transmute_copy(&pcblength)).into()
        }
        unsafe extern "system" fn GetAttributeByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecordingAttribute_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, windex: u16, pulreserved: *const u32, pszattributename: ::windows::core::PWSTR, pcchnamelength: *mut u16, pstreambufferattributetype: *mut STREAMBUFFER_ATTR_DATATYPE, pbattribute: *mut u8, pcblength: *mut u16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAttributeByIndex(::core::mem::transmute_copy(&windex), ::core::mem::transmute_copy(&pulreserved), ::core::mem::transmute_copy(&pszattributename), ::core::mem::transmute_copy(&pcchnamelength), ::core::mem::transmute_copy(&pstreambufferattributetype), ::core::mem::transmute_copy(&pbattribute), ::core::mem::transmute_copy(&pcblength)).into()
        }
        unsafe extern "system" fn EnumAttributes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferRecordingAttribute_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppienumstreambufferattrib: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumAttributes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppienumstreambufferattrib, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAttribute: SetAttribute::<Identity, Impl, OFFSET>,
            GetAttributeCount: GetAttributeCount::<Identity, Impl, OFFSET>,
            GetAttributeByName: GetAttributeByName::<Identity, Impl, OFFSET>,
            GetAttributeByIndex: GetAttributeByIndex::<Identity, Impl, OFFSET>,
            EnumAttributes: EnumAttributes::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBufferRecordingAttribute as ::windows::core::Interface>::IID
    }
}
pub trait IStreamBufferSink_Impl: Sized {
    fn LockProfile(&self, pszstreambufferfilename: &::windows::core::PCWSTR) -> ::windows::core::Result<()>;
    fn CreateRecorder(&self, pszfilename: &::windows::core::PCWSTR, dwrecordtype: u32) -> ::windows::core::Result<::windows::core::IUnknown>;
    fn IsProfileLocked(&self) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IStreamBufferSink {}
impl IStreamBufferSink_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferSink_Impl, const OFFSET: isize>() -> IStreamBufferSink_Vtbl {
        unsafe extern "system" fn LockProfile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferSink_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszstreambufferfilename: ::windows::core::PCWSTR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.LockProfile(::core::mem::transmute(&pszstreambufferfilename)).into()
        }
        unsafe extern "system" fn CreateRecorder<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferSink_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pszfilename: ::windows::core::PCWSTR, dwrecordtype: u32, precordingiunknown: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CreateRecorder(::core::mem::transmute(&pszfilename), ::core::mem::transmute_copy(&dwrecordtype)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(precordingiunknown, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsProfileLocked<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferSink_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsProfileLocked().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            LockProfile: LockProfile::<Identity, Impl, OFFSET>,
            CreateRecorder: CreateRecorder::<Identity, Impl, OFFSET>,
            IsProfileLocked: IsProfileLocked::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBufferSink as ::windows::core::Interface>::IID
    }
}
pub trait IStreamBufferSink2_Impl: Sized + IStreamBufferSink_Impl {
    fn UnlockProfile(&self) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IStreamBufferSink2 {}
impl IStreamBufferSink2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferSink2_Impl, const OFFSET: isize>() -> IStreamBufferSink2_Vtbl {
        unsafe extern "system" fn UnlockProfile<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferSink2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnlockProfile().into()
        }
        Self { base__: IStreamBufferSink_Vtbl::new::<Identity, Impl, OFFSET>(), UnlockProfile: UnlockProfile::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBufferSink2 as ::windows::core::Interface>::IID || iid == &<IStreamBufferSink as ::windows::core::Interface>::IID
    }
}
pub trait IStreamBufferSink3_Impl: Sized + IStreamBufferSink2_Impl {
    fn SetAvailableFilter(&self, prtmin: *mut i64) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IStreamBufferSink3 {}
impl IStreamBufferSink3_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferSink3_Impl, const OFFSET: isize>() -> IStreamBufferSink3_Vtbl {
        unsafe extern "system" fn SetAvailableFilter<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferSink3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prtmin: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAvailableFilter(::core::mem::transmute_copy(&prtmin)).into()
        }
        Self { base__: IStreamBufferSink2_Vtbl::new::<Identity, Impl, OFFSET>(), SetAvailableFilter: SetAvailableFilter::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBufferSink3 as ::windows::core::Interface>::IID || iid == &<IStreamBufferSink as ::windows::core::Interface>::IID || iid == &<IStreamBufferSink2 as ::windows::core::Interface>::IID
    }
}
pub trait IStreamBufferSource_Impl: Sized {
    fn SetStreamSink(&self, pistreambuffersink: &::core::option::Option<IStreamBufferSink>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IStreamBufferSource {}
impl IStreamBufferSource_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferSource_Impl, const OFFSET: isize>() -> IStreamBufferSource_Vtbl {
        unsafe extern "system" fn SetStreamSink<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBufferSource_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pistreambuffersink: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStreamSink(::core::mem::transmute(&pistreambuffersink)).into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetStreamSink: SetStreamSink::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBufferSource as ::windows::core::Interface>::IID
    }
}
pub trait IStreamBuilder_Impl: Sized {
    fn Render(&self, ppinout: &::core::option::Option<IPin>, pgraph: &::core::option::Option<IGraphBuilder>) -> ::windows::core::Result<()>;
    fn Backout(&self, ppinout: &::core::option::Option<IPin>, pgraph: &::core::option::Option<IGraphBuilder>) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IStreamBuilder {}
impl IStreamBuilder_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBuilder_Impl, const OFFSET: isize>() -> IStreamBuilder_Vtbl {
        unsafe extern "system" fn Render<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppinout: *mut ::core::ffi::c_void, pgraph: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Render(::core::mem::transmute(&ppinout), ::core::mem::transmute(&pgraph)).into()
        }
        unsafe extern "system" fn Backout<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamBuilder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppinout: *mut ::core::ffi::c_void, pgraph: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Backout(::core::mem::transmute(&ppinout), ::core::mem::transmute(&pgraph)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Render: Render::<Identity, Impl, OFFSET>,
            Backout: Backout::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamBuilder as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IStreamSample_Impl: Sized {
    fn GetMediaStream(&self, ppmediastream: *const ::core::option::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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IStreamSample {}
#[cfg(feature = "Win32_Foundation")]
impl IStreamSample_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamSample_Impl, const OFFSET: isize>() -> IStreamSample_Vtbl {
        unsafe extern "system" fn GetMediaStream<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppmediastream: *const *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMediaStream(::core::mem::transmute_copy(&ppmediastream)).into()
        }
        unsafe extern "system" fn GetSampleTimes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstarttime: *mut i64, pendtime: *mut i64, pcurrenttime: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetSampleTimes(::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<Impl = Impl>, Impl: IStreamSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pstarttime: *const i64, pendtime: *const i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSampleTimes(::core::mem::transmute_copy(&pstarttime), ::core::mem::transmute_copy(&pendtime)).into()
        }
        unsafe extern "system" fn Update<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwflags: u32, hevent: super::super::Foundation::HANDLE, pfnapc: *mut ::core::ffi::c_void, dwapcdata: usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Update(::core::mem::transmute_copy(&dwflags), ::core::mem::transmute_copy(&hevent), ::core::mem::transmute(&pfnapc), ::core::mem::transmute_copy(&dwapcdata)).into()
        }
        unsafe extern "system" fn CompletionStatus<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IStreamSample_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwflags: u32, dwmilliseconds: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CompletionStatus(::core::mem::transmute_copy(&dwflags), ::core::mem::transmute_copy(&dwmilliseconds)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetMediaStream: GetMediaStream::<Identity, Impl, OFFSET>,
            GetSampleTimes: GetSampleTimes::<Identity, Impl, OFFSET>,
            SetSampleTimes: SetSampleTimes::<Identity, Impl, OFFSET>,
            Update: Update::<Identity, Impl, OFFSET>,
            CompletionStatus: CompletionStatus::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IStreamSample as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait ITSDT_Impl: Sized {
    fn Initialize(&self, psectionlist: &::core::option::Option<ISectionList>, pmpegdata: &::core::option::Option<IMpeg2Data>) -> ::windows::core::Result<()>;
    fn GetVersionNumber(&self) -> ::windows::core::Result<u8>;
    fn GetCountOfTableDescriptors(&self) -> ::windows::core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> ::windows::core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut ::core::option::Option<IGenericDescriptor>) -> ::windows::core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn GetNextTable(&self) -> ::windows::core::Result<ITSDT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::Result<()>;
    fn ConvertNextToCurrent(&self) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for ITSDT {}
#[cfg(feature = "Win32_Foundation")]
impl ITSDT_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITSDT_Impl, const OFFSET: isize>() -> ITSDT_Vtbl {
        unsafe extern "system" fn Initialize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITSDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psectionlist: *mut ::core::ffi::c_void, pmpegdata: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Initialize(::core::mem::transmute(&psectionlist), ::core::mem::transmute(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITSDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbval: *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetVersionNumber() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITSDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwval: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCountOfTableDescriptors() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITSDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetTableDescriptorByIndex(::core::mem::transmute_copy(&dwindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppdescriptor, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITSDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetTableDescriptorByTag(::core::mem::transmute_copy(&btag), ::core::mem::transmute_copy(&pdwcookie), ::core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITSDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableavailable: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForNextTable(::core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITSDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pptsdt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNextTable() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pptsdt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITSDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hnexttableiscurrent: super::super::Foundation::HANDLE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RegisterForWhenCurrent(::core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITSDT_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ConvertNextToCurrent().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, Impl, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, Impl, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, Impl, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, Impl, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, Impl, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, Impl, OFFSET>,
            GetNextTable: GetNextTable::<Identity, Impl, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, Impl, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ITSDT as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait ITuneRequest_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn TuningSpace(&self) -> ::windows::core::Result<ITuningSpace>;
    fn Components(&self) -> ::windows::core::Result<IComponents>;
    fn Clone(&self) -> ::windows::core::Result<ITuneRequest>;
    fn Locator(&self) -> ::windows::core::Result<ILocator>;
    fn SetLocator(&self, locator: &::core::option::Option<ILocator>) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for ITuneRequest {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ITuneRequest_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequest_Impl, const OFFSET: isize>() -> ITuneRequest_Vtbl {
        unsafe extern "system" fn TuningSpace<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tuningspace: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TuningSpace() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tuningspace, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Components<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, components: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Components() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(components, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newtunerequest: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newtunerequest, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Locator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, locator: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Locator() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(locator, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequest_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, locator: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLocator(::core::mem::transmute(&locator)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            TuningSpace: TuningSpace::<Identity, Impl, OFFSET>,
            Components: Components::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
            Locator: Locator::<Identity, Impl, OFFSET>,
            SetLocator: SetLocator::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ITuneRequest as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ITuneRequestInfo_Impl: Sized {
    fn GetLocatorData(&self, request: &::core::option::Option<ITuneRequest>) -> ::windows::core::Result<()>;
    fn GetComponentData(&self, currentrequest: &::core::option::Option<ITuneRequest>) -> ::windows::core::Result<()>;
    fn CreateComponentList(&self, currentrequest: &::core::option::Option<ITuneRequest>) -> ::windows::core::Result<()>;
    fn GetNextProgram(&self, currentrequest: &::core::option::Option<ITuneRequest>) -> ::windows::core::Result<ITuneRequest>;
    fn GetPreviousProgram(&self, currentrequest: &::core::option::Option<ITuneRequest>) -> ::windows::core::Result<ITuneRequest>;
    fn GetNextLocator(&self, currentrequest: &::core::option::Option<ITuneRequest>) -> ::windows::core::Result<ITuneRequest>;
    fn GetPreviousLocator(&self, currentrequest: &::core::option::Option<ITuneRequest>) -> ::windows::core::Result<ITuneRequest>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for ITuneRequestInfo {}
#[cfg(feature = "Win32_System_Com")]
impl ITuneRequestInfo_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequestInfo_Impl, const OFFSET: isize>() -> ITuneRequestInfo_Vtbl {
        unsafe extern "system" fn GetLocatorData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequestInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, request: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLocatorData(::core::mem::transmute(&request)).into()
        }
        unsafe extern "system" fn GetComponentData<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequestInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, currentrequest: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetComponentData(::core::mem::transmute(&currentrequest)).into()
        }
        unsafe extern "system" fn CreateComponentList<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequestInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, currentrequest: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CreateComponentList(::core::mem::transmute(&currentrequest)).into()
        }
        unsafe extern "system" fn GetNextProgram<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequestInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, currentrequest: *mut ::core::ffi::c_void, tunerequest: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNextProgram(::core::mem::transmute(&currentrequest)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tunerequest, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPreviousProgram<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequestInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, currentrequest: *mut ::core::ffi::c_void, tunerequest: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPreviousProgram(::core::mem::transmute(&currentrequest)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tunerequest, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNextLocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequestInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, currentrequest: *mut ::core::ffi::c_void, tunerequest: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNextLocator(::core::mem::transmute(&currentrequest)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tunerequest, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPreviousLocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequestInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, currentrequest: *mut ::core::ffi::c_void, tunerequest: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetPreviousLocator(::core::mem::transmute(&currentrequest)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tunerequest, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetLocatorData: GetLocatorData::<Identity, Impl, OFFSET>,
            GetComponentData: GetComponentData::<Identity, Impl, OFFSET>,
            CreateComponentList: CreateComponentList::<Identity, Impl, OFFSET>,
            GetNextProgram: GetNextProgram::<Identity, Impl, OFFSET>,
            GetPreviousProgram: GetPreviousProgram::<Identity, Impl, OFFSET>,
            GetNextLocator: GetNextLocator::<Identity, Impl, OFFSET>,
            GetPreviousLocator: GetPreviousLocator::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ITuneRequestInfo as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ITuneRequestInfoEx_Impl: Sized + ITuneRequestInfo_Impl {
    fn CreateComponentListEx(&self, currentrequest: &::core::option::Option<ITuneRequest>) -> ::windows::core::Result<::windows::core::IUnknown>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for ITuneRequestInfoEx {}
#[cfg(feature = "Win32_System_Com")]
impl ITuneRequestInfoEx_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequestInfoEx_Impl, const OFFSET: isize>() -> ITuneRequestInfoEx_Vtbl {
        unsafe extern "system" fn CreateComponentListEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuneRequestInfoEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, currentrequest: *mut ::core::ffi::c_void, ppcurpmt: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CreateComponentListEx(::core::mem::transmute(&currentrequest)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppcurpmt, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ITuneRequestInfo_Vtbl::new::<Identity, Impl, OFFSET>(), CreateComponentListEx: CreateComponentListEx::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ITuneRequestInfoEx as ::windows::core::Interface>::IID || iid == &<ITuneRequestInfo as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ITuner_Impl: Sized {
    fn TuningSpace(&self) -> ::windows::core::Result<ITuningSpace>;
    fn SetTuningSpace(&self, tuningspace: &::core::option::Option<ITuningSpace>) -> ::windows::core::Result<()>;
    fn EnumTuningSpaces(&self) -> ::windows::core::Result<IEnumTuningSpaces>;
    fn TuneRequest(&self) -> ::windows::core::Result<ITuneRequest>;
    fn SetTuneRequest(&self, tunerequest: &::core::option::Option<ITuneRequest>) -> ::windows::core::Result<()>;
    fn Validate(&self, tunerequest: &::core::option::Option<ITuneRequest>) -> ::windows::core::Result<()>;
    fn PreferredComponentTypes(&self) -> ::windows::core::Result<IComponentTypes>;
    fn SetPreferredComponentTypes(&self, componenttypes: &::core::option::Option<IComponentTypes>) -> ::windows::core::Result<()>;
    fn SignalStrength(&self) -> ::windows::core::Result<i32>;
    fn TriggerSignalEvents(&self, interval: i32) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl ::windows::core::RuntimeName for ITuner {}
#[cfg(feature = "Win32_System_Com")]
impl ITuner_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuner_Impl, const OFFSET: isize>() -> ITuner_Vtbl {
        unsafe extern "system" fn TuningSpace<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tuningspace: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TuningSpace() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tuningspace, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTuningSpace<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tuningspace: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTuningSpace(::core::mem::transmute(&tuningspace)).into()
        }
        unsafe extern "system" fn EnumTuningSpaces<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumTuningSpaces() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TuneRequest<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tunerequest: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TuneRequest() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tunerequest, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTuneRequest<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tunerequest: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTuneRequest(::core::mem::transmute(&tunerequest)).into()
        }
        unsafe extern "system" fn Validate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tunerequest: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Validate(::core::mem::transmute(&tunerequest)).into()
        }
        unsafe extern "system" fn PreferredComponentTypes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, componenttypes: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.PreferredComponentTypes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(componenttypes, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPreferredComponentTypes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, componenttypes: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPreferredComponentTypes(::core::mem::transmute(&componenttypes)).into()
        }
        unsafe extern "system" fn SignalStrength<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strength: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.SignalStrength() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(strength, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TriggerSignalEvents<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuner_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, interval: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TriggerSignalEvents(::core::mem::transmute_copy(&interval)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            TuningSpace: TuningSpace::<Identity, Impl, OFFSET>,
            SetTuningSpace: SetTuningSpace::<Identity, Impl, OFFSET>,
            EnumTuningSpaces: EnumTuningSpaces::<Identity, Impl, OFFSET>,
            TuneRequest: TuneRequest::<Identity, Impl, OFFSET>,
            SetTuneRequest: SetTuneRequest::<Identity, Impl, OFFSET>,
            Validate: Validate::<Identity, Impl, OFFSET>,
            PreferredComponentTypes: PreferredComponentTypes::<Identity, Impl, OFFSET>,
            SetPreferredComponentTypes: SetPreferredComponentTypes::<Identity, Impl, OFFSET>,
            SignalStrength: SignalStrength::<Identity, Impl, OFFSET>,
            TriggerSignalEvents: TriggerSignalEvents::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ITuner as ::windows::core::Interface>::IID
    }
}
pub trait ITunerCap_Impl: Sized {
    fn get_SupportedNetworkTypes(&self, ulcnetworktypesmax: u32, pulcnetworktypes: *mut u32, pguidnetworktypes: *mut ::windows::core::GUID) -> ::windows::core::Result<()>;
    fn get_SupportedVideoFormats(&self, pulamtunermodetype: *mut u32, pulanalogvideostandard: *mut u32) -> ::windows::core::Result<()>;
    fn get_AuxInputCount(&self, pulcompositecount: *mut u32, pulsvideocount: *mut u32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for ITunerCap {}
impl ITunerCap_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITunerCap_Impl, const OFFSET: isize>() -> ITunerCap_Vtbl {
        unsafe extern "system" fn get_SupportedNetworkTypes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITunerCap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ulcnetworktypesmax: u32, pulcnetworktypes: *mut u32, pguidnetworktypes: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_SupportedNetworkTypes(::core::mem::transmute_copy(&ulcnetworktypesmax), ::core::mem::transmute_copy(&pulcnetworktypes), ::core::mem::transmute_copy(&pguidnetworktypes)).into()
        }
        unsafe extern "system" fn get_SupportedVideoFormats<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITunerCap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulamtunermodetype: *mut u32, pulanalogvideostandard: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_SupportedVideoFormats(::core::mem::transmute_copy(&pulamtunermodetype), ::core::mem::transmute_copy(&pulanalogvideostandard)).into()
        }
        unsafe extern "system" fn get_AuxInputCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITunerCap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pulcompositecount: *mut u32, pulsvideocount: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_AuxInputCount(::core::mem::transmute_copy(&pulcompositecount), ::core::mem::transmute_copy(&pulsvideocount)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            get_SupportedNetworkTypes: get_SupportedNetworkTypes::<Identity, Impl, OFFSET>,
            get_SupportedVideoFormats: get_SupportedVideoFormats::<Identity, Impl, OFFSET>,
            get_AuxInputCount: get_AuxInputCount::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ITunerCap as ::windows::core::Interface>::IID
    }
}
pub trait ITunerCapEx_Impl: Sized {
    fn Has608_708Caption(&self) -> ::windows::core::Result<i16>;
}
impl ::windows::core::RuntimeName for ITunerCapEx {}
impl ITunerCapEx_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITunerCapEx_Impl, const OFFSET: isize>() -> ITunerCapEx_Vtbl {
        unsafe extern "system" fn Has608_708Caption<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITunerCapEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbhascaption: *mut i16) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Has608_708Caption() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbhascaption, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Has608_708Caption: Has608_708Caption::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ITunerCapEx as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait ITuningSpace_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn UniqueName(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn SetUniqueName(&self, name: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn FriendlyName(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn SetFriendlyName(&self, name: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn CLSID(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn NetworkType(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn SetNetworkType(&self, networktypeguid: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn _NetworkType(&self) -> ::windows::core::Result<::windows::core::GUID>;
    fn Set_NetworkType(&self, networktypeguid: *const ::windows::core::GUID) -> ::windows::core::Result<()>;
    fn CreateTuneRequest(&self) -> ::windows::core::Result<ITuneRequest>;
    fn EnumCategoryGUIDs(&self) -> ::windows::core::Result<super::super::System::Com::IEnumGUID>;
    fn EnumDeviceMonikers(&self) -> ::windows::core::Result<super::super::System::Com::IEnumMoniker>;
    fn DefaultPreferredComponentTypes(&self) -> ::windows::core::Result<IComponentTypes>;
    fn SetDefaultPreferredComponentTypes(&self, newcomponenttypes: &::core::option::Option<IComponentTypes>) -> ::windows::core::Result<()>;
    fn FrequencyMapping(&self) -> ::windows::core::Result<::windows::core::BSTR>;
    fn SetFrequencyMapping(&self, mapping: &::windows::core::BSTR) -> ::windows::core::Result<()>;
    fn DefaultLocator(&self) -> ::windows::core::Result<ILocator>;
    fn SetDefaultLocator(&self, locatorval: &::core::option::Option<ILocator>) -> ::windows::core::Result<()>;
    fn Clone(&self) -> ::windows::core::Result<ITuningSpace>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for ITuningSpace {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ITuningSpace_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>() -> ITuningSpace_Vtbl {
        unsafe extern "system" fn UniqueName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, name: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.UniqueName() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(name, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetUniqueName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, name: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetUniqueName(::core::mem::transmute(&name)).into()
        }
        unsafe extern "system" fn FriendlyName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, name: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FriendlyName() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(name, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFriendlyName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, name: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFriendlyName(::core::mem::transmute(&name)).into()
        }
        unsafe extern "system" fn CLSID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, spaceclsid: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CLSID() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(spaceclsid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn NetworkType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, networktypeguid: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.NetworkType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(networktypeguid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetNetworkType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, networktypeguid: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetNetworkType(::core::mem::transmute(&networktypeguid)).into()
        }
        unsafe extern "system" fn _NetworkType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, networktypeguid: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._NetworkType() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(networktypeguid, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_NetworkType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, networktypeguid: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Set_NetworkType(::core::mem::transmute_copy(&networktypeguid)).into()
        }
        unsafe extern "system" fn CreateTuneRequest<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tunerequest: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CreateTuneRequest() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tunerequest, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumCategoryGUIDs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumCategoryGUIDs() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumDeviceMonikers<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumDeviceMonikers() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DefaultPreferredComponentTypes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, componenttypes: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DefaultPreferredComponentTypes() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(componenttypes, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultPreferredComponentTypes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newcomponenttypes: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDefaultPreferredComponentTypes(::core::mem::transmute(&newcomponenttypes)).into()
        }
        unsafe extern "system" fn FrequencyMapping<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmapping: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FrequencyMapping() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmapping, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFrequencyMapping<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mapping: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFrequencyMapping(::core::mem::transmute(&mapping)).into()
        }
        unsafe extern "system" fn DefaultLocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, locatorval: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.DefaultLocator() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(locatorval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultLocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, locatorval: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDefaultLocator(::core::mem::transmute(&locatorval)).into()
        }
        unsafe extern "system" fn Clone<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpace_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newts: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Clone() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newts, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            UniqueName: UniqueName::<Identity, Impl, OFFSET>,
            SetUniqueName: SetUniqueName::<Identity, Impl, OFFSET>,
            FriendlyName: FriendlyName::<Identity, Impl, OFFSET>,
            SetFriendlyName: SetFriendlyName::<Identity, Impl, OFFSET>,
            CLSID: CLSID::<Identity, Impl, OFFSET>,
            NetworkType: NetworkType::<Identity, Impl, OFFSET>,
            SetNetworkType: SetNetworkType::<Identity, Impl, OFFSET>,
            _NetworkType: _NetworkType::<Identity, Impl, OFFSET>,
            Set_NetworkType: Set_NetworkType::<Identity, Impl, OFFSET>,
            CreateTuneRequest: CreateTuneRequest::<Identity, Impl, OFFSET>,
            EnumCategoryGUIDs: EnumCategoryGUIDs::<Identity, Impl, OFFSET>,
            EnumDeviceMonikers: EnumDeviceMonikers::<Identity, Impl, OFFSET>,
            DefaultPreferredComponentTypes: DefaultPreferredComponentTypes::<Identity, Impl, OFFSET>,
            SetDefaultPreferredComponentTypes: SetDefaultPreferredComponentTypes::<Identity, Impl, OFFSET>,
            FrequencyMapping: FrequencyMapping::<Identity, Impl, OFFSET>,
            SetFrequencyMapping: SetFrequencyMapping::<Identity, Impl, OFFSET>,
            DefaultLocator: DefaultLocator::<Identity, Impl, OFFSET>,
            SetDefaultLocator: SetDefaultLocator::<Identity, Impl, OFFSET>,
            Clone: Clone::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ITuningSpace as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait ITuningSpaceContainer_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> ::windows::core::Result<i32>;
    fn _NewEnum(&self) -> ::windows::core::Result<super::super::System::Ole::IEnumVARIANT>;
    fn get_Item(&self, varindex: &super::super::System::Com::VARIANT) -> ::windows::core::Result<ITuningSpace>;
    fn put_Item(&self, varindex: &super::super::System::Com::VARIANT, tuningspace: &::core::option::Option<ITuningSpace>) -> ::windows::core::Result<()>;
    fn TuningSpacesForCLSID(&self, spaceclsid: &::windows::core::BSTR) -> ::windows::core::Result<ITuningSpaces>;
    fn _TuningSpacesForCLSID2(&self, spaceclsid: *const ::windows::core::GUID) -> ::windows::core::Result<ITuningSpaces>;
    fn TuningSpacesForName(&self, name: &::windows::core::BSTR) -> ::windows::core::Result<ITuningSpaces>;
    fn FindID(&self, tuningspace: &::core::option::Option<ITuningSpace>) -> ::windows::core::Result<i32>;
    fn Add(&self, tuningspace: &::core::option::Option<ITuningSpace>) -> ::windows::core::Result<super::super::System::Com::VARIANT>;
    fn EnumTuningSpaces(&self) -> ::windows::core::Result<IEnumTuningSpaces>;
    fn Remove(&self, index: &super::super::System::Com::VARIANT) -> ::windows::core::Result<()>;
    fn MaxCount(&self) -> ::windows::core::Result<i32>;
    fn SetMaxCount(&self, maxcount: i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for ITuningSpaceContainer {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ITuningSpaceContainer_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaceContainer_Impl, const OFFSET: isize>() -> ITuningSpaceContainer_Vtbl {
        unsafe extern "system" fn Count<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaceContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, count: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Count() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(count, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaceContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._NewEnum() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaceContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, varindex: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, tuningspace: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_Item(::core::mem::transmute(&varindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tuningspace, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_Item<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaceContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, varindex: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, tuningspace: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Item(::core::mem::transmute(&varindex), ::core::mem::transmute(&tuningspace)).into()
        }
        unsafe extern "system" fn TuningSpacesForCLSID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaceContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, spaceclsid: ::core::mem::ManuallyDrop<::windows::core::BSTR>, newcoll: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TuningSpacesForCLSID(::core::mem::transmute(&spaceclsid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newcoll, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _TuningSpacesForCLSID2<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaceContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, spaceclsid: *const ::windows::core::GUID, newcoll: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._TuningSpacesForCLSID2(::core::mem::transmute_copy(&spaceclsid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newcoll, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TuningSpacesForName<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaceContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, name: ::core::mem::ManuallyDrop<::windows::core::BSTR>, newcoll: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.TuningSpacesForName(::core::mem::transmute(&name)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newcoll, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FindID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaceContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tuningspace: *mut ::core::ffi::c_void, id: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FindID(::core::mem::transmute(&tuningspace)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(id, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaceContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, tuningspace: *mut ::core::ffi::c_void, newindex: *mut ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Add(::core::mem::transmute(&tuningspace)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newindex, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumTuningSpaces<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaceContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumTuningSpaces() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Remove<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaceContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, index: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Remove(::core::mem::transmute(&index)).into()
        }
        unsafe extern "system" fn MaxCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaceContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, maxcount: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MaxCount() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(maxcount, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxCount<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaceContainer_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, maxcount: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMaxCount(::core::mem::transmute_copy(&maxcount)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Count: Count::<Identity, Impl, OFFSET>,
            _NewEnum: _NewEnum::<Identity, Impl, OFFSET>,
            get_Item: get_Item::<Identity, Impl, OFFSET>,
            put_Item: put_Item::<Identity, Impl, OFFSET>,
            TuningSpacesForCLSID: TuningSpacesForCLSID::<Identity, Impl, OFFSET>,
            _TuningSpacesForCLSID2: _TuningSpacesForCLSID2::<Identity, Impl, OFFSET>,
            TuningSpacesForName: TuningSpacesForName::<Identity, Impl, OFFSET>,
            FindID: FindID::<Identity, Impl, OFFSET>,
            Add: Add::<Identity, Impl, OFFSET>,
            EnumTuningSpaces: EnumTuningSpaces::<Identity, Impl, OFFSET>,
            Remove: Remove::<Identity, Impl, OFFSET>,
            MaxCount: MaxCount::<Identity, Impl, OFFSET>,
            SetMaxCount: SetMaxCount::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ITuningSpaceContainer as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait ITuningSpaces_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> ::windows::core::Result<i32>;
    fn _NewEnum(&self) -> ::windows::core::Result<super::super::System::Ole::IEnumVARIANT>;
    fn get_Item(&self, varindex: &super::super::System::Com::VARIANT) -> ::windows::core::Result<ITuningSpace>;
    fn EnumTuningSpaces(&self) -> ::windows::core::Result<IEnumTuningSpaces>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for ITuningSpaces {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ITuningSpaces_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaces_Impl, const OFFSET: isize>() -> ITuningSpaces_Vtbl {
        unsafe extern "system" fn Count<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaces_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, count: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Count() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(count, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaces_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this._NewEnum() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaces_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, varindex: ::core::mem::ManuallyDrop<super::super::System::Com::VARIANT>, tuningspace: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.get_Item(::core::mem::transmute(&varindex)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(tuningspace, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumTuningSpaces<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: ITuningSpaces_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, newenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.EnumTuningSpaces() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(newenum, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Count: Count::<Identity, Impl, OFFSET>,
            _NewEnum: _NewEnum::<Identity, Impl, OFFSET>,
            get_Item: get_Item::<Identity, Impl, OFFSET>,
            EnumTuningSpaces: EnumTuningSpaces::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<ITuningSpaces as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
pub trait IVMRAspectRatioControl_Impl: Sized {
    fn GetAspectRatioMode(&self, lpdwarmode: *mut u32) -> ::windows::core::Result<()>;
    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<Impl = Impl>, Impl: IVMRAspectRatioControl_Impl, const OFFSET: isize>() -> IVMRAspectRatioControl_Vtbl {
        unsafe extern "system" fn GetAspectRatioMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRAspectRatioControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpdwarmode: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAspectRatioMode(::core::mem::transmute_copy(&lpdwarmode)).into()
        }
        unsafe extern "system" fn SetAspectRatioMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRAspectRatioControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwarmode: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAspectRatioMode(::core::mem::transmute_copy(&dwarmode)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAspectRatioMode: GetAspectRatioMode::<Identity, Impl, OFFSET>,
            SetAspectRatioMode: SetAspectRatioMode::<Identity, Impl, 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<Impl = Impl>, Impl: IVMRAspectRatioControl9_Impl, const OFFSET: isize>() -> IVMRAspectRatioControl9_Vtbl {
        unsafe extern "system" fn GetAspectRatioMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRAspectRatioControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpdwarmode: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAspectRatioMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpdwarmode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAspectRatioMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRAspectRatioControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwarmode: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAspectRatioMode(::core::mem::transmute_copy(&dwarmode)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAspectRatioMode: GetAspectRatioMode::<Identity, Impl, OFFSET>,
            SetAspectRatioMode: SetAspectRatioMode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRAspectRatioControl9 as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IVMRDeinterlaceControl_Impl: Sized {
    fn GetNumberOfDeinterlaceModes(&self, lpvideodescription: *mut VMRVideoDesc, lpdwnumdeinterlacemodes: *mut u32, lpdeinterlacemodes: *mut ::windows::core::GUID) -> ::windows::core::Result<()>;
    fn GetDeinterlaceModeCaps(&self, lpdeinterlacemode: *mut ::windows::core::GUID, lpvideodescription: *mut VMRVideoDesc, lpdeinterlacecaps: *mut VMRDeinterlaceCaps) -> ::windows::core::Result<()>;
    fn GetDeinterlaceMode(&self, dwstreamid: u32, lpdeinterlacemode: *mut ::windows::core::GUID) -> ::windows::core::Result<()>;
    fn SetDeinterlaceMode(&self, dwstreamid: u32, lpdeinterlacemode: *mut ::windows::core::GUID) -> ::windows::core::Result<()>;
    fn GetDeinterlacePrefs(&self, lpdwdeinterlaceprefs: *mut u32) -> ::windows::core::Result<()>;
    fn SetDeinterlacePrefs(&self, dwdeinterlaceprefs: u32) -> ::windows::core::Result<()>;
    fn GetActualDeinterlaceMode(&self, dwstreamid: u32, lpdeinterlacemode: *mut ::windows::core::GUID) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IVMRDeinterlaceControl {}
#[cfg(feature = "Win32_Foundation")]
impl IVMRDeinterlaceControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRDeinterlaceControl_Impl, const OFFSET: isize>() -> IVMRDeinterlaceControl_Vtbl {
        unsafe extern "system" fn GetNumberOfDeinterlaceModes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRDeinterlaceControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpvideodescription: *mut VMRVideoDesc, lpdwnumdeinterlacemodes: *mut u32, lpdeinterlacemodes: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetNumberOfDeinterlaceModes(::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<Impl = Impl>, Impl: IVMRDeinterlaceControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpdeinterlacemode: *mut ::windows::core::GUID, lpvideodescription: *mut VMRVideoDesc, lpdeinterlacecaps: *mut VMRDeinterlaceCaps) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDeinterlaceModeCaps(::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<Impl = Impl>, Impl: IVMRDeinterlaceControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, lpdeinterlacemode: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDeinterlaceMode(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&lpdeinterlacemode)).into()
        }
        unsafe extern "system" fn SetDeinterlaceMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRDeinterlaceControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, lpdeinterlacemode: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDeinterlaceMode(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&lpdeinterlacemode)).into()
        }
        unsafe extern "system" fn GetDeinterlacePrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRDeinterlaceControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpdwdeinterlaceprefs: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDeinterlacePrefs(::core::mem::transmute_copy(&lpdwdeinterlaceprefs)).into()
        }
        unsafe extern "system" fn SetDeinterlacePrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRDeinterlaceControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwdeinterlaceprefs: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDeinterlacePrefs(::core::mem::transmute_copy(&dwdeinterlaceprefs)).into()
        }
        unsafe extern "system" fn GetActualDeinterlaceMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRDeinterlaceControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, lpdeinterlacemode: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetActualDeinterlaceMode(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&lpdeinterlacemode)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNumberOfDeinterlaceModes: GetNumberOfDeinterlaceModes::<Identity, Impl, OFFSET>,
            GetDeinterlaceModeCaps: GetDeinterlaceModeCaps::<Identity, Impl, OFFSET>,
            GetDeinterlaceMode: GetDeinterlaceMode::<Identity, Impl, OFFSET>,
            SetDeinterlaceMode: SetDeinterlaceMode::<Identity, Impl, OFFSET>,
            GetDeinterlacePrefs: GetDeinterlacePrefs::<Identity, Impl, OFFSET>,
            SetDeinterlacePrefs: SetDeinterlacePrefs::<Identity, Impl, OFFSET>,
            GetActualDeinterlaceMode: GetActualDeinterlaceMode::<Identity, Impl, 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) -> ::windows::core::Result<VMR9DeinterlaceCaps>;
    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<Impl = Impl>, Impl: IVMRDeinterlaceControl9_Impl, const OFFSET: isize>() -> IVMRDeinterlaceControl9_Vtbl {
        unsafe extern "system" fn GetNumberOfDeinterlaceModes<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRDeinterlaceControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpvideodescription: *const VMR9VideoDesc, lpdwnumdeinterlacemodes: *mut u32, lpdeinterlacemodes: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetNumberOfDeinterlaceModes(::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<Impl = Impl>, Impl: IVMRDeinterlaceControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpdeinterlacemode: *const ::windows::core::GUID, lpvideodescription: *const VMR9VideoDesc, lpdeinterlacecaps: *mut VMR9DeinterlaceCaps) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDeinterlaceModeCaps(::core::mem::transmute_copy(&lpdeinterlacemode), ::core::mem::transmute_copy(&lpvideodescription)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpdeinterlacecaps, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDeinterlaceMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRDeinterlaceControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, lpdeinterlacemode: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDeinterlaceMode(::core::mem::transmute_copy(&dwstreamid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpdeinterlacemode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDeinterlaceMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRDeinterlaceControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, lpdeinterlacemode: *const ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDeinterlaceMode(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&lpdeinterlacemode)).into()
        }
        unsafe extern "system" fn GetDeinterlacePrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRDeinterlaceControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpdwdeinterlaceprefs: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDeinterlacePrefs() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpdwdeinterlaceprefs, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDeinterlacePrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRDeinterlaceControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwdeinterlaceprefs: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDeinterlacePrefs(::core::mem::transmute_copy(&dwdeinterlaceprefs)).into()
        }
        unsafe extern "system" fn GetActualDeinterlaceMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRDeinterlaceControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, lpdeinterlacemode: *mut ::windows::core::GUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetActualDeinterlaceMode(::core::mem::transmute_copy(&dwstreamid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpdeinterlacemode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNumberOfDeinterlaceModes: GetNumberOfDeinterlaceModes::<Identity, Impl, OFFSET>,
            GetDeinterlaceModeCaps: GetDeinterlaceModeCaps::<Identity, Impl, OFFSET>,
            GetDeinterlaceMode: GetDeinterlaceMode::<Identity, Impl, OFFSET>,
            SetDeinterlaceMode: SetDeinterlaceMode::<Identity, Impl, OFFSET>,
            GetDeinterlacePrefs: GetDeinterlacePrefs::<Identity, Impl, OFFSET>,
            SetDeinterlacePrefs: SetDeinterlacePrefs::<Identity, Impl, OFFSET>,
            GetActualDeinterlaceMode: GetActualDeinterlaceMode::<Identity, Impl, 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: &::core::option::Option<IVMRImageCompositor>) -> ::windows::core::Result<()>;
    fn SetNumberOfStreams(&self, dwmaxstreams: u32) -> ::windows::core::Result<()>;
    fn GetNumberOfStreams(&self, pdwmaxstreams: *mut u32) -> ::windows::core::Result<()>;
    fn SetRenderingPrefs(&self, dwrenderflags: u32) -> ::windows::core::Result<()>;
    fn GetRenderingPrefs(&self, pdwrenderflags: *mut u32) -> ::windows::core::Result<()>;
    fn SetRenderingMode(&self, mode: u32) -> ::windows::core::Result<()>;
    fn GetRenderingMode(&self, pmode: *mut u32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IVMRFilterConfig {}
impl IVMRFilterConfig_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig_Impl, const OFFSET: isize>() -> IVMRFilterConfig_Vtbl {
        unsafe extern "system" fn SetImageCompositor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpvmrimgcompositor: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetImageCompositor(::core::mem::transmute(&lpvmrimgcompositor)).into()
        }
        unsafe extern "system" fn SetNumberOfStreams<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwmaxstreams: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetNumberOfStreams(::core::mem::transmute_copy(&dwmaxstreams)).into()
        }
        unsafe extern "system" fn GetNumberOfStreams<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwmaxstreams: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetNumberOfStreams(::core::mem::transmute_copy(&pdwmaxstreams)).into()
        }
        unsafe extern "system" fn SetRenderingPrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrenderflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRenderingPrefs(::core::mem::transmute_copy(&dwrenderflags)).into()
        }
        unsafe extern "system" fn GetRenderingPrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwrenderflags: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRenderingPrefs(::core::mem::transmute_copy(&pdwrenderflags)).into()
        }
        unsafe extern "system" fn SetRenderingMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRenderingMode(::core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn GetRenderingMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmode: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRenderingMode(::core::mem::transmute_copy(&pmode)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetImageCompositor: SetImageCompositor::<Identity, Impl, OFFSET>,
            SetNumberOfStreams: SetNumberOfStreams::<Identity, Impl, OFFSET>,
            GetNumberOfStreams: GetNumberOfStreams::<Identity, Impl, OFFSET>,
            SetRenderingPrefs: SetRenderingPrefs::<Identity, Impl, OFFSET>,
            GetRenderingPrefs: GetRenderingPrefs::<Identity, Impl, OFFSET>,
            SetRenderingMode: SetRenderingMode::<Identity, Impl, OFFSET>,
            GetRenderingMode: GetRenderingMode::<Identity, Impl, 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: &::core::option::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<Impl = Impl>, Impl: IVMRFilterConfig9_Impl, const OFFSET: isize>() -> IVMRFilterConfig9_Vtbl {
        unsafe extern "system" fn SetImageCompositor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpvmrimgcompositor: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetImageCompositor(::core::mem::transmute(&lpvmrimgcompositor)).into()
        }
        unsafe extern "system" fn SetNumberOfStreams<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwmaxstreams: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetNumberOfStreams(::core::mem::transmute_copy(&dwmaxstreams)).into()
        }
        unsafe extern "system" fn GetNumberOfStreams<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwmaxstreams: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetNumberOfStreams() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwmaxstreams, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRenderingPrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrenderflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRenderingPrefs(::core::mem::transmute_copy(&dwrenderflags)).into()
        }
        unsafe extern "system" fn GetRenderingPrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwrenderflags: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRenderingPrefs() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwrenderflags, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRenderingMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRenderingMode(::core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn GetRenderingMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRFilterConfig9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmode: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRenderingMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pmode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetImageCompositor: SetImageCompositor::<Identity, Impl, OFFSET>,
            SetNumberOfStreams: SetNumberOfStreams::<Identity, Impl, OFFSET>,
            GetNumberOfStreams: GetNumberOfStreams::<Identity, Impl, OFFSET>,
            SetRenderingPrefs: SetRenderingPrefs::<Identity, Impl, OFFSET>,
            GetRenderingPrefs: GetRenderingPrefs::<Identity, Impl, OFFSET>,
            SetRenderingMode: SetRenderingMode::<Identity, Impl, OFFSET>,
            GetRenderingMode: GetRenderingMode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRFilterConfig9 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Media_MediaFoundation"))]
pub trait IVMRImageCompositor_Impl: Sized {
    fn InitCompositionTarget(&self, pd3ddevice: &::core::option::Option<::windows::core::IUnknown>, pddsrendertarget: &::core::option::Option<super::super::Graphics::DirectDraw::IDirectDrawSurface7>) -> ::windows::core::Result<()>;
    fn TermCompositionTarget(&self, pd3ddevice: &::core::option::Option<::windows::core::IUnknown>, pddsrendertarget: &::core::option::Option<super::super::Graphics::DirectDraw::IDirectDrawSurface7>) -> ::windows::core::Result<()>;
    fn SetStreamMediaType(&self, dwstrmid: u32, pmt: *mut super::MediaFoundation::AM_MEDIA_TYPE, ftexture: super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
    fn CompositeImage(&self, pd3ddevice: &::core::option::Option<::windows::core::IUnknown>, pddsrendertarget: &::core::option::Option<super::super::Graphics::DirectDraw::IDirectDrawSurface7>, pmtrendertarget: *mut super::MediaFoundation::AM_MEDIA_TYPE, rtstart: i64, rtend: i64, dwclrbkgnd: u32, pvideostreaminfo: *mut VMRVIDEOSTREAMINFO, cstreams: u32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IVMRImageCompositor {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Media_MediaFoundation"))]
impl IVMRImageCompositor_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImageCompositor_Impl, const OFFSET: isize>() -> IVMRImageCompositor_Vtbl {
        unsafe extern "system" fn InitCompositionTarget<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImageCompositor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pd3ddevice: *mut ::core::ffi::c_void, pddsrendertarget: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.InitCompositionTarget(::core::mem::transmute(&pd3ddevice), ::core::mem::transmute(&pddsrendertarget)).into()
        }
        unsafe extern "system" fn TermCompositionTarget<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImageCompositor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pd3ddevice: *mut ::core::ffi::c_void, pddsrendertarget: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TermCompositionTarget(::core::mem::transmute(&pd3ddevice), ::core::mem::transmute(&pddsrendertarget)).into()
        }
        unsafe extern "system" fn SetStreamMediaType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImageCompositor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstrmid: u32, pmt: *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>, ftexture: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStreamMediaType(::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<Impl = Impl>, Impl: IVMRImageCompositor_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pd3ddevice: *mut ::core::ffi::c_void, pddsrendertarget: *mut ::core::ffi::c_void, pmtrendertarget: *mut ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>, rtstart: i64, rtend: i64, dwclrbkgnd: u32, pvideostreaminfo: *mut ::core::mem::ManuallyDrop<VMRVIDEOSTREAMINFO>, cstreams: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CompositeImage(::core::mem::transmute(&pd3ddevice), ::core::mem::transmute(&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, Impl, OFFSET>,
            TermCompositionTarget: TermCompositionTarget::<Identity, Impl, OFFSET>,
            SetStreamMediaType: SetStreamMediaType::<Identity, Impl, OFFSET>,
            CompositeImage: CompositeImage::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRImageCompositor as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Direct3D9", feature = "Win32_Media_MediaFoundation"))]
pub trait IVMRImageCompositor9_Impl: Sized {
    fn InitCompositionDevice(&self, pd3ddevice: &::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
    fn TermCompositionDevice(&self, pd3ddevice: &::core::option::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: &::core::option::Option<::windows::core::IUnknown>, pddsrendertarget: &::core::option::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_Foundation", feature = "Win32_Graphics_Direct3D9", feature = "Win32_Media_MediaFoundation"))]
impl ::windows::core::RuntimeName for IVMRImageCompositor9 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Direct3D9", feature = "Win32_Media_MediaFoundation"))]
impl IVMRImageCompositor9_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImageCompositor9_Impl, const OFFSET: isize>() -> IVMRImageCompositor9_Vtbl {
        unsafe extern "system" fn InitCompositionDevice<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImageCompositor9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pd3ddevice: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.InitCompositionDevice(::core::mem::transmute(&pd3ddevice)).into()
        }
        unsafe extern "system" fn TermCompositionDevice<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImageCompositor9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pd3ddevice: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TermCompositionDevice(::core::mem::transmute(&pd3ddevice)).into()
        }
        unsafe extern "system" fn SetStreamMediaType<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImageCompositor9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstrmid: u32, pmt: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>, ftexture: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStreamMediaType(::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<Impl = Impl>, Impl: IVMRImageCompositor9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pd3ddevice: *mut ::core::ffi::c_void, pddsrendertarget: *mut ::core::ffi::c_void, pmtrendertarget: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>, rtstart: i64, rtend: i64, dwclrbkgnd: u32, pvideostreaminfo: *const ::core::mem::ManuallyDrop<VMR9VideoStreamInfo>, cstreams: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CompositeImage(::core::mem::transmute(&pd3ddevice), ::core::mem::transmute(&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, Impl, OFFSET>,
            TermCompositionDevice: TermCompositionDevice::<Identity, Impl, OFFSET>,
            SetStreamMediaType: SetStreamMediaType::<Identity, Impl, OFFSET>,
            CompositeImage: CompositeImage::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRImageCompositor9 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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: *mut VMRPRESENTATIONINFO) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl ::windows::core::RuntimeName for IVMRImagePresenter {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl IVMRImagePresenter_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenter_Impl, const OFFSET: isize>() -> IVMRImagePresenter_Vtbl {
        unsafe extern "system" fn StartPresenting<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwuserid: usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StartPresenting(::core::mem::transmute_copy(&dwuserid)).into()
        }
        unsafe extern "system" fn StopPresenting<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwuserid: usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StopPresenting(::core::mem::transmute_copy(&dwuserid)).into()
        }
        unsafe extern "system" fn PresentImage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenter_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwuserid: usize, lppresinfo: *mut ::core::mem::ManuallyDrop<VMRPRESENTATIONINFO>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PresentImage(::core::mem::transmute_copy(&dwuserid), ::core::mem::transmute_copy(&lppresinfo)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartPresenting: StartPresenting::<Identity, Impl, OFFSET>,
            StopPresenting: StopPresenting::<Identity, Impl, OFFSET>,
            PresentImage: PresentImage::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRImagePresenter as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Direct3D9"))]
impl ::windows::core::RuntimeName for IVMRImagePresenter9 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Direct3D9"))]
impl IVMRImagePresenter9_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenter9_Impl, const OFFSET: isize>() -> IVMRImagePresenter9_Vtbl {
        unsafe extern "system" fn StartPresenting<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenter9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwuserid: usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StartPresenting(::core::mem::transmute_copy(&dwuserid)).into()
        }
        unsafe extern "system" fn StopPresenting<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenter9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwuserid: usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.StopPresenting(::core::mem::transmute_copy(&dwuserid)).into()
        }
        unsafe extern "system" fn PresentImage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenter9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwuserid: usize, lppresinfo: *const ::core::mem::ManuallyDrop<VMR9PresentationInfo>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PresentImage(::core::mem::transmute_copy(&dwuserid), ::core::mem::transmute_copy(&lppresinfo)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartPresenting: StartPresenting::<Identity, Impl, OFFSET>,
            StopPresenting: StopPresenting::<Identity, Impl, OFFSET>,
            PresentImage: PresentImage::<Identity, Impl, 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, dwrenderflags: *mut u32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IVMRImagePresenterConfig {}
impl IVMRImagePresenterConfig_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenterConfig_Impl, const OFFSET: isize>() -> IVMRImagePresenterConfig_Vtbl {
        unsafe extern "system" fn SetRenderingPrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenterConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrenderflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRenderingPrefs(::core::mem::transmute_copy(&dwrenderflags)).into()
        }
        unsafe extern "system" fn GetRenderingPrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenterConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrenderflags: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRenderingPrefs(::core::mem::transmute_copy(&dwrenderflags)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetRenderingPrefs: SetRenderingPrefs::<Identity, Impl, OFFSET>,
            GetRenderingPrefs: GetRenderingPrefs::<Identity, Impl, 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<Impl = Impl>, Impl: IVMRImagePresenterConfig9_Impl, const OFFSET: isize>() -> IVMRImagePresenterConfig9_Vtbl {
        unsafe extern "system" fn SetRenderingPrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenterConfig9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrenderflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetRenderingPrefs(::core::mem::transmute_copy(&dwrenderflags)).into()
        }
        unsafe extern "system" fn GetRenderingPrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenterConfig9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwrenderflags: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetRenderingPrefs() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(dwrenderflags, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetRenderingPrefs: SetRenderingPrefs::<Identity, Impl, OFFSET>,
            GetRenderingPrefs: GetRenderingPrefs::<Identity, Impl, 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: &::core::option::Option<super::super::Graphics::DirectDraw::IDirectDraw7>, lpprimarysurf: &::core::option::Option<super::super::Graphics::DirectDraw::IDirectDrawSurface7>) -> ::windows::core::Result<()>;
    fn GetXlcModeDDObjAndPrimarySurface(&self, lpddobj: *mut ::core::option::Option<super::super::Graphics::DirectDraw::IDirectDraw7>, lpprimarysurf: *mut ::core::option::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<Impl = Impl>, Impl: IVMRImagePresenterExclModeConfig_Impl, const OFFSET: isize>() -> IVMRImagePresenterExclModeConfig_Vtbl {
        unsafe extern "system" fn SetXlcModeDDObjAndPrimarySurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenterExclModeConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpddobj: *mut ::core::ffi::c_void, lpprimarysurf: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetXlcModeDDObjAndPrimarySurface(::core::mem::transmute(&lpddobj), ::core::mem::transmute(&lpprimarysurf)).into()
        }
        unsafe extern "system" fn GetXlcModeDDObjAndPrimarySurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRImagePresenterExclModeConfig_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetXlcModeDDObjAndPrimarySurface(::core::mem::transmute_copy(&lpddobj), ::core::mem::transmute_copy(&lpprimarysurf)).into()
        }
        Self {
            base__: IVMRImagePresenterConfig_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetXlcModeDDObjAndPrimarySurface: SetXlcModeDDObjAndPrimarySurface::<Identity, Impl, OFFSET>,
            GetXlcModeDDObjAndPrimarySurface: GetXlcModeDDObjAndPrimarySurface::<Identity, Impl, 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_Foundation", 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: *mut VMRALPHABITMAP) -> ::windows::core::Result<()>;
    fn GetAlphaBitmapParameters(&self, pbmpparms: *mut VMRALPHABITMAP) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IVMRMixerBitmap {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
impl IVMRMixerBitmap_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerBitmap_Impl, const OFFSET: isize>() -> IVMRMixerBitmap_Vtbl {
        unsafe extern "system" fn SetAlphaBitmap<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerBitmap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbmpparms: *const ::core::mem::ManuallyDrop<VMRALPHABITMAP>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAlphaBitmap(::core::mem::transmute_copy(&pbmpparms)).into()
        }
        unsafe extern "system" fn UpdateAlphaBitmapParameters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerBitmap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbmpparms: *mut ::core::mem::ManuallyDrop<VMRALPHABITMAP>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UpdateAlphaBitmapParameters(::core::mem::transmute_copy(&pbmpparms)).into()
        }
        unsafe extern "system" fn GetAlphaBitmapParameters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerBitmap_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbmpparms: *mut ::core::mem::ManuallyDrop<VMRALPHABITMAP>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAlphaBitmapParameters(::core::mem::transmute_copy(&pbmpparms)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAlphaBitmap: SetAlphaBitmap::<Identity, Impl, OFFSET>,
            UpdateAlphaBitmapParameters: UpdateAlphaBitmapParameters::<Identity, Impl, OFFSET>,
            GetAlphaBitmapParameters: GetAlphaBitmapParameters::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRMixerBitmap as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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) -> ::windows::core::Result<VMR9AlphaBitmap>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Direct3D9", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IVMRMixerBitmap9 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Direct3D9", feature = "Win32_Graphics_Gdi"))]
impl IVMRMixerBitmap9_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerBitmap9_Impl, const OFFSET: isize>() -> IVMRMixerBitmap9_Vtbl {
        unsafe extern "system" fn SetAlphaBitmap<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerBitmap9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbmpparms: *const ::core::mem::ManuallyDrop<VMR9AlphaBitmap>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAlphaBitmap(::core::mem::transmute_copy(&pbmpparms)).into()
        }
        unsafe extern "system" fn UpdateAlphaBitmapParameters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerBitmap9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbmpparms: *const ::core::mem::ManuallyDrop<VMR9AlphaBitmap>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UpdateAlphaBitmapParameters(::core::mem::transmute_copy(&pbmpparms)).into()
        }
        unsafe extern "system" fn GetAlphaBitmapParameters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerBitmap9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbmpparms: *mut ::core::mem::ManuallyDrop<VMR9AlphaBitmap>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAlphaBitmapParameters() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbmpparms, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAlphaBitmap: SetAlphaBitmap::<Identity, Impl, OFFSET>,
            UpdateAlphaBitmapParameters: UpdateAlphaBitmapParameters::<Identity, Impl, OFFSET>,
            GetAlphaBitmapParameters: GetAlphaBitmapParameters::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRMixerBitmap9 as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
pub trait IVMRMixerControl_Impl: Sized {
    fn SetAlpha(&self, dwstreamid: u32, alpha: f32) -> ::windows::core::Result<()>;
    fn GetAlpha(&self, dwstreamid: u32, palpha: *mut f32) -> ::windows::core::Result<()>;
    fn SetZOrder(&self, dwstreamid: u32, dwz: u32) -> ::windows::core::Result<()>;
    fn GetZOrder(&self, dwstreamid: u32, pz: *mut u32) -> ::windows::core::Result<()>;
    fn SetOutputRect(&self, dwstreamid: u32, prect: *const NORMALIZEDRECT) -> ::windows::core::Result<()>;
    fn GetOutputRect(&self, dwstreamid: u32, prect: *mut NORMALIZEDRECT) -> ::windows::core::Result<()>;
    fn SetBackgroundClr(&self, clrbkg: super::super::Foundation::COLORREF) -> ::windows::core::Result<()>;
    fn GetBackgroundClr(&self, lpclrbkg: *mut super::super::Foundation::COLORREF) -> ::windows::core::Result<()>;
    fn SetMixingPrefs(&self, dwmixerprefs: u32) -> ::windows::core::Result<()>;
    fn GetMixingPrefs(&self, pdwmixerprefs: *mut u32) -> ::windows::core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IVMRMixerControl {}
#[cfg(feature = "Win32_Foundation")]
impl IVMRMixerControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl_Impl, const OFFSET: isize>() -> IVMRMixerControl_Vtbl {
        unsafe extern "system" fn SetAlpha<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, alpha: f32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAlpha(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&alpha)).into()
        }
        unsafe extern "system" fn GetAlpha<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, palpha: *mut f32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAlpha(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&palpha)).into()
        }
        unsafe extern "system" fn SetZOrder<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, dwz: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetZOrder(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&dwz)).into()
        }
        unsafe extern "system" fn GetZOrder<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, pz: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetZOrder(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&pz)).into()
        }
        unsafe extern "system" fn SetOutputRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, prect: *const NORMALIZEDRECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOutputRect(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&prect)).into()
        }
        unsafe extern "system" fn GetOutputRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, prect: *mut NORMALIZEDRECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetOutputRect(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&prect)).into()
        }
        unsafe extern "system" fn SetBackgroundClr<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, clrbkg: super::super::Foundation::COLORREF) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBackgroundClr(::core::mem::transmute_copy(&clrbkg)).into()
        }
        unsafe extern "system" fn GetBackgroundClr<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpclrbkg: *mut super::super::Foundation::COLORREF) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetBackgroundClr(::core::mem::transmute_copy(&lpclrbkg)).into()
        }
        unsafe extern "system" fn SetMixingPrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwmixerprefs: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMixingPrefs(::core::mem::transmute_copy(&dwmixerprefs)).into()
        }
        unsafe extern "system" fn GetMixingPrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwmixerprefs: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMixingPrefs(::core::mem::transmute_copy(&pdwmixerprefs)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAlpha: SetAlpha::<Identity, Impl, OFFSET>,
            GetAlpha: GetAlpha::<Identity, Impl, OFFSET>,
            SetZOrder: SetZOrder::<Identity, Impl, OFFSET>,
            GetZOrder: GetZOrder::<Identity, Impl, OFFSET>,
            SetOutputRect: SetOutputRect::<Identity, Impl, OFFSET>,
            GetOutputRect: GetOutputRect::<Identity, Impl, OFFSET>,
            SetBackgroundClr: SetBackgroundClr::<Identity, Impl, OFFSET>,
            GetBackgroundClr: GetBackgroundClr::<Identity, Impl, OFFSET>,
            SetMixingPrefs: SetMixingPrefs::<Identity, Impl, OFFSET>,
            GetMixingPrefs: GetMixingPrefs::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRMixerControl as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IVMRMixerControl9 {}
#[cfg(feature = "Win32_Foundation")]
impl IVMRMixerControl9_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl9_Impl, const OFFSET: isize>() -> IVMRMixerControl9_Vtbl {
        unsafe extern "system" fn SetAlpha<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, alpha: f32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAlpha(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&alpha)).into()
        }
        unsafe extern "system" fn GetAlpha<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, palpha: *mut f32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAlpha(::core::mem::transmute_copy(&dwstreamid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(palpha, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetZOrder<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, dwz: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetZOrder(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&dwz)).into()
        }
        unsafe extern "system" fn GetZOrder<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, pz: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetZOrder(::core::mem::transmute_copy(&dwstreamid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pz, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, prect: *const VMR9NormalizedRect) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOutputRect(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&prect)).into()
        }
        unsafe extern "system" fn GetOutputRect<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, prect: *mut VMR9NormalizedRect) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOutputRect(::core::mem::transmute_copy(&dwstreamid)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(prect, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBackgroundClr<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, clrbkg: super::super::Foundation::COLORREF) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBackgroundClr(::core::mem::transmute_copy(&clrbkg)).into()
        }
        unsafe extern "system" fn GetBackgroundClr<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpclrbkg: *const super::super::Foundation::COLORREF) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetBackgroundClr(::core::mem::transmute_copy(&lpclrbkg)).into()
        }
        unsafe extern "system" fn SetMixingPrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwmixerprefs: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMixingPrefs(::core::mem::transmute_copy(&dwmixerprefs)).into()
        }
        unsafe extern "system" fn GetMixingPrefs<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwmixerprefs: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMixingPrefs() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pdwmixerprefs, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetProcAmpControl<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, lpclrcontrol: *const VMR9ProcAmpControl) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetProcAmpControl(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&lpclrcontrol)).into()
        }
        unsafe extern "system" fn GetProcAmpControl<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, lpclrcontrol: *mut VMR9ProcAmpControl) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetProcAmpControl(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&lpclrcontrol)).into()
        }
        unsafe extern "system" fn GetProcAmpControlRange<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMixerControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwstreamid: u32, lpclrcontrol: *mut VMR9ProcAmpControlRange) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetProcAmpControlRange(::core::mem::transmute_copy(&dwstreamid), ::core::mem::transmute_copy(&lpclrcontrol)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAlpha: SetAlpha::<Identity, Impl, OFFSET>,
            GetAlpha: GetAlpha::<Identity, Impl, OFFSET>,
            SetZOrder: SetZOrder::<Identity, Impl, OFFSET>,
            GetZOrder: GetZOrder::<Identity, Impl, OFFSET>,
            SetOutputRect: SetOutputRect::<Identity, Impl, OFFSET>,
            GetOutputRect: GetOutputRect::<Identity, Impl, OFFSET>,
            SetBackgroundClr: SetBackgroundClr::<Identity, Impl, OFFSET>,
            GetBackgroundClr: GetBackgroundClr::<Identity, Impl, OFFSET>,
            SetMixingPrefs: SetMixingPrefs::<Identity, Impl, OFFSET>,
            GetMixingPrefs: GetMixingPrefs::<Identity, Impl, OFFSET>,
            SetProcAmpControl: SetProcAmpControl::<Identity, Impl, OFFSET>,
            GetProcAmpControl: GetProcAmpControl::<Identity, Impl, OFFSET>,
            GetProcAmpControlRange: GetProcAmpControlRange::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRMixerControl9 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IVMRMonitorConfig {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl IVMRMonitorConfig_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMonitorConfig_Impl, const OFFSET: isize>() -> IVMRMonitorConfig_Vtbl {
        unsafe extern "system" fn SetMonitor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMonitorConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguid: *const VMRGUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMonitor(::core::mem::transmute_copy(&pguid)).into()
        }
        unsafe extern "system" fn GetMonitor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMonitorConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguid: *mut VMRGUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMonitor(::core::mem::transmute_copy(&pguid)).into()
        }
        unsafe extern "system" fn SetDefaultMonitor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMonitorConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguid: *const VMRGUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDefaultMonitor(::core::mem::transmute_copy(&pguid)).into()
        }
        unsafe extern "system" fn GetDefaultMonitor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMonitorConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pguid: *mut VMRGUID) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDefaultMonitor(::core::mem::transmute_copy(&pguid)).into()
        }
        unsafe extern "system" fn GetAvailableMonitors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMonitorConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pinfo: *mut VMRMONITORINFO, dwmaxinfoarraysize: u32, pdwnumdevices: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAvailableMonitors(::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, Impl, OFFSET>,
            GetMonitor: GetMonitor::<Identity, Impl, OFFSET>,
            SetDefaultMonitor: SetDefaultMonitor::<Identity, Impl, OFFSET>,
            GetDefaultMonitor: GetDefaultMonitor::<Identity, Impl, OFFSET>,
            GetAvailableMonitors: GetAvailableMonitors::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRMonitorConfig as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IVMRMonitorConfig9 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl IVMRMonitorConfig9_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMonitorConfig9_Impl, const OFFSET: isize>() -> IVMRMonitorConfig9_Vtbl {
        unsafe extern "system" fn SetMonitor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMonitorConfig9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, udev: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMonitor(::core::mem::transmute_copy(&udev)).into()
        }
        unsafe extern "system" fn GetMonitor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMonitorConfig9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pudev: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetMonitor() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pudev, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultMonitor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMonitorConfig9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, udev: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDefaultMonitor(::core::mem::transmute_copy(&udev)).into()
        }
        unsafe extern "system" fn GetDefaultMonitor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMonitorConfig9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pudev: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetDefaultMonitor() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pudev, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAvailableMonitors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRMonitorConfig9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pinfo: *mut VMR9MonitorInfo, dwmaxinfoarraysize: u32, pdwnumdevices: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAvailableMonitors(::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, Impl, OFFSET>,
            GetMonitor: GetMonitor::<Identity, Impl, OFFSET>,
            SetDefaultMonitor: SetDefaultMonitor::<Identity, Impl, OFFSET>,
            GetDefaultMonitor: GetDefaultMonitor::<Identity, Impl, OFFSET>,
            GetAvailableMonitors: GetAvailableMonitors::<Identity, Impl, 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, lpsurface: *mut *mut u8) -> ::windows::core::Result<()>;
    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<Impl = Impl>, Impl: IVMRSurface_Impl, const OFFSET: isize>() -> IVMRSurface_Vtbl {
        unsafe extern "system" fn IsSurfaceLocked<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurface_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsSurfaceLocked().into()
        }
        unsafe extern "system" fn LockSurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurface_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpsurface: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.LockSurface(::core::mem::transmute_copy(&lpsurface)).into()
        }
        unsafe extern "system" fn UnlockSurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurface_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnlockSurface().into()
        }
        unsafe extern "system" fn GetSurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurface_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lplpsurface: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSurface() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lplpsurface, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IsSurfaceLocked: IsSurfaceLocked::<Identity, Impl, OFFSET>,
            LockSurface: LockSurface::<Identity, Impl, OFFSET>,
            UnlockSurface: UnlockSurface::<Identity, Impl, OFFSET>,
            GetSurface: GetSurface::<Identity, Impl, 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<Impl = Impl>, Impl: IVMRSurface9_Impl, const OFFSET: isize>() -> IVMRSurface9_Vtbl {
        unsafe extern "system" fn IsSurfaceLocked<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurface9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsSurfaceLocked().into()
        }
        unsafe extern "system" fn LockSurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurface9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpsurface: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.LockSurface() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpsurface, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn UnlockSurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurface9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.UnlockSurface().into()
        }
        unsafe extern "system" fn GetSurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurface9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lplpsurface: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSurface() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lplpsurface, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IsSurfaceLocked: IsSurfaceLocked::<Identity, Impl, OFFSET>,
            LockSurface: LockSurface::<Identity, Impl, OFFSET>,
            UnlockSurface: UnlockSurface::<Identity, Impl, OFFSET>,
            GetSurface: GetSurface::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRSurface9 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
pub trait IVMRSurfaceAllocator_Impl: Sized {
    fn AllocateSurface(&self, dwuserid: usize, lpallocinfo: *mut VMRALLOCATIONINFO, lpdwactualbuffers: *mut u32, lplpsurface: *mut ::core::option::Option<super::super::Graphics::DirectDraw::IDirectDrawSurface7>) -> ::windows::core::Result<()>;
    fn FreeSurface(&self, dwid: usize) -> ::windows::core::Result<()>;
    fn PrepareSurface(&self, dwuserid: usize, lpsurface: &::core::option::Option<super::super::Graphics::DirectDraw::IDirectDrawSurface7>, dwsurfaceflags: u32) -> ::windows::core::Result<()>;
    fn AdviseNotify(&self, lpivmrsurfallocnotify: &::core::option::Option<IVMRSurfaceAllocatorNotify>) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IVMRSurfaceAllocator {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
impl IVMRSurfaceAllocator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocator_Impl, const OFFSET: isize>() -> IVMRSurfaceAllocator_Vtbl {
        unsafe extern "system" fn AllocateSurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwuserid: usize, lpallocinfo: *mut VMRALLOCATIONINFO, lpdwactualbuffers: *mut u32, lplpsurface: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AllocateSurface(::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<Impl = Impl>, Impl: IVMRSurfaceAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwid: usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.FreeSurface(::core::mem::transmute_copy(&dwid)).into()
        }
        unsafe extern "system" fn PrepareSurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwuserid: usize, lpsurface: *mut ::core::ffi::c_void, dwsurfaceflags: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.PrepareSurface(::core::mem::transmute_copy(&dwuserid), ::core::mem::transmute(&lpsurface), ::core::mem::transmute_copy(&dwsurfaceflags)).into()
        }
        unsafe extern "system" fn AdviseNotify<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpivmrsurfallocnotify: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AdviseNotify(::core::mem::transmute(&lpivmrsurfallocnotify)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AllocateSurface: AllocateSurface::<Identity, Impl, OFFSET>,
            FreeSurface: FreeSurface::<Identity, Impl, OFFSET>,
            PrepareSurface: PrepareSurface::<Identity, Impl, OFFSET>,
            AdviseNotify: AdviseNotify::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRSurfaceAllocator as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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: &::core::option::Option<IVMRSurfaceAllocatorNotify9>) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Direct3D9"))]
impl ::windows::core::RuntimeName for IVMRSurfaceAllocator9 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Direct3D9"))]
impl IVMRSurfaceAllocator9_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocator9_Impl, const OFFSET: isize>() -> IVMRSurfaceAllocator9_Vtbl {
        unsafe extern "system" fn InitializeDevice<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocator9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwuserid: usize, lpallocinfo: *const VMR9AllocationInfo, lpnumbuffers: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.InitializeDevice(::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<Impl = Impl>, Impl: IVMRSurfaceAllocator9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwid: usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.TerminateDevice(::core::mem::transmute_copy(&dwid)).into()
        }
        unsafe extern "system" fn GetSurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocator9_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSurface(::core::mem::transmute_copy(&dwuserid), ::core::mem::transmute_copy(&surfaceindex), ::core::mem::transmute_copy(&surfaceflags)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lplpsurface, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AdviseNotify<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocator9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpivmrsurfallocnotify: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AdviseNotify(::core::mem::transmute(&lpivmrsurfallocnotify)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            InitializeDevice: InitializeDevice::<Identity, Impl, OFFSET>,
            TerminateDevice: TerminateDevice::<Identity, Impl, OFFSET>,
            GetSurface: GetSurface::<Identity, Impl, OFFSET>,
            AdviseNotify: AdviseNotify::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRSurfaceAllocator9 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Direct3D9"))]
pub trait IVMRSurfaceAllocatorEx9_Impl: Sized + IVMRSurfaceAllocator9_Impl {
    fn GetSurfaceEx(&self, dwuserid: usize, surfaceindex: u32, surfaceflags: u32, lplpsurface: *mut ::core::option::Option<super::super::Graphics::Direct3D9::IDirect3DSurface9>, lprcdst: *mut super::super::Foundation::RECT) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Direct3D9"))]
impl ::windows::core::RuntimeName for IVMRSurfaceAllocatorEx9 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Direct3D9"))]
impl IVMRSurfaceAllocatorEx9_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocatorEx9_Impl, const OFFSET: isize>() -> IVMRSurfaceAllocatorEx9_Vtbl {
        unsafe extern "system" fn GetSurfaceEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocatorEx9_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetSurfaceEx(::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, Impl, OFFSET>(), GetSurfaceEx: GetSurfaceEx::<Identity, Impl, 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_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
pub trait IVMRSurfaceAllocatorNotify_Impl: Sized {
    fn AdviseSurfaceAllocator(&self, dwuserid: usize, lpivrmsurfaceallocator: &::core::option::Option<IVMRSurfaceAllocator>) -> ::windows::core::Result<()>;
    fn SetDDrawDevice(&self, lpddrawdevice: &::core::option::Option<super::super::Graphics::DirectDraw::IDirectDraw7>, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> ::windows::core::Result<()>;
    fn ChangeDDrawDevice(&self, lpddrawdevice: &::core::option::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_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IVMRSurfaceAllocatorNotify {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
impl IVMRSurfaceAllocatorNotify_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocatorNotify_Impl, const OFFSET: isize>() -> IVMRSurfaceAllocatorNotify_Vtbl {
        unsafe extern "system" fn AdviseSurfaceAllocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocatorNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwuserid: usize, lpivrmsurfaceallocator: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AdviseSurfaceAllocator(::core::mem::transmute_copy(&dwuserid), ::core::mem::transmute(&lpivrmsurfaceallocator)).into()
        }
        unsafe extern "system" fn SetDDrawDevice<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocatorNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpddrawdevice: *mut ::core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDDrawDevice(::core::mem::transmute(&lpddrawdevice), ::core::mem::transmute_copy(&hmonitor)).into()
        }
        unsafe extern "system" fn ChangeDDrawDevice<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocatorNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpddrawdevice: *mut ::core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChangeDDrawDevice(::core::mem::transmute(&lpddrawdevice), ::core::mem::transmute_copy(&hmonitor)).into()
        }
        unsafe extern "system" fn RestoreDDrawSurfaces<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocatorNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RestoreDDrawSurfaces().into()
        }
        unsafe extern "system" fn NotifyEvent<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocatorNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, eventcode: i32, param1: isize, param2: isize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NotifyEvent(::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<Impl = Impl>, Impl: IVMRSurfaceAllocatorNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, clrborder: super::super::Foundation::COLORREF) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBorderColor(::core::mem::transmute_copy(&clrborder)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AdviseSurfaceAllocator: AdviseSurfaceAllocator::<Identity, Impl, OFFSET>,
            SetDDrawDevice: SetDDrawDevice::<Identity, Impl, OFFSET>,
            ChangeDDrawDevice: ChangeDDrawDevice::<Identity, Impl, OFFSET>,
            RestoreDDrawSurfaces: RestoreDDrawSurfaces::<Identity, Impl, OFFSET>,
            NotifyEvent: NotifyEvent::<Identity, Impl, OFFSET>,
            SetBorderColor: SetBorderColor::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRSurfaceAllocatorNotify as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Direct3D9", feature = "Win32_Graphics_Gdi"))]
pub trait IVMRSurfaceAllocatorNotify9_Impl: Sized {
    fn AdviseSurfaceAllocator(&self, dwuserid: usize, lpivrmsurfaceallocator: &::core::option::Option<IVMRSurfaceAllocator9>) -> ::windows::core::Result<()>;
    fn SetD3DDevice(&self, lpd3ddevice: &::core::option::Option<super::super::Graphics::Direct3D9::IDirect3DDevice9>, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> ::windows::core::Result<()>;
    fn ChangeD3DDevice(&self, lpd3ddevice: &::core::option::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 ::core::option::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_Foundation", feature = "Win32_Graphics_Direct3D9", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IVMRSurfaceAllocatorNotify9 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Direct3D9", feature = "Win32_Graphics_Gdi"))]
impl IVMRSurfaceAllocatorNotify9_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocatorNotify9_Impl, const OFFSET: isize>() -> IVMRSurfaceAllocatorNotify9_Vtbl {
        unsafe extern "system" fn AdviseSurfaceAllocator<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocatorNotify9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwuserid: usize, lpivrmsurfaceallocator: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AdviseSurfaceAllocator(::core::mem::transmute_copy(&dwuserid), ::core::mem::transmute(&lpivrmsurfaceallocator)).into()
        }
        unsafe extern "system" fn SetD3DDevice<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocatorNotify9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpd3ddevice: *mut ::core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetD3DDevice(::core::mem::transmute(&lpd3ddevice), ::core::mem::transmute_copy(&hmonitor)).into()
        }
        unsafe extern "system" fn ChangeD3DDevice<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocatorNotify9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpd3ddevice: *mut ::core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ChangeD3DDevice(::core::mem::transmute(&lpd3ddevice), ::core::mem::transmute_copy(&hmonitor)).into()
        }
        unsafe extern "system" fn AllocateSurfaceHelper<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRSurfaceAllocatorNotify9_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.AllocateSurfaceHelper(::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<Impl = Impl>, Impl: IVMRSurfaceAllocatorNotify9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, eventcode: i32, param1: isize, param2: isize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NotifyEvent(::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, Impl, OFFSET>,
            SetD3DDevice: SetD3DDevice::<Identity, Impl, OFFSET>,
            ChangeD3DDevice: ChangeD3DDevice::<Identity, Impl, OFFSET>,
            AllocateSurfaceHelper: AllocateSurfaceHelper::<Identity, Impl, OFFSET>,
            NotifyEvent: NotifyEvent::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRSurfaceAllocatorNotify9 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
pub trait IVMRVideoStreamControl_Impl: Sized {
    fn SetColorKey(&self, lpclrkey: *mut super::super::Graphics::DirectDraw::DDCOLORKEY) -> ::windows::core::Result<()>;
    fn GetColorKey(&self, lpclrkey: *mut super::super::Graphics::DirectDraw::DDCOLORKEY) -> ::windows::core::Result<()>;
    fn SetStreamActiveState(&self, factive: super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
    fn GetStreamActiveState(&self, lpfactive: *mut super::super::Foundation::BOOL) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl ::windows::core::RuntimeName for IVMRVideoStreamControl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl IVMRVideoStreamControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRVideoStreamControl_Impl, const OFFSET: isize>() -> IVMRVideoStreamControl_Vtbl {
        unsafe extern "system" fn SetColorKey<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRVideoStreamControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpclrkey: *mut super::super::Graphics::DirectDraw::DDCOLORKEY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetColorKey(::core::mem::transmute_copy(&lpclrkey)).into()
        }
        unsafe extern "system" fn GetColorKey<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRVideoStreamControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpclrkey: *mut super::super::Graphics::DirectDraw::DDCOLORKEY) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetColorKey(::core::mem::transmute_copy(&lpclrkey)).into()
        }
        unsafe extern "system" fn SetStreamActiveState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRVideoStreamControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, factive: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStreamActiveState(::core::mem::transmute_copy(&factive)).into()
        }
        unsafe extern "system" fn GetStreamActiveState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRVideoStreamControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpfactive: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetStreamActiveState(::core::mem::transmute_copy(&lpfactive)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetColorKey: SetColorKey::<Identity, Impl, OFFSET>,
            GetColorKey: GetColorKey::<Identity, Impl, OFFSET>,
            SetStreamActiveState: SetStreamActiveState::<Identity, Impl, OFFSET>,
            GetStreamActiveState: GetStreamActiveState::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRVideoStreamControl as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IVMRVideoStreamControl9 {}
#[cfg(feature = "Win32_Foundation")]
impl IVMRVideoStreamControl9_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRVideoStreamControl9_Impl, const OFFSET: isize>() -> IVMRVideoStreamControl9_Vtbl {
        unsafe extern "system" fn SetStreamActiveState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRVideoStreamControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, factive: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetStreamActiveState(::core::mem::transmute_copy(&factive)).into()
        }
        unsafe extern "system" fn GetStreamActiveState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRVideoStreamControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpfactive: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetStreamActiveState() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpfactive, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetStreamActiveState: SetStreamActiveState::<Identity, Impl, OFFSET>,
            GetStreamActiveState: GetStreamActiveState::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRVideoStreamControl9 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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, lpaspectratiomode: *mut u32) -> ::windows::core::Result<()>;
    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, lpdib: *mut *mut u8) -> ::windows::core::Result<()>;
    fn SetBorderColor(&self, clr: super::super::Foundation::COLORREF) -> ::windows::core::Result<()>;
    fn GetBorderColor(&self, lpclr: *mut super::super::Foundation::COLORREF) -> ::windows::core::Result<()>;
    fn SetColorKey(&self, clr: super::super::Foundation::COLORREF) -> ::windows::core::Result<()>;
    fn GetColorKey(&self, lpclr: *mut super::super::Foundation::COLORREF) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IVMRWindowlessControl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl IVMRWindowlessControl_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>() -> IVMRWindowlessControl_Vtbl {
        unsafe extern "system" fn GetNativeVideoSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpwidth: *mut i32, lpheight: *mut i32, lparwidth: *mut i32, lparheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetNativeVideoSize(::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<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpwidth: *mut i32, lpheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMinIdealVideoSize(::core::mem::transmute_copy(&lpwidth), ::core::mem::transmute_copy(&lpheight)).into()
        }
        unsafe extern "system" fn GetMaxIdealVideoSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpwidth: *mut i32, lpheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMaxIdealVideoSize(::core::mem::transmute_copy(&lpwidth), ::core::mem::transmute_copy(&lpheight)).into()
        }
        unsafe extern "system" fn SetVideoPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpsrcrect: *const super::super::Foundation::RECT, lpdstrect: *const super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVideoPosition(::core::mem::transmute_copy(&lpsrcrect), ::core::mem::transmute_copy(&lpdstrect)).into()
        }
        unsafe extern "system" fn GetVideoPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpsrcrect: *mut super::super::Foundation::RECT, lpdstrect: *mut super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetVideoPosition(::core::mem::transmute_copy(&lpsrcrect), ::core::mem::transmute_copy(&lpdstrect)).into()
        }
        unsafe extern "system" fn GetAspectRatioMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpaspectratiomode: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetAspectRatioMode(::core::mem::transmute_copy(&lpaspectratiomode)).into()
        }
        unsafe extern "system" fn SetAspectRatioMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, aspectratiomode: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAspectRatioMode(::core::mem::transmute_copy(&aspectratiomode)).into()
        }
        unsafe extern "system" fn SetVideoClippingWindow<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVideoClippingWindow(::core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn RepaintVideo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hwnd: super::super::Foundation::HWND, hdc: super::super::Graphics::Gdi::HDC) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RepaintVideo(::core::mem::transmute_copy(&hwnd), ::core::mem::transmute_copy(&hdc)).into()
        }
        unsafe extern "system" fn DisplayModeChanged<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DisplayModeChanged().into()
        }
        unsafe extern "system" fn GetCurrentImage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpdib: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetCurrentImage(::core::mem::transmute_copy(&lpdib)).into()
        }
        unsafe extern "system" fn SetBorderColor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, clr: super::super::Foundation::COLORREF) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBorderColor(::core::mem::transmute_copy(&clr)).into()
        }
        unsafe extern "system" fn GetBorderColor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpclr: *mut super::super::Foundation::COLORREF) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetBorderColor(::core::mem::transmute_copy(&lpclr)).into()
        }
        unsafe extern "system" fn SetColorKey<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, clr: super::super::Foundation::COLORREF) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetColorKey(::core::mem::transmute_copy(&clr)).into()
        }
        unsafe extern "system" fn GetColorKey<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpclr: *mut super::super::Foundation::COLORREF) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetColorKey(::core::mem::transmute_copy(&lpclr)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNativeVideoSize: GetNativeVideoSize::<Identity, Impl, OFFSET>,
            GetMinIdealVideoSize: GetMinIdealVideoSize::<Identity, Impl, OFFSET>,
            GetMaxIdealVideoSize: GetMaxIdealVideoSize::<Identity, Impl, OFFSET>,
            SetVideoPosition: SetVideoPosition::<Identity, Impl, OFFSET>,
            GetVideoPosition: GetVideoPosition::<Identity, Impl, OFFSET>,
            GetAspectRatioMode: GetAspectRatioMode::<Identity, Impl, OFFSET>,
            SetAspectRatioMode: SetAspectRatioMode::<Identity, Impl, OFFSET>,
            SetVideoClippingWindow: SetVideoClippingWindow::<Identity, Impl, OFFSET>,
            RepaintVideo: RepaintVideo::<Identity, Impl, OFFSET>,
            DisplayModeChanged: DisplayModeChanged::<Identity, Impl, OFFSET>,
            GetCurrentImage: GetCurrentImage::<Identity, Impl, OFFSET>,
            SetBorderColor: SetBorderColor::<Identity, Impl, OFFSET>,
            GetBorderColor: GetBorderColor::<Identity, Impl, OFFSET>,
            SetColorKey: SetColorKey::<Identity, Impl, OFFSET>,
            GetColorKey: GetColorKey::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRWindowlessControl as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl ::windows::core::RuntimeName for IVMRWindowlessControl9 {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
impl IVMRWindowlessControl9_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl9_Impl, const OFFSET: isize>() -> IVMRWindowlessControl9_Vtbl {
        unsafe extern "system" fn GetNativeVideoSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpwidth: *mut i32, lpheight: *mut i32, lparwidth: *mut i32, lparheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetNativeVideoSize(::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<Impl = Impl>, Impl: IVMRWindowlessControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpwidth: *mut i32, lpheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMinIdealVideoSize(::core::mem::transmute_copy(&lpwidth), ::core::mem::transmute_copy(&lpheight)).into()
        }
        unsafe extern "system" fn GetMaxIdealVideoSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpwidth: *mut i32, lpheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMaxIdealVideoSize(::core::mem::transmute_copy(&lpwidth), ::core::mem::transmute_copy(&lpheight)).into()
        }
        unsafe extern "system" fn SetVideoPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpsrcrect: *const super::super::Foundation::RECT, lpdstrect: *const super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVideoPosition(::core::mem::transmute_copy(&lpsrcrect), ::core::mem::transmute_copy(&lpdstrect)).into()
        }
        unsafe extern "system" fn GetVideoPosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpsrcrect: *mut super::super::Foundation::RECT, lpdstrect: *mut super::super::Foundation::RECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetVideoPosition(::core::mem::transmute_copy(&lpsrcrect), ::core::mem::transmute_copy(&lpdstrect)).into()
        }
        unsafe extern "system" fn GetAspectRatioMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpaspectratiomode: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetAspectRatioMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpaspectratiomode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAspectRatioMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, aspectratiomode: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAspectRatioMode(::core::mem::transmute_copy(&aspectratiomode)).into()
        }
        unsafe extern "system" fn SetVideoClippingWindow<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVideoClippingWindow(::core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn RepaintVideo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hwnd: super::super::Foundation::HWND, hdc: super::super::Graphics::Gdi::HDC) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RepaintVideo(::core::mem::transmute_copy(&hwnd), ::core::mem::transmute_copy(&hdc)).into()
        }
        unsafe extern "system" fn DisplayModeChanged<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.DisplayModeChanged().into()
        }
        unsafe extern "system" fn GetCurrentImage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpdib: *mut *mut u8) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrentImage() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpdib, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBorderColor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, clr: super::super::Foundation::COLORREF) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBorderColor(::core::mem::transmute_copy(&clr)).into()
        }
        unsafe extern "system" fn GetBorderColor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVMRWindowlessControl9_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, lpclr: *mut super::super::Foundation::COLORREF) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetBorderColor() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpclr, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNativeVideoSize: GetNativeVideoSize::<Identity, Impl, OFFSET>,
            GetMinIdealVideoSize: GetMinIdealVideoSize::<Identity, Impl, OFFSET>,
            GetMaxIdealVideoSize: GetMaxIdealVideoSize::<Identity, Impl, OFFSET>,
            SetVideoPosition: SetVideoPosition::<Identity, Impl, OFFSET>,
            GetVideoPosition: GetVideoPosition::<Identity, Impl, OFFSET>,
            GetAspectRatioMode: GetAspectRatioMode::<Identity, Impl, OFFSET>,
            SetAspectRatioMode: SetAspectRatioMode::<Identity, Impl, OFFSET>,
            SetVideoClippingWindow: SetVideoClippingWindow::<Identity, Impl, OFFSET>,
            RepaintVideo: RepaintVideo::<Identity, Impl, OFFSET>,
            DisplayModeChanged: DisplayModeChanged::<Identity, Impl, OFFSET>,
            GetCurrentImage: GetCurrentImage::<Identity, Impl, OFFSET>,
            SetBorderColor: SetBorderColor::<Identity, Impl, OFFSET>,
            GetBorderColor: GetBorderColor::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVMRWindowlessControl9 as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", 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(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl ::windows::core::RuntimeName for IVPBaseConfig {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl IVPBaseConfig_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseConfig_Impl, const OFFSET: isize>() -> IVPBaseConfig_Vtbl {
        unsafe extern "system" fn GetConnectInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwnumconnectinfo: *mut u32, pddvpconnectinfo: *mut super::super::Graphics::DirectDraw::DDVIDEOPORTCONNECT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetConnectInfo(::core::mem::transmute_copy(&pdwnumconnectinfo), ::core::mem::transmute_copy(&pddvpconnectinfo)).into()
        }
        unsafe extern "system" fn SetConnectInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwchosenentry: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetConnectInfo(::core::mem::transmute_copy(&dwchosenentry)).into()
        }
        unsafe extern "system" fn GetVPDataInfo<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pamvpdatainfo: *mut AMVPDATAINFO) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetVPDataInfo(::core::mem::transmute_copy(&pamvpdatainfo)).into()
        }
        unsafe extern "system" fn GetMaxPixelRate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pamvpsize: *mut AMVPSIZE, pdwmaxpixelspersecond: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMaxPixelRate(::core::mem::transmute_copy(&pamvpsize), ::core::mem::transmute_copy(&pdwmaxpixelspersecond)).into()
        }
        unsafe extern "system" fn InformVPInputFormats<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwnumformats: u32, pddpixelformats: *mut super::super::Graphics::DirectDraw::DDPIXELFORMAT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.InformVPInputFormats(::core::mem::transmute_copy(&dwnumformats), ::core::mem::transmute_copy(&pddpixelformats)).into()
        }
        unsafe extern "system" fn GetVideoFormats<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwnumformats: *mut u32, pddpixelformats: *mut super::super::Graphics::DirectDraw::DDPIXELFORMAT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetVideoFormats(::core::mem::transmute_copy(&pdwnumformats), ::core::mem::transmute_copy(&pddpixelformats)).into()
        }
        unsafe extern "system" fn SetVideoFormat<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwchosenentry: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVideoFormat(::core::mem::transmute_copy(&dwchosenentry)).into()
        }
        unsafe extern "system" fn SetInvertPolarity<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetInvertPolarity().into()
        }
        unsafe extern "system" fn GetOverlaySurface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppddoverlaysurface: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetOverlaySurface() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppddoverlaysurface, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDirectDrawKernelHandle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwddkernelhandle: usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDirectDrawKernelHandle(::core::mem::transmute_copy(&dwddkernelhandle)).into()
        }
        unsafe extern "system" fn SetVideoPortID<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwvideoportid: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVideoPortID(::core::mem::transmute_copy(&dwvideoportid)).into()
        }
        unsafe extern "system" fn SetDDSurfaceKernelHandles<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, chandles: u32, rgddkernelhandles: *mut usize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDDSurfaceKernelHandles(::core::mem::transmute_copy(&chandles), ::core::mem::transmute_copy(&rgddkernelhandles)).into()
        }
        unsafe extern "system" fn SetSurfaceParameters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwpitch: u32, dwxorigin: u32, dwyorigin: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetSurfaceParameters(::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, Impl, OFFSET>,
            SetConnectInfo: SetConnectInfo::<Identity, Impl, OFFSET>,
            GetVPDataInfo: GetVPDataInfo::<Identity, Impl, OFFSET>,
            GetMaxPixelRate: GetMaxPixelRate::<Identity, Impl, OFFSET>,
            InformVPInputFormats: InformVPInputFormats::<Identity, Impl, OFFSET>,
            GetVideoFormats: GetVideoFormats::<Identity, Impl, OFFSET>,
            SetVideoFormat: SetVideoFormat::<Identity, Impl, OFFSET>,
            SetInvertPolarity: SetInvertPolarity::<Identity, Impl, OFFSET>,
            GetOverlaySurface: GetOverlaySurface::<Identity, Impl, OFFSET>,
            SetDirectDrawKernelHandle: SetDirectDrawKernelHandle::<Identity, Impl, OFFSET>,
            SetVideoPortID: SetVideoPortID::<Identity, Impl, OFFSET>,
            SetDDSurfaceKernelHandles: SetDDSurfaceKernelHandles::<Identity, Impl, OFFSET>,
            SetSurfaceParameters: SetSurfaceParameters::<Identity, Impl, 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<Impl = Impl>, Impl: IVPBaseNotify_Impl, const OFFSET: isize>() -> IVPBaseNotify_Vtbl {
        unsafe extern "system" fn RenegotiateVPParameters<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPBaseNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.RenegotiateVPParameters().into()
        }
        Self { base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RenegotiateVPParameters: RenegotiateVPParameters::<Identity, Impl, OFFSET> }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVPBaseNotify as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
pub trait IVPConfig_Impl: Sized + IVPBaseConfig_Impl {
    fn IsVPDecimationAllowed(&self, pbisdecimationallowed: *mut i32) -> ::windows::core::Result<()>;
    fn SetScalingFactors(&self, pamvpsize: *mut AMVPSIZE) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl ::windows::core::RuntimeName for IVPConfig {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl IVPConfig_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPConfig_Impl, const OFFSET: isize>() -> IVPConfig_Vtbl {
        unsafe extern "system" fn IsVPDecimationAllowed<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbisdecimationallowed: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.IsVPDecimationAllowed(::core::mem::transmute_copy(&pbisdecimationallowed)).into()
        }
        unsafe extern "system" fn SetScalingFactors<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pamvpsize: *mut AMVPSIZE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetScalingFactors(::core::mem::transmute_copy(&pamvpsize)).into()
        }
        Self {
            base__: IVPBaseConfig_Vtbl::new::<Identity, Impl, OFFSET>(),
            IsVPDecimationAllowed: IsVPDecimationAllowed::<Identity, Impl, OFFSET>,
            SetScalingFactors: SetScalingFactors::<Identity, Impl, 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, pdwvideoportindex: *mut u32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IVPManager {}
impl IVPManager_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPManager_Impl, const OFFSET: isize>() -> IVPManager_Vtbl {
        unsafe extern "system" fn SetVideoPortIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPManager_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwvideoportindex: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVideoPortIndex(::core::mem::transmute_copy(&dwvideoportindex)).into()
        }
        unsafe extern "system" fn GetVideoPortIndex<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPManager_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwvideoportindex: *mut u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetVideoPortIndex(::core::mem::transmute_copy(&pdwvideoportindex)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetVideoPortIndex: SetVideoPortIndex::<Identity, Impl, OFFSET>,
            GetVideoPortIndex: GetVideoPortIndex::<Identity, Impl, 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<Impl = Impl>, Impl: IVPNotify_Impl, const OFFSET: isize>() -> IVPNotify_Vtbl {
        unsafe extern "system" fn SetDeinterlaceMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: AMVP_MODE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetDeinterlaceMode(::core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn GetDeinterlaceMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPNotify_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmode: *mut AMVP_MODE) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetDeinterlaceMode(::core::mem::transmute_copy(&pmode)).into()
        }
        Self {
            base__: IVPBaseNotify_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetDeinterlaceMode: SetDeinterlaceMode::<Identity, Impl, OFFSET>,
            GetDeinterlaceMode: GetDeinterlaceMode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVPNotify as ::windows::core::Interface>::IID || iid == &<IVPBaseNotify as ::windows::core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Foundation")]
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<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows::core::RuntimeName for IVPNotify2 {}
#[cfg(feature = "Win32_Foundation")]
impl IVPNotify2_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPNotify2_Impl, const OFFSET: isize>() -> IVPNotify2_Vtbl {
        unsafe extern "system" fn SetVPSyncMaster<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPNotify2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bvpsyncmaster: super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVPSyncMaster(::core::mem::transmute_copy(&bvpsyncmaster)).into()
        }
        unsafe extern "system" fn GetVPSyncMaster<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPNotify2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbvpsyncmaster: *mut super::super::Foundation::BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetVPSyncMaster(::core::mem::transmute_copy(&pbvpsyncmaster)).into()
        }
        Self {
            base__: IVPNotify_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetVPSyncMaster: SetVPSyncMaster::<Identity, Impl, OFFSET>,
            GetVPSyncMaster: GetVPSyncMaster::<Identity, Impl, 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(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
pub trait IVPVBIConfig_Impl: Sized + IVPBaseConfig_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl ::windows::core::RuntimeName for IVPVBIConfig {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_DirectDraw"))]
impl IVPVBIConfig_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVPVBIConfig_Impl, const OFFSET: isize>() -> IVPVBIConfig_Vtbl {
        Self { base__: IVPBaseConfig_Vtbl::new::<Identity, Impl, 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<Impl = Impl>, Impl: IVPVBINotify_Impl, const OFFSET: isize>() -> IVPVBINotify_Vtbl {
        Self { base__: IVPBaseNotify_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVPVBINotify as ::windows::core::Interface>::IID || iid == &<IVPBaseNotify as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IVideoEncoder_Impl: Sized + IEncoderAPI_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IVideoEncoder {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IVideoEncoder_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoEncoder_Impl, const OFFSET: isize>() -> IVideoEncoder_Vtbl {
        Self { base__: IEncoderAPI_Vtbl::new::<Identity, Impl, 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: &::core::option::Option<::windows::core::IUnknown>) -> ::windows::core::Result<()>;
    fn CanStep(&self, bmultiple: i32, pstepobject: &::core::option::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<Impl = Impl>, Impl: IVideoFrameStep_Impl, const OFFSET: isize>() -> IVideoFrameStep_Vtbl {
        unsafe extern "system" fn Step<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoFrameStep_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwframes: u32, pstepobject: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Step(::core::mem::transmute_copy(&dwframes), ::core::mem::transmute(&pstepobject)).into()
        }
        unsafe extern "system" fn CanStep<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoFrameStep_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bmultiple: i32, pstepobject: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CanStep(::core::mem::transmute_copy(&bmultiple), ::core::mem::transmute(&pstepobject)).into()
        }
        unsafe extern "system" fn CancelStep<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoFrameStep_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.CancelStep().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Step: Step::<Identity, Impl, OFFSET>,
            CanStep: CanStep::<Identity, Impl, OFFSET>,
            CancelStep: CancelStep::<Identity, Impl, 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<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>() -> IVideoProcAmp_Vtbl {
        unsafe extern "system" fn get_BacklightCompensation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_BacklightCompensation(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_BacklightCompensation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_BacklightCompensation(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_BacklightCompensation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_BacklightCompensation(::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<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Brightness(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Brightness<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Brightness(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Brightness<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_Brightness(::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<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_ColorEnable(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_ColorEnable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_ColorEnable(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_ColorEnable<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_ColorEnable(::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<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Contrast(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Contrast<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Contrast(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Contrast<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_Contrast(::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<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Gamma(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Gamma<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Gamma(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Gamma<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_Gamma(::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<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Saturation(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Saturation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Saturation(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Saturation<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_Saturation(::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<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Sharpness(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Sharpness<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Sharpness(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Sharpness<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_Sharpness(::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<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_WhiteBalance(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_WhiteBalance<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_WhiteBalance(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_WhiteBalance<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_WhiteBalance(::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<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Gain(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Gain<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Gain(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Gain<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_Gain(::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<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_Hue(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Hue<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_Hue(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Hue<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_Hue(::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<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_DigitalMultiplier(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_DigitalMultiplier<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_DigitalMultiplier(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_DigitalMultiplier<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_DigitalMultiplier(::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<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_PowerlineFrequency(::core::mem::transmute_copy(&pvalue), ::core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_PowerlineFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_PowerlineFrequency(::core::mem::transmute_copy(&value), ::core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_PowerlineFrequency<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoProcAmp_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_PowerlineFrequency(::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<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvalue1: *mut i32, pvalue2: *mut i32, pflags: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.get_WhiteBalanceComponent(::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<Impl = Impl>, Impl: IVideoProcAmp_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, value1: i32, value2: i32, flags: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.put_WhiteBalanceComponent(::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<Impl = Impl>, Impl: IVideoProcAmp_Impl, 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 {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.getRange_WhiteBalanceComponent(::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, Impl, OFFSET>,
            put_BacklightCompensation: put_BacklightCompensation::<Identity, Impl, OFFSET>,
            getRange_BacklightCompensation: getRange_BacklightCompensation::<Identity, Impl, OFFSET>,
            get_Brightness: get_Brightness::<Identity, Impl, OFFSET>,
            put_Brightness: put_Brightness::<Identity, Impl, OFFSET>,
            getRange_Brightness: getRange_Brightness::<Identity, Impl, OFFSET>,
            get_ColorEnable: get_ColorEnable::<Identity, Impl, OFFSET>,
            put_ColorEnable: put_ColorEnable::<Identity, Impl, OFFSET>,
            getRange_ColorEnable: getRange_ColorEnable::<Identity, Impl, OFFSET>,
            get_Contrast: get_Contrast::<Identity, Impl, OFFSET>,
            put_Contrast: put_Contrast::<Identity, Impl, OFFSET>,
            getRange_Contrast: getRange_Contrast::<Identity, Impl, OFFSET>,
            get_Gamma: get_Gamma::<Identity, Impl, OFFSET>,
            put_Gamma: put_Gamma::<Identity, Impl, OFFSET>,
            getRange_Gamma: getRange_Gamma::<Identity, Impl, OFFSET>,
            get_Saturation: get_Saturation::<Identity, Impl, OFFSET>,
            put_Saturation: put_Saturation::<Identity, Impl, OFFSET>,
            getRange_Saturation: getRange_Saturation::<Identity, Impl, OFFSET>,
            get_Sharpness: get_Sharpness::<Identity, Impl, OFFSET>,
            put_Sharpness: put_Sharpness::<Identity, Impl, OFFSET>,
            getRange_Sharpness: getRange_Sharpness::<Identity, Impl, OFFSET>,
            get_WhiteBalance: get_WhiteBalance::<Identity, Impl, OFFSET>,
            put_WhiteBalance: put_WhiteBalance::<Identity, Impl, OFFSET>,
            getRange_WhiteBalance: getRange_WhiteBalance::<Identity, Impl, OFFSET>,
            get_Gain: get_Gain::<Identity, Impl, OFFSET>,
            put_Gain: put_Gain::<Identity, Impl, OFFSET>,
            getRange_Gain: getRange_Gain::<Identity, Impl, OFFSET>,
            get_Hue: get_Hue::<Identity, Impl, OFFSET>,
            put_Hue: put_Hue::<Identity, Impl, OFFSET>,
            getRange_Hue: getRange_Hue::<Identity, Impl, OFFSET>,
            get_DigitalMultiplier: get_DigitalMultiplier::<Identity, Impl, OFFSET>,
            put_DigitalMultiplier: put_DigitalMultiplier::<Identity, Impl, OFFSET>,
            getRange_DigitalMultiplier: getRange_DigitalMultiplier::<Identity, Impl, OFFSET>,
            get_PowerlineFrequency: get_PowerlineFrequency::<Identity, Impl, OFFSET>,
            put_PowerlineFrequency: put_PowerlineFrequency::<Identity, Impl, OFFSET>,
            getRange_PowerlineFrequency: getRange_PowerlineFrequency::<Identity, Impl, OFFSET>,
            get_WhiteBalanceComponent: get_WhiteBalanceComponent::<Identity, Impl, OFFSET>,
            put_WhiteBalanceComponent: put_WhiteBalanceComponent::<Identity, Impl, OFFSET>,
            getRange_WhiteBalanceComponent: getRange_WhiteBalanceComponent::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IVideoProcAmp as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
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<i32>;
    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_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IVideoWindow {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IVideoWindow_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>() -> IVideoWindow_Vtbl {
        unsafe extern "system" fn SetCaption<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strcaption: ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCaption(::core::mem::transmute(&strcaption)).into()
        }
        unsafe extern "system" fn Caption<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, strcaption: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Caption() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(strcaption, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWindowStyle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, windowstyle: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetWindowStyle(::core::mem::transmute_copy(&windowstyle)).into()
        }
        unsafe extern "system" fn WindowStyle<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, windowstyle: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.WindowStyle() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(windowstyle, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWindowStyleEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, windowstyleex: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetWindowStyleEx(::core::mem::transmute_copy(&windowstyleex)).into()
        }
        unsafe extern "system" fn WindowStyleEx<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, windowstyleex: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.WindowStyleEx() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(windowstyleex, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAutoShow<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, autoshow: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAutoShow(::core::mem::transmute_copy(&autoshow)).into()
        }
        unsafe extern "system" fn AutoShow<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, autoshow: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.AutoShow() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(autoshow, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWindowState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, windowstate: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetWindowState(::core::mem::transmute_copy(&windowstate)).into()
        }
        unsafe extern "system" fn WindowState<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, windowstate: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.WindowState() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(windowstate, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBackgroundPalette<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, backgroundpalette: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBackgroundPalette(::core::mem::transmute_copy(&backgroundpalette)).into()
        }
        unsafe extern "system" fn BackgroundPalette<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pbackgroundpalette: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.BackgroundPalette() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pbackgroundpalette, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetVisible<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, visible: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetVisible(::core::mem::transmute_copy(&visible)).into()
        }
        unsafe extern "system" fn Visible<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pvisible: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Visible() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pvisible, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLeft<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, left: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetLeft(::core::mem::transmute_copy(&left)).into()
        }
        unsafe extern "system" fn Left<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pleft: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Left() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pleft, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWidth<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, width: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetWidth(::core::mem::transmute_copy(&width)).into()
        }
        unsafe extern "system" fn Width<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwidth: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Width() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pwidth, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTop<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, top: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetTop(::core::mem::transmute_copy(&top)).into()
        }
        unsafe extern "system" fn Top<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ptop: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Top() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ptop, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetHeight<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, height: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetHeight(::core::mem::transmute_copy(&height)).into()
        }
        unsafe extern "system" fn Height<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Height() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(pheight, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOwner<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, owner: isize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetOwner(::core::mem::transmute_copy(&owner)).into()
        }
        unsafe extern "system" fn Owner<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, owner: *mut isize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.Owner() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(owner, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMessageDrain<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, drain: isize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetMessageDrain(::core::mem::transmute_copy(&drain)).into()
        }
        unsafe extern "system" fn MessageDrain<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, drain: *mut isize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.MessageDrain() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(drain, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn BorderColor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, color: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.BorderColor() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(color, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBorderColor<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, color: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetBorderColor(::core::mem::transmute_copy(&color)).into()
        }
        unsafe extern "system" fn FullScreenMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fullscreenmode: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.FullScreenMode() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(fullscreenmode, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFullScreenMode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, fullscreenmode: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetFullScreenMode(::core::mem::transmute_copy(&fullscreenmode)).into()
        }
        unsafe extern "system" fn SetWindowForeground<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, focus: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetWindowForeground(::core::mem::transmute_copy(&focus)).into()
        }
        unsafe extern "system" fn NotifyOwnerMessage<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hwnd: isize, umsg: i32, wparam: isize, lparam: isize) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NotifyOwnerMessage(::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<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, left: i32, top: i32, width: i32, height: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetWindowPosition(::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<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pleft: *mut i32, ptop: *mut i32, pwidth: *mut i32, pheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetWindowPosition(::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<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwidth: *mut i32, pheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMinIdealImageSize(::core::mem::transmute_copy(&pwidth), ::core::mem::transmute_copy(&pheight)).into()
        }
        unsafe extern "system" fn GetMaxIdealImageSize<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pwidth: *mut i32, pheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetMaxIdealImageSize(::core::mem::transmute_copy(&pwidth), ::core::mem::transmute_copy(&pheight)).into()
        }
        unsafe extern "system" fn GetRestorePosition<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pleft: *mut i32, ptop: *mut i32, pwidth: *mut i32, pheight: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetRestorePosition(::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<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, hidecursor: OA_BOOL) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.HideCursor(::core::mem::transmute_copy(&hidecursor)).into()
        }
        unsafe extern "system" fn IsCursorHidden<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IVideoWindow_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, cursorhidden: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.IsCursorHidden() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(cursorhidden, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            SetCaption: SetCaption::<Identity, Impl, OFFSET>,
            Caption: Caption::<Identity, Impl, OFFSET>,
            SetWindowStyle: SetWindowStyle::<Identity, Impl, OFFSET>,
            WindowStyle: WindowStyle::<Identity, Impl, OFFSET>,
            SetWindowStyleEx: SetWindowStyleEx::<Identity, Impl, OFFSET>,
            WindowStyleEx: WindowStyleEx::<Identity, Impl, OFFSET>,
            SetAutoShow: SetAutoShow::<Identity, Impl, OFFSET>,
            AutoShow: AutoShow::<Identity, Impl, OFFSET>,
            SetWindowState: SetWindowState::<Identity, Impl, OFFSET>,
            WindowState: WindowState::<Identity, Impl, OFFSET>,
            SetBackgroundPalette: SetBackgroundPalette::<Identity, Impl, OFFSET>,
            BackgroundPalette: BackgroundPalette::<Identity, Impl, OFFSET>,
            SetVisible: SetVisible::<Identity, Impl, OFFSET>,
            Visible: Visible::<Identity, Impl, OFFSET>,
            SetLeft: SetLeft::<Identity, Impl, OFFSET>,
            Left: Left::<Identity, Impl, OFFSET>,
            SetWidth: SetWidth::<Identity, Impl, OFFSET>,
            Width: Width::<Identity, Impl, OFFSET>,
            SetTop: SetTop::<Identity, Impl, OFFSET>,
            Top: Top::<Identity, Impl, OFFSET>,
            SetHeight: SetHeight::<Identity, Impl, OFFSET>,
            Height: Height::<Identity, Impl, OFFSET>,
            SetOwner: SetOwner::<Identity, Impl, OFFSET>,
            Owner: Owner::<Identity, Impl, OFFSET>,
            SetMessageDrain: SetMessageDrain::<Identity, Impl, OFFSET>,
            MessageDrain: MessageDrain::<Identity, Impl, OFFSET>,
            BorderColor: BorderColor::<Identity, Impl, OFFSET>,
            SetBorderColor: SetBorderColor::<Identity, Impl, OFFSET>,
            FullScreenMode: FullScreenMode::<Identity, Impl, OFFSET>,
            SetFullScreenMode: SetFullScreenMode::<Identity, Impl, OFFSET>,
            SetWindowForeground: SetWindowForeground::<Identity, Impl, OFFSET>,
            NotifyOwnerMessage: NotifyOwnerMessage::<Identity, Impl, OFFSET>,
            SetWindowPosition: SetWindowPosition::<Identity, Impl, OFFSET>,
            GetWindowPosition: GetWindowPosition::<Identity, Impl, OFFSET>,
            GetMinIdealImageSize: GetMinIdealImageSize::<Identity, Impl, OFFSET>,
            GetMaxIdealImageSize: GetMaxIdealImageSize::<Identity, Impl, OFFSET>,
            GetRestorePosition: GetRestorePosition::<Identity, Impl, OFFSET>,
            HideCursor: HideCursor::<Identity, Impl, OFFSET>,
            IsCursorHidden: IsCursorHidden::<Identity, Impl, 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_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_Media_WindowsMediaFormat"))]
pub trait IWMCodecAMVideoAccelerator_Impl: Sized {
    fn SetAcceleratorInterface(&self, piamva: &::core::option::Option<IAMVideoAccelerator>) -> ::windows::core::Result<()>;
    fn NegotiateConnection(&self, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> ::windows::core::Result<()>;
    fn SetPlayerNotify(&self, phook: &::core::option::Option<super::WindowsMediaFormat::IWMPlayerTimestampHook>) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_Media_WindowsMediaFormat"))]
impl ::windows::core::RuntimeName for IWMCodecAMVideoAccelerator {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_Media_WindowsMediaFormat"))]
impl IWMCodecAMVideoAccelerator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IWMCodecAMVideoAccelerator_Impl, const OFFSET: isize>() -> IWMCodecAMVideoAccelerator_Vtbl {
        unsafe extern "system" fn SetAcceleratorInterface<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IWMCodecAMVideoAccelerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, piamva: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetAcceleratorInterface(::core::mem::transmute(&piamva)).into()
        }
        unsafe extern "system" fn NegotiateConnection<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IWMCodecAMVideoAccelerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pmediatype: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NegotiateConnection(::core::mem::transmute_copy(&pmediatype)).into()
        }
        unsafe extern "system" fn SetPlayerNotify<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IWMCodecAMVideoAccelerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phook: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPlayerNotify(::core::mem::transmute(&phook)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAcceleratorInterface: SetAcceleratorInterface::<Identity, Impl, OFFSET>,
            NegotiateConnection: NegotiateConnection::<Identity, Impl, OFFSET>,
            SetPlayerNotify: SetPlayerNotify::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IWMCodecAMVideoAccelerator as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_Media_WindowsMediaFormat"))]
pub trait IWMCodecVideoAccelerator_Impl: Sized {
    fn NegotiateConnection(&self, piamva: &::core::option::Option<IAMVideoAccelerator>, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> ::windows::core::Result<()>;
    fn SetPlayerNotify(&self, phook: &::core::option::Option<super::WindowsMediaFormat::IWMPlayerTimestampHook>) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_Media_WindowsMediaFormat"))]
impl ::windows::core::RuntimeName for IWMCodecVideoAccelerator {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation", feature = "Win32_Media_WindowsMediaFormat"))]
impl IWMCodecVideoAccelerator_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IWMCodecVideoAccelerator_Impl, const OFFSET: isize>() -> IWMCodecVideoAccelerator_Vtbl {
        unsafe extern "system" fn NegotiateConnection<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IWMCodecVideoAccelerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, piamva: *mut ::core::ffi::c_void, pmediatype: *const ::core::mem::ManuallyDrop<super::MediaFoundation::AM_MEDIA_TYPE>) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.NegotiateConnection(::core::mem::transmute(&piamva), ::core::mem::transmute_copy(&pmediatype)).into()
        }
        unsafe extern "system" fn SetPlayerNotify<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IWMCodecVideoAccelerator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phook: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPlayerNotify(::core::mem::transmute(&phook)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            NegotiateConnection: NegotiateConnection::<Identity, Impl, OFFSET>,
            SetPlayerNotify: SetPlayerNotify::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IWMCodecVideoAccelerator as ::windows::core::Interface>::IID
    }
}
pub trait IXDSCodec_Impl: Sized {
    fn XDSToRatObjOK(&self) -> ::windows::core::Result<::windows::core::HRESULT>;
    fn SetCCSubstreamService(&self, substreammask: i32) -> ::windows::core::Result<()>;
    fn CCSubstreamService(&self) -> ::windows::core::Result<i32>;
    fn GetContentAdvisoryRating(&self, prat: *mut i32, ppktseqid: *mut i32, pcallseqid: *mut i32, ptimestart: *mut i64, ptimeend: *mut i64) -> ::windows::core::Result<()>;
    fn GetXDSPacket(&self, pxdsclasspkt: *mut i32, pxdstypepkt: *mut i32, pbstrxdspkt: *mut ::windows::core::BSTR, ppktseqid: *mut i32, pcallseqid: *mut i32, ptimestart: *mut i64, ptimeend: *mut i64) -> ::windows::core::Result<()>;
    fn GetCurrLicenseExpDate(&self, prottype: *const ProtType) -> ::windows::core::Result<i32>;
    fn GetLastErrorCode(&self) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IXDSCodec {}
impl IXDSCodec_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSCodec_Impl, const OFFSET: isize>() -> IXDSCodec_Vtbl {
        unsafe extern "system" fn XDSToRatObjOK<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSCodec_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, phrcocreateretval: *mut ::windows::core::HRESULT) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.XDSToRatObjOK() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(phrcocreateretval, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCCSubstreamService<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSCodec_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, substreammask: i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetCCSubstreamService(::core::mem::transmute_copy(&substreammask)).into()
        }
        unsafe extern "system" fn CCSubstreamService<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSCodec_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, psubstreammask: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.CCSubstreamService() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(psubstreammask, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetContentAdvisoryRating<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSCodec_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prat: *mut i32, ppktseqid: *mut i32, pcallseqid: *mut i32, ptimestart: *mut i64, ptimeend: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetContentAdvisoryRating(::core::mem::transmute_copy(&prat), ::core::mem::transmute_copy(&ppktseqid), ::core::mem::transmute_copy(&pcallseqid), ::core::mem::transmute_copy(&ptimestart), ::core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn GetXDSPacket<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSCodec_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pxdsclasspkt: *mut i32, pxdstypepkt: *mut i32, pbstrxdspkt: *mut ::core::mem::ManuallyDrop<::windows::core::BSTR>, ppktseqid: *mut i32, pcallseqid: *mut i32, ptimestart: *mut i64, ptimeend: *mut i64) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetXDSPacket(::core::mem::transmute_copy(&pxdsclasspkt), ::core::mem::transmute_copy(&pxdstypepkt), ::core::mem::transmute_copy(&pbstrxdspkt), ::core::mem::transmute_copy(&ppktseqid), ::core::mem::transmute_copy(&pcallseqid), ::core::mem::transmute_copy(&ptimestart), ::core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn GetCurrLicenseExpDate<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSCodec_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, prottype: *const ProtType, lpdatetime: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetCurrLicenseExpDate(::core::mem::transmute_copy(&prottype)) {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(lpdatetime, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastErrorCode<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSCodec_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.GetLastErrorCode().into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            XDSToRatObjOK: XDSToRatObjOK::<Identity, Impl, OFFSET>,
            SetCCSubstreamService: SetCCSubstreamService::<Identity, Impl, OFFSET>,
            CCSubstreamService: CCSubstreamService::<Identity, Impl, OFFSET>,
            GetContentAdvisoryRating: GetContentAdvisoryRating::<Identity, Impl, OFFSET>,
            GetXDSPacket: GetXDSPacket::<Identity, Impl, OFFSET>,
            GetCurrLicenseExpDate: GetCurrLicenseExpDate::<Identity, Impl, OFFSET>,
            GetLastErrorCode: GetLastErrorCode::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IXDSCodec as ::windows::core::Interface>::IID
    }
}
pub trait IXDSCodecConfig_Impl: Sized {
    fn GetSecureChannelObject(&self) -> ::windows::core::Result<::windows::core::IUnknown>;
    fn SetPauseBufferTime(&self, dwpausebuffertime: u32) -> ::windows::core::Result<()>;
}
impl ::windows::core::RuntimeName for IXDSCodecConfig {}
impl IXDSCodecConfig_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSCodecConfig_Impl, const OFFSET: isize>() -> IXDSCodecConfig_Vtbl {
        unsafe extern "system" fn GetSecureChannelObject<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSCodecConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppunkdrmsecurechannel: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            match this.GetSecureChannelObject() {
                ::core::result::Result::Ok(ok__) => {
                    ::core::ptr::write(ppunkdrmsecurechannel, ::core::mem::transmute(ok__));
                    ::windows::core::HRESULT(0)
                }
                ::core::result::Result::Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPauseBufferTime<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSCodecConfig_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwpausebuffertime: u32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.SetPauseBufferTime(::core::mem::transmute_copy(&dwpausebuffertime)).into()
        }
        Self {
            base__: ::windows::core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSecureChannelObject: GetSecureChannelObject::<Identity, Impl, OFFSET>,
            SetPauseBufferTime: SetPauseBufferTime::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IXDSCodecConfig as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IXDSCodecEvents_Impl: Sized + super::super::System::Com::IDispatch_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IXDSCodecEvents {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IXDSCodecEvents_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSCodecEvents_Impl, const OFFSET: isize>() -> IXDSCodecEvents_Vtbl {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IXDSCodecEvents as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IXDSToRat_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Init(&self) -> ::windows::core::Result<()>;
    fn ParseXDSBytePair(&self, byte1: u8, byte2: u8, pensystem: *mut EnTvRat_System, penlevel: *mut EnTvRat_GenericLevel, plbfenattributes: *mut i32) -> ::windows::core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for IXDSToRat {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IXDSToRat_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSToRat_Impl, const OFFSET: isize>() -> IXDSToRat_Vtbl {
        unsafe extern "system" fn Init<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSToRat_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.Init().into()
        }
        unsafe extern "system" fn ParseXDSBytePair<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: IXDSToRat_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, byte1: u8, byte2: u8, pensystem: *mut EnTvRat_System, penlevel: *mut EnTvRat_GenericLevel, plbfenattributes: *mut i32) -> ::windows::core::HRESULT {
            let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
            let this = (*this).get_impl();
            this.ParseXDSBytePair(::core::mem::transmute_copy(&byte1), ::core::mem::transmute_copy(&byte2), ::core::mem::transmute_copy(&pensystem), ::core::mem::transmute_copy(&penlevel), ::core::mem::transmute_copy(&plbfenattributes)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>(),
            Init: Init::<Identity, Impl, OFFSET>,
            ParseXDSBytePair: ParseXDSBytePair::<Identity, Impl, OFFSET>,
        }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<IXDSToRat as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait _IMSVidCtlEvents_Impl: Sized + super::super::System::Com::IDispatch_Impl {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ::windows::core::RuntimeName for _IMSVidCtlEvents {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl _IMSVidCtlEvents_Vtbl {
    pub const fn new<Identity: ::windows::core::IUnknownImpl<Impl = Impl>, Impl: _IMSVidCtlEvents_Impl, const OFFSET: isize>() -> _IMSVidCtlEvents_Vtbl {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, Impl, OFFSET>() }
    }
    pub fn matches(iid: &windows::core::GUID) -> bool {
        iid == &<_IMSVidCtlEvents as ::windows::core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as ::windows::core::Interface>::IID
    }
}
