#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IATSCChannelTuneRequest, IATSCChannelTuneRequest_Vtbl, 0x0369b4e1_45b6_11d3_b650_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IATSCChannelTuneRequest {
    type Target = IChannelTuneRequest;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IATSCChannelTuneRequest, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuneRequest, IChannelTuneRequest);
#[cfg(feature = "Win32_System_Com")]
impl IATSCChannelTuneRequest {
    pub unsafe fn MinorChannel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MinorChannel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMinorChannel(&self, minorchannel: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMinorChannel)(windows_core::Interface::as_raw(self), minorchannel).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IATSCChannelTuneRequest_Vtbl {
    pub base__: IChannelTuneRequest_Vtbl,
    pub MinorChannel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMinorChannel: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IATSCComponentType, IATSCComponentType_Vtbl, 0xfc189e4d_7bd4_4125_b3b3_3a76a332cc96);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IATSCComponentType {
    type Target = IMPEG2ComponentType;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IATSCComponentType, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IComponentType, ILanguageComponentType, IMPEG2ComponentType);
#[cfg(feature = "Win32_System_Com")]
impl IATSCComponentType {
    pub unsafe fn Flags(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Flags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetFlags(&self, flags: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetFlags)(windows_core::Interface::as_raw(self), flags).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IATSCComponentType_Vtbl {
    pub base__: IMPEG2ComponentType_Vtbl,
    pub Flags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IATSCLocator, IATSCLocator_Vtbl, 0xbf8d986f_8c2b_4131_94d7_4d3d9fcc21ef);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IATSCLocator {
    type Target = IDigitalLocator;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IATSCLocator, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ILocator, IDigitalLocator);
#[cfg(feature = "Win32_System_Com")]
impl IATSCLocator {
    pub unsafe fn PhysicalChannel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).PhysicalChannel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetPhysicalChannel(&self, physicalchannel: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetPhysicalChannel)(windows_core::Interface::as_raw(self), physicalchannel).ok()
    }
    pub unsafe fn TSID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TSID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetTSID(&self, tsid: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetTSID)(windows_core::Interface::as_raw(self), tsid).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IATSCLocator_Vtbl {
    pub base__: IDigitalLocator_Vtbl,
    pub PhysicalChannel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetPhysicalChannel: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub TSID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetTSID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IATSCLocator2, IATSCLocator2_Vtbl, 0x612aa885_66cf_4090_ba0a_566f5312e4ca);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IATSCLocator2 {
    type Target = IATSCLocator;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IATSCLocator2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ILocator, IDigitalLocator, IATSCLocator);
#[cfg(feature = "Win32_System_Com")]
impl IATSCLocator2 {
    pub unsafe fn ProgramNumber(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ProgramNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetProgramNumber(&self, programnumber: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetProgramNumber)(windows_core::Interface::as_raw(self), programnumber).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IATSCLocator2_Vtbl {
    pub base__: IATSCLocator_Vtbl,
    pub ProgramNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetProgramNumber: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IATSCTuningSpace, IATSCTuningSpace_Vtbl, 0x0369b4e2_45b6_11d3_b650_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IATSCTuningSpace {
    type Target = IAnalogTVTuningSpace;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IATSCTuningSpace, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuningSpace, IAnalogTVTuningSpace);
#[cfg(feature = "Win32_System_Com")]
impl IATSCTuningSpace {
    pub unsafe fn MinMinorChannel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MinMinorChannel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMinMinorChannel(&self, newminminorchannelval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMinMinorChannel)(windows_core::Interface::as_raw(self), newminminorchannelval).ok()
    }
    pub unsafe fn MaxMinorChannel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MaxMinorChannel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMaxMinorChannel(&self, newmaxminorchannelval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMaxMinorChannel)(windows_core::Interface::as_raw(self), newmaxminorchannelval).ok()
    }
    pub unsafe fn MinPhysicalChannel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MinPhysicalChannel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMinPhysicalChannel(&self, newminphysicalchannelval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMinPhysicalChannel)(windows_core::Interface::as_raw(self), newminphysicalchannelval).ok()
    }
    pub unsafe fn MaxPhysicalChannel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MaxPhysicalChannel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMaxPhysicalChannel(&self, newmaxphysicalchannelval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMaxPhysicalChannel)(windows_core::Interface::as_raw(self), newmaxphysicalchannelval).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IATSCTuningSpace_Vtbl {
    pub base__: IAnalogTVTuningSpace_Vtbl,
    pub MinMinorChannel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMinMinorChannel: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub MaxMinorChannel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMaxMinorChannel: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub MinPhysicalChannel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMinPhysicalChannel: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub MaxPhysicalChannel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMaxPhysicalChannel: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IATSC_EIT, IATSC_EIT_Vtbl, 0xd7c212d7_76a2_4b4b_aa56_846879a80096);
impl core::ops::Deref for IATSC_EIT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IATSC_EIT, windows_core::IUnknown);
impl IATSC_EIT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSourceId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSourceId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetProtocolVersion(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetProtocolVersion)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordEventId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordEventId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordStartTime(&self, dwrecordindex: u32) -> windows_core::Result<MPEG_DATE_AND_TIME> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordStartTime)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordEtmLocation(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordEtmLocation)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDuration(&self, dwrecordindex: u32) -> windows_core::Result<MPEG_TIME> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDuration)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordTitleText(&self, dwrecordindex: u32, pdwlength: *mut u32, pptext: *mut *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordTitleText)(windows_core::Interface::as_raw(self), dwrecordindex, pdwlength, pptext).ok()
    }
    pub unsafe fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfDescriptors)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptorByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordDescriptorByTag)(windows_core::Interface::as_raw(self), dwrecordindex, btag, pdwcookie, core::mem::transmute(ppdescriptor)).ok()
    }
}
#[repr(C)]
pub struct IATSC_EIT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetSourceId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetProtocolVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordEventId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordStartTime: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT,
    pub GetRecordEtmLocation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordDuration: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut MPEG_TIME) -> windows_core::HRESULT,
    pub GetRecordTitleText: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32, *mut *mut u8) -> windows_core::HRESULT,
    pub GetRecordCountOfDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRecordDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IATSC_ETT, IATSC_ETT_Vtbl, 0x5a142cc9_b8cf_4a86_a040_e9cadf3ef3e7);
impl core::ops::Deref for IATSC_ETT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IATSC_ETT, windows_core::IUnknown);
impl IATSC_ETT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetProtocolVersion(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetProtocolVersion)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetEtmId(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEtmId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetExtendedMessageText(&self, pdwlength: *mut u32, pptext: *mut *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetExtendedMessageText)(windows_core::Interface::as_raw(self), pdwlength, pptext).ok()
    }
}
#[repr(C)]
pub struct IATSC_ETT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetProtocolVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetEtmId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetExtendedMessageText: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IATSC_MGT, IATSC_MGT_Vtbl, 0x8877dabd_c137_4073_97e3_779407a5d87a);
impl core::ops::Deref for IATSC_MGT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IATSC_MGT, windows_core::IUnknown);
impl IATSC_MGT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetProtocolVersion(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetProtocolVersion)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordType(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordType)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordTypePid(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordTypePid)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordVersionNumber(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordVersionNumber)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfDescriptors)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptorByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordDescriptorByTag)(windows_core::Interface::as_raw(self), dwrecordindex, btag, pdwcookie, core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn GetCountOfTableDescriptors(&self, pdwval: *const u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetCountOfTableDescriptors)(windows_core::Interface::as_raw(self), pdwval).ok()
    }
    pub unsafe fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableDescriptorByIndex)(windows_core::Interface::as_raw(self), dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptorByTag)(windows_core::Interface::as_raw(self), btag, pdwcookie, core::mem::transmute(ppdescriptor)).ok()
    }
}
#[repr(C)]
pub struct IATSC_MGT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetProtocolVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordType: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordTypePid: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordCountOfDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRecordDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCountOfTableDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, *const u32) -> windows_core::HRESULT,
    pub GetTableDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTableDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IATSC_STT, IATSC_STT_Vtbl, 0x6bf42423_217d_4d6f_81e1_3a7b360ec896);
impl core::ops::Deref for IATSC_STT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IATSC_STT, windows_core::IUnknown);
impl IATSC_STT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetProtocolVersion(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetProtocolVersion)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSystemTime(&self) -> windows_core::Result<MPEG_DATE_AND_TIME> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSystemTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetGpsUtcOffset(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetGpsUtcOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDaylightSavings(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDaylightSavings)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfTableDescriptors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableDescriptorByIndex)(windows_core::Interface::as_raw(self), dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptorByTag)(windows_core::Interface::as_raw(self), btag, pdwcookie, core::mem::transmute(ppdescriptor)).ok()
    }
}
#[repr(C)]
pub struct IATSC_STT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetProtocolVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetSystemTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT,
    pub GetGpsUtcOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetDaylightSavings: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetCountOfTableDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTableDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTableDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IATSC_VCT, IATSC_VCT_Vtbl, 0x26879a18_32f9_46c6_91f0_fb6479270e8c);
impl core::ops::Deref for IATSC_VCT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IATSC_VCT, windows_core::IUnknown);
impl IATSC_VCT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTransportStreamId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTransportStreamId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetProtocolVersion(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetProtocolVersion)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordName(&self, dwrecordindex: u32) -> windows_core::Result<windows_core::PWSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordName)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordMajorChannelNumber(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordMajorChannelNumber)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordMinorChannelNumber(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordMinorChannelNumber)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordModulationMode(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordModulationMode)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCarrierFrequency(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCarrierFrequency)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordTransportStreamId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordTransportStreamId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordProgramNumber(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordProgramNumber)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordEtmLocation(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordEtmLocation)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordIsAccessControlledBitSet(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordIsAccessControlledBitSet)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordIsHiddenBitSet(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordIsHiddenBitSet)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordIsPathSelectBitSet(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordIsPathSelectBitSet)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordIsOutOfBandBitSet(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordIsOutOfBandBitSet)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordIsHideGuideBitSet(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordIsHideGuideBitSet)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordServiceType(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordServiceType)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordSourceId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordSourceId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfDescriptors)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptorByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordDescriptorByTag)(windows_core::Interface::as_raw(self), dwrecordindex, btag, pdwcookie, core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn GetCountOfTableDescriptors(&self, pdwval: *const u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetCountOfTableDescriptors)(windows_core::Interface::as_raw(self), pdwval).ok()
    }
    pub unsafe fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableDescriptorByIndex)(windows_core::Interface::as_raw(self), dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptorByTag)(windows_core::Interface::as_raw(self), btag, pdwcookie, core::mem::transmute(ppdescriptor)).ok()
    }
}
#[repr(C)]
pub struct IATSC_VCT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTransportStreamId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetProtocolVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordName: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetRecordMajorChannelNumber: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordMinorChannelNumber: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordModulationMode: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordCarrierFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordTransportStreamId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordProgramNumber: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordEtmLocation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordIsAccessControlledBitSet: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetRecordIsHiddenBitSet: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetRecordIsPathSelectBitSet: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetRecordIsOutOfBandBitSet: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetRecordIsHideGuideBitSet: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetRecordServiceType: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordSourceId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordCountOfDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRecordDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCountOfTableDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, *const u32) -> windows_core::HRESULT,
    pub GetTableDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTableDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IAnalogAudioComponentType, IAnalogAudioComponentType_Vtbl, 0x2cfeb2a8_1787_4a24_a941_c6eaec39c842);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IAnalogAudioComponentType {
    type Target = IComponentType;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IAnalogAudioComponentType, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IComponentType);
#[cfg(feature = "Win32_System_Com")]
impl IAnalogAudioComponentType {
    pub unsafe fn AnalogAudioMode(&self) -> windows_core::Result<super::TVAudioMode> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).AnalogAudioMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetAnalogAudioMode(&self, mode: super::TVAudioMode) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetAnalogAudioMode)(windows_core::Interface::as_raw(self), mode).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IAnalogAudioComponentType_Vtbl {
    pub base__: IComponentType_Vtbl,
    pub AnalogAudioMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::TVAudioMode) -> windows_core::HRESULT,
    pub SetAnalogAudioMode: unsafe extern "system" fn(*mut core::ffi::c_void, super::TVAudioMode) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IAnalogLocator, IAnalogLocator_Vtbl, 0x34d1f26b_e339_430d_abce_738cb48984dc);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IAnalogLocator {
    type Target = ILocator;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IAnalogLocator, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ILocator);
#[cfg(feature = "Win32_System_Com")]
impl IAnalogLocator {
    pub unsafe fn VideoStandard(&self) -> windows_core::Result<super::AnalogVideoStandard> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).VideoStandard)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetVideoStandard(&self, avs: super::AnalogVideoStandard) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetVideoStandard)(windows_core::Interface::as_raw(self), avs).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IAnalogLocator_Vtbl {
    pub base__: ILocator_Vtbl,
    pub VideoStandard: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::AnalogVideoStandard) -> windows_core::HRESULT,
    pub SetVideoStandard: unsafe extern "system" fn(*mut core::ffi::c_void, super::AnalogVideoStandard) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IAnalogRadioTuningSpace, IAnalogRadioTuningSpace_Vtbl, 0x2a6e293b_2595_11d3_b64c_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IAnalogRadioTuningSpace {
    type Target = ITuningSpace;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IAnalogRadioTuningSpace, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuningSpace);
#[cfg(feature = "Win32_System_Com")]
impl IAnalogRadioTuningSpace {
    pub unsafe fn MinFrequency(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MinFrequency)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMinFrequency(&self, newminfrequencyval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMinFrequency)(windows_core::Interface::as_raw(self), newminfrequencyval).ok()
    }
    pub unsafe fn MaxFrequency(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MaxFrequency)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMaxFrequency(&self, newmaxfrequencyval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMaxFrequency)(windows_core::Interface::as_raw(self), newmaxfrequencyval).ok()
    }
    pub unsafe fn Step(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Step)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetStep(&self, newstepval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetStep)(windows_core::Interface::as_raw(self), newstepval).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IAnalogRadioTuningSpace_Vtbl {
    pub base__: ITuningSpace_Vtbl,
    pub MinFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMinFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub MaxFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMaxFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub Step: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetStep: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IAnalogRadioTuningSpace2, IAnalogRadioTuningSpace2_Vtbl, 0x39dd45da_2da8_46ba_8a8a_87e2b73d983a);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IAnalogRadioTuningSpace2 {
    type Target = IAnalogRadioTuningSpace;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IAnalogRadioTuningSpace2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuningSpace, IAnalogRadioTuningSpace);
#[cfg(feature = "Win32_System_Com")]
impl IAnalogRadioTuningSpace2 {
    pub unsafe fn CountryCode(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CountryCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetCountryCode(&self, newcountrycodeval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetCountryCode)(windows_core::Interface::as_raw(self), newcountrycodeval).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IAnalogRadioTuningSpace2_Vtbl {
    pub base__: IAnalogRadioTuningSpace_Vtbl,
    pub CountryCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetCountryCode: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IAnalogTVTuningSpace, IAnalogTVTuningSpace_Vtbl, 0x2a6e293c_2595_11d3_b64c_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IAnalogTVTuningSpace {
    type Target = ITuningSpace;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IAnalogTVTuningSpace, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuningSpace);
#[cfg(feature = "Win32_System_Com")]
impl IAnalogTVTuningSpace {
    pub unsafe fn MinChannel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MinChannel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMinChannel(&self, newminchannelval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMinChannel)(windows_core::Interface::as_raw(self), newminchannelval).ok()
    }
    pub unsafe fn MaxChannel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MaxChannel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMaxChannel(&self, newmaxchannelval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMaxChannel)(windows_core::Interface::as_raw(self), newmaxchannelval).ok()
    }
    pub unsafe fn InputType(&self) -> windows_core::Result<super::TunerInputType> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).InputType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetInputType(&self, newinputtypeval: super::TunerInputType) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetInputType)(windows_core::Interface::as_raw(self), newinputtypeval).ok()
    }
    pub unsafe fn CountryCode(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CountryCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetCountryCode(&self, newcountrycodeval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetCountryCode)(windows_core::Interface::as_raw(self), newcountrycodeval).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IAnalogTVTuningSpace_Vtbl {
    pub base__: ITuningSpace_Vtbl,
    pub MinChannel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMinChannel: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub MaxChannel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMaxChannel: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub InputType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::TunerInputType) -> windows_core::HRESULT,
    pub SetInputType: unsafe extern "system" fn(*mut core::ffi::c_void, super::TunerInputType) -> windows_core::HRESULT,
    pub CountryCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetCountryCode: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IAtscContentAdvisoryDescriptor, IAtscContentAdvisoryDescriptor_Vtbl, 0xff76e60c_0283_43ea_ba32_b422238547ee);
impl core::ops::Deref for IAtscContentAdvisoryDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IAtscContentAdvisoryDescriptor, windows_core::IUnknown);
impl IAtscContentAdvisoryDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRatingRegionCount(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRatingRegionCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordRatingRegion(&self, bindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordRatingRegion)(windows_core::Interface::as_raw(self), bindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordRatedDimensions(&self, bindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordRatedDimensions)(windows_core::Interface::as_raw(self), bindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordRatingDimension(&self, bindexouter: u8, bindexinner: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordRatingDimension)(windows_core::Interface::as_raw(self), bindexouter, bindexinner, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordRatingValue(&self, bindexouter: u8, bindexinner: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordRatingValue)(windows_core::Interface::as_raw(self), bindexouter, bindexinner, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordRatingDescriptionText(&self, bindex: u8, pblength: *mut u8, pptext: *mut *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordRatingDescriptionText)(windows_core::Interface::as_raw(self), bindex, pblength, pptext).ok()
    }
}
#[repr(C)]
pub struct IAtscContentAdvisoryDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRatingRegionCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordRatingRegion: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordRatedDimensions: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordRatingDimension: unsafe extern "system" fn(*mut core::ffi::c_void, u8, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordRatingValue: unsafe extern "system" fn(*mut core::ffi::c_void, u8, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordRatingDescriptionText: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8, *mut *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IAtscPsipParser, IAtscPsipParser_Vtbl, 0xb2c98995_5eb2_4fb1_b406_f3e8e2026a9a);
impl core::ops::Deref for IAtscPsipParser {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IAtscPsipParser, windows_core::IUnknown);
impl IAtscPsipParser {
    pub unsafe fn Initialize<P0>(&self, punkmpeg2data: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), punkmpeg2data.param().abi()).ok()
    }
    pub unsafe fn GetPAT(&self) -> windows_core::Result<IPAT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetPAT)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetCAT(&self, dwtimeout: u32) -> windows_core::Result<ICAT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCAT)(windows_core::Interface::as_raw(self), dwtimeout, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetPMT(&self, pid: u16, pwprogramnumber: *const u16) -> windows_core::Result<IPMT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetPMT)(windows_core::Interface::as_raw(self), pid, pwprogramnumber, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTSDT(&self) -> windows_core::Result<ITSDT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTSDT)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetMGT(&self) -> windows_core::Result<IATSC_MGT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetMGT)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetVCT<P0>(&self, tableid: u8, fgetnexttable: P0) -> windows_core::Result<IATSC_VCT>
    where
        P0: windows_core::Param<super::super::super::Foundation::BOOL>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVCT)(windows_core::Interface::as_raw(self), tableid, fgetnexttable.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetEIT(&self, pid: u16, pwsourceid: *const u16, dwtimeout: u32) -> windows_core::Result<IATSC_EIT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEIT)(windows_core::Interface::as_raw(self), pid, pwsourceid, dwtimeout, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetETT(&self, pid: u16, wsourceid: *const u16, pweventid: *const u16) -> windows_core::Result<IATSC_ETT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetETT)(windows_core::Interface::as_raw(self), pid, wsourceid, pweventid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetSTT(&self) -> windows_core::Result<IATSC_STT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSTT)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetEAS(&self, pid: u16) -> windows_core::Result<ISCTE_EAS> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEAS)(windows_core::Interface::as_raw(self), pid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IAtscPsipParser_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetPAT: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCAT: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetPMT: unsafe extern "system" fn(*mut core::ffi::c_void, u16, *const u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTSDT: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetMGT: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVCT: unsafe extern "system" fn(*mut core::ffi::c_void, u8, super::super::super::Foundation::BOOL, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetEIT: unsafe extern "system" fn(*mut core::ffi::c_void, u16, *const u16, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetETT: unsafe extern "system" fn(*mut core::ffi::c_void, u16, *const u16, *const u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetSTT: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetEAS: unsafe extern "system" fn(*mut core::ffi::c_void, u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IAttributeGet, IAttributeGet_Vtbl, 0x52dbd1ec_e48f_4528_9232_f442a68f0ae1);
impl core::ops::Deref for IAttributeGet {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IAttributeGet, windows_core::IUnknown);
impl IAttributeGet {
    pub unsafe fn GetCount(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetAttribIndexed(&self, lindex: i32, pguidattribute: *mut windows_core::GUID, pbattribute: *mut u8, pdwattributelength: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetAttribIndexed)(windows_core::Interface::as_raw(self), lindex, pguidattribute, pbattribute, pdwattributelength).ok()
    }
    pub unsafe fn GetAttrib(&self, guidattribute: windows_core::GUID, pbattribute: *mut u8, pdwattributelength: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetAttrib)(windows_core::Interface::as_raw(self), core::mem::transmute(guidattribute), pbattribute, pdwattributelength).ok()
    }
}
#[repr(C)]
pub struct IAttributeGet_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub GetAttribIndexed: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut windows_core::GUID, *mut u8, *mut u32) -> windows_core::HRESULT,
    pub GetAttrib: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::GUID, *mut u8, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IAttributeSet, IAttributeSet_Vtbl, 0x583ec3cc_4960_4857_982b_41a33ea0a006);
impl core::ops::Deref for IAttributeSet {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IAttributeSet, windows_core::IUnknown);
impl IAttributeSet {
    pub unsafe fn SetAttrib(&self, guidattribute: windows_core::GUID, pbattribute: *const u8, dwattributelength: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetAttrib)(windows_core::Interface::as_raw(self), core::mem::transmute(guidattribute), pbattribute, dwattributelength).ok()
    }
}
#[repr(C)]
pub struct IAttributeSet_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetAttrib: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::GUID, *const u8, u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IAuxInTuningSpace, IAuxInTuningSpace_Vtbl, 0xe48244b8_7e17_4f76_a763_5090ff1e2f30);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IAuxInTuningSpace {
    type Target = ITuningSpace;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IAuxInTuningSpace, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuningSpace);
#[cfg(feature = "Win32_System_Com")]
impl IAuxInTuningSpace {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IAuxInTuningSpace_Vtbl {
    pub base__: ITuningSpace_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IAuxInTuningSpace2, IAuxInTuningSpace2_Vtbl, 0xb10931ed_8bfe_4ab0_9dce_e469c29a9729);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IAuxInTuningSpace2 {
    type Target = IAuxInTuningSpace;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IAuxInTuningSpace2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuningSpace, IAuxInTuningSpace);
#[cfg(feature = "Win32_System_Com")]
impl IAuxInTuningSpace2 {
    pub unsafe fn CountryCode(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CountryCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetCountryCode(&self, newcountrycodeval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetCountryCode)(windows_core::Interface::as_raw(self), newcountrycodeval).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IAuxInTuningSpace2_Vtbl {
    pub base__: IAuxInTuningSpace_Vtbl,
    pub CountryCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetCountryCode: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IBDAComparable, IBDAComparable_Vtbl, 0xb34505e0_2f0e_497b_80bc_d43f3b24ed7f);
impl core::ops::Deref for IBDAComparable {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IBDAComparable, windows_core::IUnknown);
impl IBDAComparable {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CompareExact<P0>(&self, compareto: P0) -> windows_core::Result<i32>
    where
        P0: windows_core::Param<super::super::super::System::Com::IDispatch>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CompareExact)(windows_core::Interface::as_raw(self), compareto.param().abi(), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CompareEquivalent<P0>(&self, compareto: P0, dwflags: u32) -> windows_core::Result<i32>
    where
        P0: windows_core::Param<super::super::super::System::Com::IDispatch>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CompareEquivalent)(windows_core::Interface::as_raw(self), compareto.param().abi(), dwflags, &mut result__).map(|| result__)
    }
    pub unsafe fn HashExact(&self) -> windows_core::Result<i64> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).HashExact)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn HashExactIncremental(&self, partialresult: i64) -> windows_core::Result<i64> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).HashExactIncremental)(windows_core::Interface::as_raw(self), partialresult, &mut result__).map(|| result__)
    }
    pub unsafe fn HashEquivalent(&self, dwflags: u32) -> windows_core::Result<i64> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).HashEquivalent)(windows_core::Interface::as_raw(self), dwflags, &mut result__).map(|| result__)
    }
    pub unsafe fn HashEquivalentIncremental(&self, partialresult: i64, dwflags: u32) -> windows_core::Result<i64> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).HashEquivalentIncremental)(windows_core::Interface::as_raw(self), partialresult, dwflags, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IBDAComparable_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub CompareExact: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CompareExact: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub CompareEquivalent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, *mut i32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CompareEquivalent: usize,
    pub HashExact: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i64) -> windows_core::HRESULT,
    pub HashExactIncremental: unsafe extern "system" fn(*mut core::ffi::c_void, i64, *mut i64) -> windows_core::HRESULT,
    pub HashEquivalent: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut i64) -> windows_core::HRESULT,
    pub HashEquivalentIncremental: unsafe extern "system" fn(*mut core::ffi::c_void, i64, u32, *mut i64) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IBDACreateTuneRequestEx, IBDACreateTuneRequestEx_Vtbl, 0xc0a4a1d4_2b3c_491a_ba22_499fbadd4d12);
impl core::ops::Deref for IBDACreateTuneRequestEx {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IBDACreateTuneRequestEx, windows_core::IUnknown);
impl IBDACreateTuneRequestEx {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CreateTuneRequestEx(&self, tunerequestiid: *const windows_core::GUID) -> windows_core::Result<ITuneRequest> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CreateTuneRequestEx)(windows_core::Interface::as_raw(self), tunerequestiid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IBDACreateTuneRequestEx_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub CreateTuneRequestEx: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CreateTuneRequestEx: usize,
}
windows_core::imp::define_interface!(IBDA_TIF_REGISTRATION, IBDA_TIF_REGISTRATION_Vtbl, 0xdfef4a68_ee61_415f_9ccb_cd95f2f98a3a);
impl core::ops::Deref for IBDA_TIF_REGISTRATION {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IBDA_TIF_REGISTRATION, windows_core::IUnknown);
impl IBDA_TIF_REGISTRATION {
    pub unsafe fn RegisterTIFEx<P0>(&self, ptifinputpin: P0, ppvregistrationcontext: *mut u32, ppmpeg2datacontrol: *mut Option<windows_core::IUnknown>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::IPin>,
    {
        (windows_core::Interface::vtable(self).RegisterTIFEx)(windows_core::Interface::as_raw(self), ptifinputpin.param().abi(), ppvregistrationcontext, core::mem::transmute(ppmpeg2datacontrol)).ok()
    }
    pub unsafe fn UnregisterTIF(&self, pvregistrationcontext: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).UnregisterTIF)(windows_core::Interface::as_raw(self), pvregistrationcontext).ok()
    }
}
#[repr(C)]
pub struct IBDA_TIF_REGISTRATION_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub RegisterTIFEx: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub UnregisterTIF: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ICAT, ICAT_Vtbl, 0x7c6995fb_2a31_4bd7_953e_b1ad7fb7d31c);
impl core::ops::Deref for ICAT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ICAT, windows_core::IUnknown);
impl ICAT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfTableDescriptors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableDescriptorByIndex)(windows_core::Interface::as_raw(self), dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptorByTag)(windows_core::Interface::as_raw(self), btag, pdwcookie, core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn RegisterForNextTable<P0>(&self, hnexttableavailable: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForNextTable)(windows_core::Interface::as_raw(self), hnexttableavailable.param().abi()).ok()
    }
    pub unsafe fn GetNextTable(&self, dwtimeout: u32) -> windows_core::Result<ICAT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNextTable)(windows_core::Interface::as_raw(self), dwtimeout, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn RegisterForWhenCurrent<P0>(&self, hnexttableiscurrent: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForWhenCurrent)(windows_core::Interface::as_raw(self), hnexttableiscurrent.param().abi()).ok()
    }
    pub unsafe fn ConvertNextToCurrent(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ConvertNextToCurrent)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct ICAT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfTableDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTableDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTableDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub GetNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForWhenCurrent: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub ConvertNextToCurrent: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ICaptionServiceDescriptor, ICaptionServiceDescriptor_Vtbl, 0x40834007_6834_46f0_bd45_d5f6a6be258c);
impl core::ops::Deref for ICaptionServiceDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ICaptionServiceDescriptor, windows_core::IUnknown);
impl ICaptionServiceDescriptor {
    pub unsafe fn GetNumberOfServices(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNumberOfServices)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLanguageCode(&self, bindex: u8, langcode: &mut [u8; 3]) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetLanguageCode)(windows_core::Interface::as_raw(self), bindex, core::mem::transmute(langcode.as_ptr())).ok()
    }
    pub unsafe fn GetCaptionServiceNumber(&self, bindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCaptionServiceNumber)(windows_core::Interface::as_raw(self), bindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetCCType(&self, bindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCCType)(windows_core::Interface::as_raw(self), bindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetEasyReader(&self, bindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEasyReader)(windows_core::Interface::as_raw(self), bindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetWideAspectRatio(&self, bindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetWideAspectRatio)(windows_core::Interface::as_raw(self), bindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct ICaptionServiceDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetNumberOfServices: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLanguageCode: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetCaptionServiceNumber: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetCCType: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetEasyReader: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetWideAspectRatio: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IChannelIDTuneRequest, IChannelIDTuneRequest_Vtbl, 0x156eff60_86f4_4e28_89fc_109799fd57ee);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IChannelIDTuneRequest {
    type Target = ITuneRequest;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IChannelIDTuneRequest, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuneRequest);
#[cfg(feature = "Win32_System_Com")]
impl IChannelIDTuneRequest {
    pub unsafe fn ChannelID(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ChannelID)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetChannelID<P0>(&self, channelid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetChannelID)(windows_core::Interface::as_raw(self), channelid.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IChannelIDTuneRequest_Vtbl {
    pub base__: ITuneRequest_Vtbl,
    pub ChannelID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SetChannelID: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IChannelTuneRequest, IChannelTuneRequest_Vtbl, 0x0369b4e0_45b6_11d3_b650_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IChannelTuneRequest {
    type Target = ITuneRequest;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IChannelTuneRequest, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuneRequest);
#[cfg(feature = "Win32_System_Com")]
impl IChannelTuneRequest {
    pub unsafe fn Channel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Channel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetChannel(&self, channel: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetChannel)(windows_core::Interface::as_raw(self), channel).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IChannelTuneRequest_Vtbl {
    pub base__: ITuneRequest_Vtbl,
    pub Channel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetChannel: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IComponent, IComponent_Vtbl, 0x1a5576fc_0e19_11d3_9d8e_00c04f72d980);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IComponent {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IComponent, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IComponent {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Type(&self) -> windows_core::Result<IComponentType> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Type)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetType<P0>(&self, ct: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IComponentType>,
    {
        (windows_core::Interface::vtable(self).SetType)(windows_core::Interface::as_raw(self), ct.param().abi()).ok()
    }
    pub unsafe fn DescLangID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DescLangID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetDescLangID(&self, langid: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetDescLangID)(windows_core::Interface::as_raw(self), langid).ok()
    }
    pub unsafe fn Status(&self) -> windows_core::Result<super::ComponentStatus> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Status)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetStatus(&self, status: super::ComponentStatus) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetStatus)(windows_core::Interface::as_raw(self), status).ok()
    }
    pub unsafe fn Description(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Description)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetDescription<P0>(&self, description: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetDescription)(windows_core::Interface::as_raw(self), description.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Clone(&self) -> windows_core::Result<IComponent> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IComponent_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Type: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Type: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetType: usize,
    pub DescLangID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetDescLangID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub Status: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::ComponentStatus) -> windows_core::HRESULT,
    pub SetStatus: unsafe extern "system" fn(*mut core::ffi::c_void, super::ComponentStatus) -> windows_core::HRESULT,
    pub Description: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SetDescription: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Clone: usize,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IComponentType, IComponentType_Vtbl, 0x6a340dc0_0311_11d3_9d8e_00c04f72d980);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IComponentType {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IComponentType, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IComponentType {
    pub unsafe fn Category(&self) -> windows_core::Result<super::ComponentCategory> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Category)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetCategory(&self, category: super::ComponentCategory) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetCategory)(windows_core::Interface::as_raw(self), category).ok()
    }
    pub unsafe fn MediaMajorType(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MediaMajorType)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetMediaMajorType<P0>(&self, mediamajortype: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetMediaMajorType)(windows_core::Interface::as_raw(self), mediamajortype.param().abi()).ok()
    }
    pub unsafe fn _MediaMajorType(&self) -> windows_core::Result<windows_core::GUID> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._MediaMajorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn Set_MediaMajorType(&self, mediamajortypeguid: *const windows_core::GUID) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Set_MediaMajorType)(windows_core::Interface::as_raw(self), mediamajortypeguid).ok()
    }
    pub unsafe fn MediaSubType(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MediaSubType)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetMediaSubType<P0>(&self, mediasubtype: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetMediaSubType)(windows_core::Interface::as_raw(self), mediasubtype.param().abi()).ok()
    }
    pub unsafe fn _MediaSubType(&self) -> windows_core::Result<windows_core::GUID> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._MediaSubType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn Set_MediaSubType(&self, mediasubtypeguid: *const windows_core::GUID) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Set_MediaSubType)(windows_core::Interface::as_raw(self), mediasubtypeguid).ok()
    }
    pub unsafe fn MediaFormatType(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MediaFormatType)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetMediaFormatType<P0>(&self, mediaformattype: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetMediaFormatType)(windows_core::Interface::as_raw(self), mediaformattype.param().abi()).ok()
    }
    pub unsafe fn _MediaFormatType(&self) -> windows_core::Result<windows_core::GUID> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._MediaFormatType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn Set_MediaFormatType(&self, mediaformattypeguid: *const windows_core::GUID) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Set_MediaFormatType)(windows_core::Interface::as_raw(self), mediaformattypeguid).ok()
    }
    #[cfg(feature = "Win32_Media_MediaFoundation")]
    pub unsafe fn MediaType(&self) -> windows_core::Result<super::super::MediaFoundation::AM_MEDIA_TYPE> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MediaType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_Media_MediaFoundation")]
    pub unsafe fn SetMediaType(&self, mediatype: *const super::super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMediaType)(windows_core::Interface::as_raw(self), mediatype).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Clone(&self) -> windows_core::Result<IComponentType> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IComponentType_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Category: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::ComponentCategory) -> windows_core::HRESULT,
    pub SetCategory: unsafe extern "system" fn(*mut core::ffi::c_void, super::ComponentCategory) -> windows_core::HRESULT,
    pub MediaMajorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SetMediaMajorType: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub _MediaMajorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub Set_MediaMajorType: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    pub MediaSubType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SetMediaSubType: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub _MediaSubType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub Set_MediaSubType: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    pub MediaFormatType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SetMediaFormatType: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub _MediaFormatType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub Set_MediaFormatType: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_Media_MediaFoundation")]
    pub MediaType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Media_MediaFoundation"))]
    MediaType: usize,
    #[cfg(feature = "Win32_Media_MediaFoundation")]
    pub SetMediaType: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Media_MediaFoundation"))]
    SetMediaType: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Clone: usize,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IComponentTypes, IComponentTypes_Vtbl, 0x0dc13d4a_0313_11d3_9d8e_00c04f72d980);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IComponentTypes {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IComponentTypes, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IComponentTypes {
    pub unsafe fn Count(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Count)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._NewEnum)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn EnumComponentTypes(&self) -> windows_core::Result<IEnumComponentTypes> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EnumComponentTypes)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_Item<P0>(&self, index: P0) -> windows_core::Result<IComponentType>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_Item)(windows_core::Interface::as_raw(self), index.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn put_Item<P0, P1>(&self, index: P0, componenttype: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
        P1: windows_core::Param<IComponentType>,
    {
        (windows_core::Interface::vtable(self).put_Item)(windows_core::Interface::as_raw(self), index.param().abi(), componenttype.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, componenttype: P0) -> windows_core::Result<windows_core::VARIANT>
    where
        P0: windows_core::Param<IComponentType>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Add)(windows_core::Interface::as_raw(self), componenttype.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Remove<P0>(&self, index: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).Remove)(windows_core::Interface::as_raw(self), index.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Clone(&self) -> windows_core::Result<IComponentTypes> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IComponentTypes_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub _NewEnum: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    _NewEnum: usize,
    pub EnumComponentTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub get_Item: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_Item: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub put_Item: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    put_Item: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Clone: usize,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IComponents, IComponents_Vtbl, 0x39a48091_fffe_4182_a161_3ff802640e26);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IComponents {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IComponents, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IComponents {
    pub unsafe fn Count(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Count)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._NewEnum)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn EnumComponents(&self) -> windows_core::Result<IEnumComponents> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EnumComponents)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_Item<P0>(&self, index: P0) -> windows_core::Result<IComponent>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_Item)(windows_core::Interface::as_raw(self), index.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, component: P0) -> windows_core::Result<windows_core::VARIANT>
    where
        P0: windows_core::Param<IComponent>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Add)(windows_core::Interface::as_raw(self), component.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Remove<P0>(&self, index: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).Remove)(windows_core::Interface::as_raw(self), index.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Clone(&self) -> windows_core::Result<IComponents> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn put_Item<P0, P1>(&self, index: P0, ppcomponent: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
        P1: windows_core::Param<IComponent>,
    {
        (windows_core::Interface::vtable(self).put_Item)(windows_core::Interface::as_raw(self), index.param().abi(), ppcomponent.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IComponents_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub _NewEnum: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    _NewEnum: usize,
    pub EnumComponents: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub get_Item: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_Item: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Clone: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub put_Item: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    put_Item: usize,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IComponentsOld, IComponentsOld_Vtbl, 0xfcd01846_0e19_11d3_9d8e_00c04f72d980);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IComponentsOld {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IComponentsOld, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IComponentsOld {
    pub unsafe fn Count(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Count)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._NewEnum)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn EnumComponents(&self) -> windows_core::Result<IEnumComponents> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EnumComponents)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_Item<P0>(&self, index: P0) -> windows_core::Result<IComponent>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_Item)(windows_core::Interface::as_raw(self), index.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, component: P0) -> windows_core::Result<windows_core::VARIANT>
    where
        P0: windows_core::Param<IComponent>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Add)(windows_core::Interface::as_raw(self), component.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Remove<P0>(&self, index: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).Remove)(windows_core::Interface::as_raw(self), index.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Clone(&self) -> windows_core::Result<IComponents> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IComponentsOld_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub _NewEnum: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    _NewEnum: usize,
    pub EnumComponents: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub get_Item: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_Item: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Clone: usize,
}
windows_core::imp::define_interface!(ICreatePropBagOnRegKey, ICreatePropBagOnRegKey_Vtbl, 0x8a674b48_1f63_11d3_b64c_00c04f79498e);
impl core::ops::Deref for ICreatePropBagOnRegKey {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ICreatePropBagOnRegKey, windows_core::IUnknown);
impl ICreatePropBagOnRegKey {
    #[cfg(feature = "Win32_System_Registry")]
    pub unsafe fn Create<P0, P1>(&self, hkey: P0, subkey: P1, uloptions: u32, samdesired: u32, iid: *const windows_core::GUID, ppbag: *mut *mut core::ffi::c_void) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::System::Registry::HKEY>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        (windows_core::Interface::vtable(self).Create)(windows_core::Interface::as_raw(self), hkey.param().abi(), subkey.param().abi(), uloptions, samdesired, iid, ppbag).ok()
    }
}
#[repr(C)]
pub struct ICreatePropBagOnRegKey_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Registry")]
    pub Create: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::System::Registry::HKEY, windows_core::PCWSTR, u32, u32, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Registry"))]
    Create: usize,
}
windows_core::imp::define_interface!(IDTFilter, IDTFilter_Vtbl, 0xc4c4c4b2_0049_4e2b_98fb_9537f6ce516d);
impl core::ops::Deref for IDTFilter {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDTFilter, windows_core::IUnknown);
impl IDTFilter {
    pub unsafe fn EvalRatObjOK(&self) -> windows_core::Result<windows_core::HRESULT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EvalRatObjOK)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCurrRating(&self, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, plbfenattr: *mut i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetCurrRating)(windows_core::Interface::as_raw(self), pensystem, penrating, plbfenattr).ok()
    }
    pub unsafe fn get_BlockedRatingAttributes(&self, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_BlockedRatingAttributes)(windows_core::Interface::as_raw(self), ensystem, enlevel, &mut result__).map(|| result__)
    }
    pub unsafe fn put_BlockedRatingAttributes(&self, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel, lbfattrs: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).put_BlockedRatingAttributes)(windows_core::Interface::as_raw(self), ensystem, enlevel, lbfattrs).ok()
    }
    pub unsafe fn BlockUnRated(&self) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).BlockUnRated)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetBlockUnRated<P0>(&self, fblockunratedshows: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::BOOL>,
    {
        (windows_core::Interface::vtable(self).SetBlockUnRated)(windows_core::Interface::as_raw(self), fblockunratedshows.param().abi()).ok()
    }
    pub unsafe fn BlockUnRatedDelay(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).BlockUnRatedDelay)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetBlockUnRatedDelay(&self, msecsdelaybeforeblock: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetBlockUnRatedDelay)(windows_core::Interface::as_raw(self), msecsdelaybeforeblock).ok()
    }
}
#[repr(C)]
pub struct IDTFilter_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub EvalRatObjOK: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::HRESULT) -> windows_core::HRESULT,
    pub GetCurrRating: unsafe extern "system" fn(*mut core::ffi::c_void, *mut EnTvRat_System, *mut EnTvRat_GenericLevel, *mut i32) -> windows_core::HRESULT,
    pub get_BlockedRatingAttributes: unsafe extern "system" fn(*mut core::ffi::c_void, EnTvRat_System, EnTvRat_GenericLevel, *mut i32) -> windows_core::HRESULT,
    pub put_BlockedRatingAttributes: unsafe extern "system" fn(*mut core::ffi::c_void, EnTvRat_System, EnTvRat_GenericLevel, i32) -> windows_core::HRESULT,
    pub BlockUnRated: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub SetBlockUnRated: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub BlockUnRatedDelay: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetBlockUnRatedDelay: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDTFilter2, IDTFilter2_Vtbl, 0xc4c4c4b4_0049_4e2b_98fb_9537f6ce516d);
impl core::ops::Deref for IDTFilter2 {
    type Target = IDTFilter;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDTFilter2, windows_core::IUnknown, IDTFilter);
impl IDTFilter2 {
    pub unsafe fn ChallengeUrl(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ChallengeUrl)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetCurrLicenseExpDate(&self, prottype: *const ProtType) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCurrLicenseExpDate)(windows_core::Interface::as_raw(self), prottype, &mut result__).map(|| result__)
    }
    pub unsafe fn GetLastErrorCode(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetLastErrorCode)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IDTFilter2_Vtbl {
    pub base__: IDTFilter_Vtbl,
    pub ChallengeUrl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub GetCurrLicenseExpDate: unsafe extern "system" fn(*mut core::ffi::c_void, *const ProtType, *mut i32) -> windows_core::HRESULT,
    pub GetLastErrorCode: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDTFilter3, IDTFilter3_Vtbl, 0x513998cc_e929_4cdf_9fbd_bad1e0314866);
impl core::ops::Deref for IDTFilter3 {
    type Target = IDTFilter2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDTFilter3, windows_core::IUnknown, IDTFilter, IDTFilter2);
impl IDTFilter3 {
    pub unsafe fn GetProtectionType(&self) -> windows_core::Result<ProtType> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetProtectionType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn LicenseHasExpirationDate(&self) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).LicenseHasExpirationDate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetRights<P0>(&self, bstrrights: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetRights)(windows_core::Interface::as_raw(self), bstrrights.param().abi()).ok()
    }
}
#[repr(C)]
pub struct IDTFilter3_Vtbl {
    pub base__: IDTFilter2_Vtbl,
    pub GetProtectionType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut ProtType) -> windows_core::HRESULT,
    pub LicenseHasExpirationDate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub SetRights: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDTFilterConfig, IDTFilterConfig_Vtbl, 0xc4c4c4d2_0049_4e2b_98fb_9537f6ce516d);
impl core::ops::Deref for IDTFilterConfig {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDTFilterConfig, windows_core::IUnknown);
impl IDTFilterConfig {
    pub unsafe fn GetSecureChannelObject(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSecureChannelObject)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IDTFilterConfig_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetSecureChannelObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IDTFilterEvents, IDTFilterEvents_Vtbl, 0xc4c4c4c2_0049_4e2b_98fb_9537f6ce516d);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IDTFilterEvents {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IDTFilterEvents, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IDTFilterEvents {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IDTFilterEvents_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
}
windows_core::imp::define_interface!(IDTFilterLicenseRenewal, IDTFilterLicenseRenewal_Vtbl, 0x8a78b317_e405_4a43_994a_620d8f5ce25e);
impl core::ops::Deref for IDTFilterLicenseRenewal {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDTFilterLicenseRenewal, windows_core::IUnknown);
impl IDTFilterLicenseRenewal {
    pub unsafe fn GetLicenseRenewalData(&self, ppwszfilename: *mut windows_core::PWSTR, ppwszexpiredkid: *mut windows_core::PWSTR, ppwsztunerid: *mut windows_core::PWSTR) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetLicenseRenewalData)(windows_core::Interface::as_raw(self), ppwszfilename, ppwszexpiredkid, ppwsztunerid).ok()
    }
}
#[repr(C)]
pub struct IDTFilterLicenseRenewal_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetLicenseRenewalData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR, *mut windows_core::PWSTR, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IDVBCLocator, IDVBCLocator_Vtbl, 0x6e42f36e_1dd2_43c4_9f78_69d25ae39034);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IDVBCLocator {
    type Target = IDigitalLocator;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IDVBCLocator, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ILocator, IDigitalLocator);
#[cfg(feature = "Win32_System_Com")]
impl IDVBCLocator {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IDVBCLocator_Vtbl {
    pub base__: IDigitalLocator_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IDVBSLocator, IDVBSLocator_Vtbl, 0x3d7c353c_0d04_45f1_a742_f97cc1188dc8);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IDVBSLocator {
    type Target = IDigitalLocator;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IDVBSLocator, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ILocator, IDigitalLocator);
#[cfg(feature = "Win32_System_Com")]
impl IDVBSLocator {
    pub unsafe fn SignalPolarisation(&self) -> windows_core::Result<super::Polarisation> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SignalPolarisation)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetSignalPolarisation(&self, polarisationval: super::Polarisation) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetSignalPolarisation)(windows_core::Interface::as_raw(self), polarisationval).ok()
    }
    pub unsafe fn WestPosition(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).WestPosition)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetWestPosition<P0>(&self, westlongitude: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetWestPosition)(windows_core::Interface::as_raw(self), westlongitude.param().abi()).ok()
    }
    pub unsafe fn OrbitalPosition(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).OrbitalPosition)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetOrbitalPosition(&self, longitude: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetOrbitalPosition)(windows_core::Interface::as_raw(self), longitude).ok()
    }
    pub unsafe fn Azimuth(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Azimuth)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetAzimuth(&self, azimuth: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetAzimuth)(windows_core::Interface::as_raw(self), azimuth).ok()
    }
    pub unsafe fn Elevation(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Elevation)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetElevation(&self, elevation: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetElevation)(windows_core::Interface::as_raw(self), elevation).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IDVBSLocator_Vtbl {
    pub base__: IDigitalLocator_Vtbl,
    pub SignalPolarisation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::Polarisation) -> windows_core::HRESULT,
    pub SetSignalPolarisation: unsafe extern "system" fn(*mut core::ffi::c_void, super::Polarisation) -> windows_core::HRESULT,
    pub WestPosition: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetWestPosition: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub OrbitalPosition: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetOrbitalPosition: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub Azimuth: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetAzimuth: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub Elevation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetElevation: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IDVBSLocator2, IDVBSLocator2_Vtbl, 0x6044634a_1733_4f99_b982_5fb12afce4f0);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IDVBSLocator2 {
    type Target = IDVBSLocator;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IDVBSLocator2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ILocator, IDigitalLocator, IDVBSLocator);
#[cfg(feature = "Win32_System_Com")]
impl IDVBSLocator2 {
    pub unsafe fn DiseqLNBSource(&self) -> windows_core::Result<super::LNB_Source> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DiseqLNBSource)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetDiseqLNBSource(&self, diseqlnbsourceval: super::LNB_Source) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetDiseqLNBSource)(windows_core::Interface::as_raw(self), diseqlnbsourceval).ok()
    }
    pub unsafe fn LocalOscillatorOverrideLow(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).LocalOscillatorOverrideLow)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetLocalOscillatorOverrideLow(&self, localoscillatoroverridelowval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetLocalOscillatorOverrideLow)(windows_core::Interface::as_raw(self), localoscillatoroverridelowval).ok()
    }
    pub unsafe fn LocalOscillatorOverrideHigh(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).LocalOscillatorOverrideHigh)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetLocalOscillatorOverrideHigh(&self, localoscillatoroverridehighval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetLocalOscillatorOverrideHigh)(windows_core::Interface::as_raw(self), localoscillatoroverridehighval).ok()
    }
    pub unsafe fn LocalLNBSwitchOverride(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).LocalLNBSwitchOverride)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetLocalLNBSwitchOverride(&self, locallnbswitchoverrideval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetLocalLNBSwitchOverride)(windows_core::Interface::as_raw(self), locallnbswitchoverrideval).ok()
    }
    pub unsafe fn LocalSpectralInversionOverride(&self) -> windows_core::Result<super::SpectralInversion> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).LocalSpectralInversionOverride)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetLocalSpectralInversionOverride(&self, localspectralinversionoverrideval: super::SpectralInversion) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetLocalSpectralInversionOverride)(windows_core::Interface::as_raw(self), localspectralinversionoverrideval).ok()
    }
    pub unsafe fn SignalRollOff(&self) -> windows_core::Result<super::RollOff> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SignalRollOff)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetSignalRollOff(&self, rolloffval: super::RollOff) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetSignalRollOff)(windows_core::Interface::as_raw(self), rolloffval).ok()
    }
    pub unsafe fn SignalPilot(&self) -> windows_core::Result<super::Pilot> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SignalPilot)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetSignalPilot(&self, pilotval: super::Pilot) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetSignalPilot)(windows_core::Interface::as_raw(self), pilotval).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IDVBSLocator2_Vtbl {
    pub base__: IDVBSLocator_Vtbl,
    pub DiseqLNBSource: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::LNB_Source) -> windows_core::HRESULT,
    pub SetDiseqLNBSource: unsafe extern "system" fn(*mut core::ffi::c_void, super::LNB_Source) -> windows_core::HRESULT,
    pub LocalOscillatorOverrideLow: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetLocalOscillatorOverrideLow: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub LocalOscillatorOverrideHigh: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetLocalOscillatorOverrideHigh: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub LocalLNBSwitchOverride: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetLocalLNBSwitchOverride: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub LocalSpectralInversionOverride: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::SpectralInversion) -> windows_core::HRESULT,
    pub SetLocalSpectralInversionOverride: unsafe extern "system" fn(*mut core::ffi::c_void, super::SpectralInversion) -> windows_core::HRESULT,
    pub SignalRollOff: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::RollOff) -> windows_core::HRESULT,
    pub SetSignalRollOff: unsafe extern "system" fn(*mut core::ffi::c_void, super::RollOff) -> windows_core::HRESULT,
    pub SignalPilot: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::Pilot) -> windows_core::HRESULT,
    pub SetSignalPilot: unsafe extern "system" fn(*mut core::ffi::c_void, super::Pilot) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IDVBSTuningSpace, IDVBSTuningSpace_Vtbl, 0xcdf7be60_d954_42fd_a972_78971958e470);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IDVBSTuningSpace {
    type Target = IDVBTuningSpace2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IDVBSTuningSpace, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuningSpace, IDVBTuningSpace, IDVBTuningSpace2);
#[cfg(feature = "Win32_System_Com")]
impl IDVBSTuningSpace {
    pub unsafe fn LowOscillator(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).LowOscillator)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetLowOscillator(&self, lowoscillator: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetLowOscillator)(windows_core::Interface::as_raw(self), lowoscillator).ok()
    }
    pub unsafe fn HighOscillator(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).HighOscillator)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetHighOscillator(&self, highoscillator: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetHighOscillator)(windows_core::Interface::as_raw(self), highoscillator).ok()
    }
    pub unsafe fn LNBSwitch(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).LNBSwitch)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetLNBSwitch(&self, lnbswitch: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetLNBSwitch)(windows_core::Interface::as_raw(self), lnbswitch).ok()
    }
    pub unsafe fn InputRange(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).InputRange)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetInputRange<P0>(&self, inputrange: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetInputRange)(windows_core::Interface::as_raw(self), inputrange.param().abi()).ok()
    }
    pub unsafe fn SpectralInversion(&self) -> windows_core::Result<super::SpectralInversion> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SpectralInversion)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetSpectralInversion(&self, spectralinversionval: super::SpectralInversion) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetSpectralInversion)(windows_core::Interface::as_raw(self), spectralinversionval).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IDVBSTuningSpace_Vtbl {
    pub base__: IDVBTuningSpace2_Vtbl,
    pub LowOscillator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetLowOscillator: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub HighOscillator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetHighOscillator: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub LNBSwitch: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetLNBSwitch: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub InputRange: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SetInputRange: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SpectralInversion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::SpectralInversion) -> windows_core::HRESULT,
    pub SetSpectralInversion: unsafe extern "system" fn(*mut core::ffi::c_void, super::SpectralInversion) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IDVBTLocator, IDVBTLocator_Vtbl, 0x8664da16_dda2_42ac_926a_c18f9127c302);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IDVBTLocator {
    type Target = IDigitalLocator;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IDVBTLocator, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ILocator, IDigitalLocator);
#[cfg(feature = "Win32_System_Com")]
impl IDVBTLocator {
    pub unsafe fn Bandwidth(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Bandwidth)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetBandwidth(&self, bandwidthval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetBandwidth)(windows_core::Interface::as_raw(self), bandwidthval).ok()
    }
    pub unsafe fn LPInnerFEC(&self) -> windows_core::Result<super::FECMethod> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).LPInnerFEC)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetLPInnerFEC(&self, fec: super::FECMethod) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetLPInnerFEC)(windows_core::Interface::as_raw(self), fec).ok()
    }
    pub unsafe fn LPInnerFECRate(&self) -> windows_core::Result<super::BinaryConvolutionCodeRate> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).LPInnerFECRate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetLPInnerFECRate(&self, fec: super::BinaryConvolutionCodeRate) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetLPInnerFECRate)(windows_core::Interface::as_raw(self), fec).ok()
    }
    pub unsafe fn HAlpha(&self) -> windows_core::Result<super::HierarchyAlpha> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).HAlpha)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetHAlpha(&self, alpha: super::HierarchyAlpha) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetHAlpha)(windows_core::Interface::as_raw(self), alpha).ok()
    }
    pub unsafe fn Guard(&self) -> windows_core::Result<super::GuardInterval> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Guard)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetGuard(&self, gi: super::GuardInterval) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetGuard)(windows_core::Interface::as_raw(self), gi).ok()
    }
    pub unsafe fn Mode(&self) -> windows_core::Result<super::TransmissionMode> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Mode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMode(&self, mode: super::TransmissionMode) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMode)(windows_core::Interface::as_raw(self), mode).ok()
    }
    pub unsafe fn OtherFrequencyInUse(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).OtherFrequencyInUse)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetOtherFrequencyInUse<P0>(&self, otherfrequencyinuseval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetOtherFrequencyInUse)(windows_core::Interface::as_raw(self), otherfrequencyinuseval.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IDVBTLocator_Vtbl {
    pub base__: IDigitalLocator_Vtbl,
    pub Bandwidth: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetBandwidth: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub LPInnerFEC: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::FECMethod) -> windows_core::HRESULT,
    pub SetLPInnerFEC: unsafe extern "system" fn(*mut core::ffi::c_void, super::FECMethod) -> windows_core::HRESULT,
    pub LPInnerFECRate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::BinaryConvolutionCodeRate) -> windows_core::HRESULT,
    pub SetLPInnerFECRate: unsafe extern "system" fn(*mut core::ffi::c_void, super::BinaryConvolutionCodeRate) -> windows_core::HRESULT,
    pub HAlpha: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::HierarchyAlpha) -> windows_core::HRESULT,
    pub SetHAlpha: unsafe extern "system" fn(*mut core::ffi::c_void, super::HierarchyAlpha) -> windows_core::HRESULT,
    pub Guard: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::GuardInterval) -> windows_core::HRESULT,
    pub SetGuard: unsafe extern "system" fn(*mut core::ffi::c_void, super::GuardInterval) -> windows_core::HRESULT,
    pub Mode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::TransmissionMode) -> windows_core::HRESULT,
    pub SetMode: unsafe extern "system" fn(*mut core::ffi::c_void, super::TransmissionMode) -> windows_core::HRESULT,
    pub OtherFrequencyInUse: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetOtherFrequencyInUse: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IDVBTLocator2, IDVBTLocator2_Vtbl, 0x448a2edf_ae95_4b43_a3cc_747843c453d4);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IDVBTLocator2 {
    type Target = IDVBTLocator;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IDVBTLocator2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ILocator, IDigitalLocator, IDVBTLocator);
#[cfg(feature = "Win32_System_Com")]
impl IDVBTLocator2 {
    pub unsafe fn PhysicalLayerPipeId(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).PhysicalLayerPipeId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetPhysicalLayerPipeId(&self, physicallayerpipeidval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetPhysicalLayerPipeId)(windows_core::Interface::as_raw(self), physicallayerpipeidval).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IDVBTLocator2_Vtbl {
    pub base__: IDVBTLocator_Vtbl,
    pub PhysicalLayerPipeId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetPhysicalLayerPipeId: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IDVBTuneRequest, IDVBTuneRequest_Vtbl, 0x0d6f567e_a636_42bb_83ba_ce4c1704afa2);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IDVBTuneRequest {
    type Target = ITuneRequest;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IDVBTuneRequest, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuneRequest);
#[cfg(feature = "Win32_System_Com")]
impl IDVBTuneRequest {
    pub unsafe fn ONID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ONID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetONID(&self, onid: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetONID)(windows_core::Interface::as_raw(self), onid).ok()
    }
    pub unsafe fn TSID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TSID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetTSID(&self, tsid: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetTSID)(windows_core::Interface::as_raw(self), tsid).ok()
    }
    pub unsafe fn SID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetSID(&self, sid: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetSID)(windows_core::Interface::as_raw(self), sid).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IDVBTuneRequest_Vtbl {
    pub base__: ITuneRequest_Vtbl,
    pub ONID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetONID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub TSID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetTSID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub SID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetSID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IDVBTuningSpace, IDVBTuningSpace_Vtbl, 0xada0b268_3b19_4e5b_acc4_49f852be13ba);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IDVBTuningSpace {
    type Target = ITuningSpace;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IDVBTuningSpace, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuningSpace);
#[cfg(feature = "Win32_System_Com")]
impl IDVBTuningSpace {
    pub unsafe fn SystemType(&self) -> windows_core::Result<super::DVBSystemType> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SystemType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetSystemType(&self, systype: super::DVBSystemType) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetSystemType)(windows_core::Interface::as_raw(self), systype).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IDVBTuningSpace_Vtbl {
    pub base__: ITuningSpace_Vtbl,
    pub SystemType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::DVBSystemType) -> windows_core::HRESULT,
    pub SetSystemType: unsafe extern "system" fn(*mut core::ffi::c_void, super::DVBSystemType) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IDVBTuningSpace2, IDVBTuningSpace2_Vtbl, 0x843188b4_ce62_43db_966b_8145a094e040);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IDVBTuningSpace2 {
    type Target = IDVBTuningSpace;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IDVBTuningSpace2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuningSpace, IDVBTuningSpace);
#[cfg(feature = "Win32_System_Com")]
impl IDVBTuningSpace2 {
    pub unsafe fn NetworkID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).NetworkID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetNetworkID(&self, networkid: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetNetworkID)(windows_core::Interface::as_raw(self), networkid).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IDVBTuningSpace2_Vtbl {
    pub base__: IDVBTuningSpace_Vtbl,
    pub NetworkID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetNetworkID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDVB_BAT, IDVB_BAT_Vtbl, 0xece9bb0c_43b6_4558_a0ec_1812c34cd6ca);
impl core::ops::Deref for IDVB_BAT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDVB_BAT, windows_core::IUnknown);
impl IDVB_BAT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetBouquetId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetBouquetId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfTableDescriptors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableDescriptorByIndex(&self, dwindex: u32, ppdescriptor: *const Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptorByIndex)(windows_core::Interface::as_raw(self), dwindex, core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptorByTag)(windows_core::Interface::as_raw(self), btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordTransportStreamId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordTransportStreamId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordOriginalNetworkId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordOriginalNetworkId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfDescriptors)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptorByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordDescriptorByTag)(windows_core::Interface::as_raw(self), dwrecordindex, btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn RegisterForNextTable<P0>(&self, hnexttableavailable: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForNextTable)(windows_core::Interface::as_raw(self), hnexttableavailable.param().abi()).ok()
    }
    pub unsafe fn GetNextTable(&self) -> windows_core::Result<IDVB_BAT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNextTable)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn RegisterForWhenCurrent<P0>(&self, hnexttableiscurrent: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForWhenCurrent)(windows_core::Interface::as_raw(self), hnexttableiscurrent.param().abi()).ok()
    }
    pub unsafe fn ConvertNextToCurrent(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ConvertNextToCurrent)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IDVB_BAT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetBouquetId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetCountOfTableDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTableDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTableDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordTransportStreamId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordOriginalNetworkId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordCountOfDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRecordDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub GetNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForWhenCurrent: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub ConvertNextToCurrent: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDVB_DIT, IDVB_DIT_Vtbl, 0x91bffdf9_9432_410f_86ef_1c228ed0ad70);
impl core::ops::Deref for IDVB_DIT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDVB_DIT, windows_core::IUnknown);
impl IDVB_DIT {
    pub unsafe fn Initialize<P0>(&self, psectionlist: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi()).ok()
    }
    pub unsafe fn GetTransitionFlag(&self) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTransitionFlag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDVB_DIT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTransitionFlag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDVB_EIT, IDVB_EIT_Vtbl, 0x442db029_02cb_4495_8b92_1c13375bce99);
impl core::ops::Deref for IDVB_EIT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDVB_EIT, windows_core::IUnknown);
impl IDVB_EIT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetServiceId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServiceId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTransportStreamId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTransportStreamId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetOriginalNetworkId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetOriginalNetworkId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSegmentLastSectionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSegmentLastSectionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLastTableId(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLastTableId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordEventId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordEventId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordStartTime(&self, dwrecordindex: u32) -> windows_core::Result<MPEG_DATE_AND_TIME> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordStartTime)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDuration(&self, dwrecordindex: u32) -> windows_core::Result<MPEG_TIME> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDuration)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordRunningStatus(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordRunningStatus)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordFreeCAMode(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordFreeCAMode)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfDescriptors)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptorByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordDescriptorByTag)(windows_core::Interface::as_raw(self), dwrecordindex, btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn RegisterForNextTable<P0>(&self, hnexttableavailable: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForNextTable)(windows_core::Interface::as_raw(self), hnexttableavailable.param().abi()).ok()
    }
    pub unsafe fn GetNextTable(&self) -> windows_core::Result<IDVB_EIT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNextTable)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn RegisterForWhenCurrent<P0>(&self, hnexttableiscurrent: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForWhenCurrent)(windows_core::Interface::as_raw(self), hnexttableiscurrent.param().abi()).ok()
    }
    pub unsafe fn ConvertNextToCurrent(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ConvertNextToCurrent)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetVersionHash(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionHash)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDVB_EIT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetServiceId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetTransportStreamId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetOriginalNetworkId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetSegmentLastSectionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLastTableId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordEventId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordStartTime: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT,
    pub GetRecordDuration: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut MPEG_TIME) -> windows_core::HRESULT,
    pub GetRecordRunningStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordFreeCAMode: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetRecordCountOfDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRecordDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub GetNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForWhenCurrent: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub ConvertNextToCurrent: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionHash: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDVB_EIT2, IDVB_EIT2_Vtbl, 0x61a389e0_9b9e_4ba0_aeea_5ddd159820ea);
impl core::ops::Deref for IDVB_EIT2 {
    type Target = IDVB_EIT;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDVB_EIT2, windows_core::IUnknown, IDVB_EIT);
impl IDVB_EIT2 {
    pub unsafe fn GetSegmentInfo(&self, pbtid: *mut u8, pbsegment: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetSegmentInfo)(windows_core::Interface::as_raw(self), pbtid, pbsegment).ok()
    }
    pub unsafe fn GetRecordSection(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordSection)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDVB_EIT2_Vtbl {
    pub base__: IDVB_EIT_Vtbl,
    pub GetSegmentInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordSection: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDVB_NIT, IDVB_NIT_Vtbl, 0xc64935f4_29e4_4e22_911a_63f7f55cb097);
impl core::ops::Deref for IDVB_NIT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDVB_NIT, windows_core::IUnknown);
impl IDVB_NIT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetNetworkId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNetworkId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfTableDescriptors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableDescriptorByIndex)(windows_core::Interface::as_raw(self), dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptorByTag)(windows_core::Interface::as_raw(self), btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordTransportStreamId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordTransportStreamId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordOriginalNetworkId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordOriginalNetworkId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfDescriptors)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptorByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordDescriptorByTag)(windows_core::Interface::as_raw(self), dwrecordindex, btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn RegisterForNextTable<P0>(&self, hnexttableavailable: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForNextTable)(windows_core::Interface::as_raw(self), hnexttableavailable.param().abi()).ok()
    }
    pub unsafe fn GetNextTable(&self) -> windows_core::Result<IDVB_NIT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNextTable)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn RegisterForWhenCurrent<P0>(&self, hnexttableiscurrent: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForWhenCurrent)(windows_core::Interface::as_raw(self), hnexttableiscurrent.param().abi()).ok()
    }
    pub unsafe fn ConvertNextToCurrent(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ConvertNextToCurrent)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetVersionHash(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionHash)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDVB_NIT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetNetworkId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetCountOfTableDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTableDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTableDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordTransportStreamId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordOriginalNetworkId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordCountOfDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRecordDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub GetNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForWhenCurrent: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub ConvertNextToCurrent: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionHash: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDVB_RST, IDVB_RST_Vtbl, 0xf47dcd04_1e23_4fb7_9f96_b40eead10b2b);
impl core::ops::Deref for IDVB_RST {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDVB_RST, windows_core::IUnknown);
impl IDVB_RST {
    pub unsafe fn Initialize<P0>(&self, psectionlist: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi()).ok()
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordTransportStreamId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordTransportStreamId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordOriginalNetworkId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordOriginalNetworkId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordServiceId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordServiceId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordEventId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordEventId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordRunningStatus(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordRunningStatus)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDVB_RST_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordTransportStreamId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordOriginalNetworkId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordServiceId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordEventId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordRunningStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDVB_SDT, IDVB_SDT_Vtbl, 0x02cad8d3_fe43_48e2_90bd_450ed9a8a5fd);
impl core::ops::Deref for IDVB_SDT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDVB_SDT, windows_core::IUnknown);
impl IDVB_SDT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTransportStreamId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTransportStreamId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetOriginalNetworkId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetOriginalNetworkId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordServiceId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordServiceId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordEITScheduleFlag(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordEITScheduleFlag)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordEITPresentFollowingFlag(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordEITPresentFollowingFlag)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordRunningStatus(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordRunningStatus)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordFreeCAMode(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordFreeCAMode)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfDescriptors)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptorByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordDescriptorByTag)(windows_core::Interface::as_raw(self), dwrecordindex, btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn RegisterForNextTable<P0>(&self, hnexttableavailable: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForNextTable)(windows_core::Interface::as_raw(self), hnexttableavailable.param().abi()).ok()
    }
    pub unsafe fn GetNextTable(&self) -> windows_core::Result<IDVB_SDT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNextTable)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn RegisterForWhenCurrent<P0>(&self, hnexttableiscurrent: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForWhenCurrent)(windows_core::Interface::as_raw(self), hnexttableiscurrent.param().abi()).ok()
    }
    pub unsafe fn ConvertNextToCurrent(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ConvertNextToCurrent)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetVersionHash(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionHash)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDVB_SDT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTransportStreamId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetOriginalNetworkId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordServiceId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordEITScheduleFlag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetRecordEITPresentFollowingFlag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetRecordRunningStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordFreeCAMode: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetRecordCountOfDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRecordDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub GetNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForWhenCurrent: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub ConvertNextToCurrent: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionHash: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDVB_SIT, IDVB_SIT_Vtbl, 0x68cdce53_8bea_45c2_9d9d_acf575a089b5);
impl core::ops::Deref for IDVB_SIT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDVB_SIT, windows_core::IUnknown);
impl IDVB_SIT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfTableDescriptors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableDescriptorByIndex)(windows_core::Interface::as_raw(self), dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptorByTag)(windows_core::Interface::as_raw(self), btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordServiceId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordServiceId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordRunningStatus(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordRunningStatus)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfDescriptors)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptorByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordDescriptorByTag)(windows_core::Interface::as_raw(self), dwrecordindex, btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn RegisterForNextTable<P0>(&self, hnexttableavailable: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForNextTable)(windows_core::Interface::as_raw(self), hnexttableavailable.param().abi()).ok()
    }
    pub unsafe fn GetNextTable(&self, dwtimeout: u32) -> windows_core::Result<IDVB_SIT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNextTable)(windows_core::Interface::as_raw(self), dwtimeout, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn RegisterForWhenCurrent<P0>(&self, hnexttableiscurrent: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForWhenCurrent)(windows_core::Interface::as_raw(self), hnexttableiscurrent.param().abi()).ok()
    }
    pub unsafe fn ConvertNextToCurrent(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ConvertNextToCurrent)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IDVB_SIT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfTableDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTableDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTableDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordServiceId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordRunningStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordCountOfDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRecordDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub GetNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForWhenCurrent: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub ConvertNextToCurrent: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDVB_ST, IDVB_ST_Vtbl, 0x4d5b9f23_2a02_45de_bcda_5d5dbfbfbe62);
impl core::ops::Deref for IDVB_ST {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDVB_ST, windows_core::IUnknown);
impl IDVB_ST {
    pub unsafe fn Initialize<P0>(&self, psectionlist: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi()).ok()
    }
    pub unsafe fn GetDataLength(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDataLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetData(&self) -> windows_core::Result<*mut u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetData)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDVB_ST_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetDataLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDVB_TDT, IDVB_TDT_Vtbl, 0x0780dc7d_d55c_4aef_97e6_6b75906e2796);
impl core::ops::Deref for IDVB_TDT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDVB_TDT, windows_core::IUnknown);
impl IDVB_TDT {
    pub unsafe fn Initialize<P0>(&self, psectionlist: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi()).ok()
    }
    pub unsafe fn GetUTCTime(&self) -> windows_core::Result<MPEG_DATE_AND_TIME> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetUTCTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDVB_TDT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetUTCTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDVB_TOT, IDVB_TOT_Vtbl, 0x83295d6a_faba_4ee1_9b15_8067696910ae);
impl core::ops::Deref for IDVB_TOT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDVB_TOT, windows_core::IUnknown);
impl IDVB_TOT {
    pub unsafe fn Initialize<P0>(&self, psectionlist: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi()).ok()
    }
    pub unsafe fn GetUTCTime(&self) -> windows_core::Result<MPEG_DATE_AND_TIME> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetUTCTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfTableDescriptors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableDescriptorByIndex)(windows_core::Interface::as_raw(self), dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptorByTag)(windows_core::Interface::as_raw(self), btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
}
#[repr(C)]
pub struct IDVB_TOT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetUTCTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT,
    pub GetCountOfTableDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTableDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTableDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IDigitalCableLocator, IDigitalCableLocator_Vtbl, 0x48f66a11_171a_419a_9525_beeecd51584c);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IDigitalCableLocator {
    type Target = IATSCLocator2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IDigitalCableLocator, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ILocator, IDigitalLocator, IATSCLocator, IATSCLocator2);
#[cfg(feature = "Win32_System_Com")]
impl IDigitalCableLocator {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IDigitalCableLocator_Vtbl {
    pub base__: IATSCLocator2_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IDigitalCableTuneRequest, IDigitalCableTuneRequest_Vtbl, 0xbad7753b_6b37_4810_ae57_3ce0c4a9e6cb);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IDigitalCableTuneRequest {
    type Target = IATSCChannelTuneRequest;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IDigitalCableTuneRequest, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuneRequest, IChannelTuneRequest, IATSCChannelTuneRequest);
#[cfg(feature = "Win32_System_Com")]
impl IDigitalCableTuneRequest {
    pub unsafe fn MajorChannel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MajorChannel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMajorChannel(&self, majorchannel: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMajorChannel)(windows_core::Interface::as_raw(self), majorchannel).ok()
    }
    pub unsafe fn SourceID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SourceID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetSourceID(&self, sourceid: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetSourceID)(windows_core::Interface::as_raw(self), sourceid).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IDigitalCableTuneRequest_Vtbl {
    pub base__: IATSCChannelTuneRequest_Vtbl,
    pub MajorChannel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMajorChannel: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub SourceID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetSourceID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IDigitalCableTuningSpace, IDigitalCableTuningSpace_Vtbl, 0x013f9f9c_b449_4ec7_a6d2_9d4f2fc70ae5);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IDigitalCableTuningSpace {
    type Target = IATSCTuningSpace;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IDigitalCableTuningSpace, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuningSpace, IAnalogTVTuningSpace, IATSCTuningSpace);
#[cfg(feature = "Win32_System_Com")]
impl IDigitalCableTuningSpace {
    pub unsafe fn MinMajorChannel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MinMajorChannel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMinMajorChannel(&self, newminmajorchannelval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMinMajorChannel)(windows_core::Interface::as_raw(self), newminmajorchannelval).ok()
    }
    pub unsafe fn MaxMajorChannel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MaxMajorChannel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMaxMajorChannel(&self, newmaxmajorchannelval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMaxMajorChannel)(windows_core::Interface::as_raw(self), newmaxmajorchannelval).ok()
    }
    pub unsafe fn MinSourceID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MinSourceID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMinSourceID(&self, newminsourceidval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMinSourceID)(windows_core::Interface::as_raw(self), newminsourceidval).ok()
    }
    pub unsafe fn MaxSourceID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MaxSourceID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMaxSourceID(&self, newmaxsourceidval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMaxSourceID)(windows_core::Interface::as_raw(self), newmaxsourceidval).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IDigitalCableTuningSpace_Vtbl {
    pub base__: IATSCTuningSpace_Vtbl,
    pub MinMajorChannel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMinMajorChannel: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub MaxMajorChannel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMaxMajorChannel: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub MinSourceID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMinSourceID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub MaxSourceID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMaxSourceID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IDigitalLocator, IDigitalLocator_Vtbl, 0x19b595d8_839a_47f0_96df_4f194f3c768c);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IDigitalLocator {
    type Target = ILocator;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IDigitalLocator, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ILocator);
#[cfg(feature = "Win32_System_Com")]
impl IDigitalLocator {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IDigitalLocator_Vtbl {
    pub base__: ILocator_Vtbl,
}
windows_core::imp::define_interface!(IDvbCableDeliverySystemDescriptor, IDvbCableDeliverySystemDescriptor_Vtbl, 0xdfb98e36_9e1a_4862_9946_993a4e59017b);
impl core::ops::Deref for IDvbCableDeliverySystemDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbCableDeliverySystemDescriptor, windows_core::IUnknown);
impl IDvbCableDeliverySystemDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetFrequency(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetFrequency)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetFECOuter(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetFECOuter)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetModulation(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetModulation)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSymbolRate(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSymbolRate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetFECInner(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetFECInner)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDvbCableDeliverySystemDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetFECOuter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetModulation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetSymbolRate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetFECInner: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbComponentDescriptor, IDvbComponentDescriptor_Vtbl, 0x91e405cf_80e7_457f_9096_1b9d1ce32141);
impl core::ops::Deref for IDvbComponentDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbComponentDescriptor, windows_core::IUnknown);
impl IDvbComponentDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetStreamContent(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetStreamContent)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetComponentType(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetComponentType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetComponentTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetComponentTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLanguageCode(&self, pszcode: &mut [u8; 4]) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetLanguageCode)(windows_core::Interface::as_raw(self), core::mem::transmute(pszcode.as_ptr())).ok()
    }
    pub unsafe fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTextW)(windows_core::Interface::as_raw(self), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IDvbComponentDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetStreamContent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetComponentType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetComponentTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLanguageCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTextW: unsafe extern "system" fn(*mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbContentDescriptor, IDvbContentDescriptor_Vtbl, 0x2e883881_a467_412a_9d63_6f2b6da05bf0);
impl core::ops::Deref for IDvbContentDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbContentDescriptor, windows_core::IUnknown);
impl IDvbContentDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordContentNibbles(&self, brecordindex: u8, pbvallevel1: *mut u8, pbvallevel2: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordContentNibbles)(windows_core::Interface::as_raw(self), brecordindex, pbvallevel1, pbvallevel2).ok()
    }
    pub unsafe fn GetRecordUserNibbles(&self, brecordindex: u8, pbval1: *mut u8, pbval2: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordUserNibbles)(windows_core::Interface::as_raw(self), brecordindex, pbval1, pbval2).ok()
    }
}
#[repr(C)]
pub struct IDvbContentDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordContentNibbles: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordUserNibbles: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbContentIdentifierDescriptor, IDvbContentIdentifierDescriptor_Vtbl, 0x05e0c1ea_f661_4053_9fbf_d93b28359838);
impl core::ops::Deref for IDvbContentIdentifierDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbContentIdentifierDescriptor, windows_core::IUnknown);
impl IDvbContentIdentifierDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCrid(&self, brecordindex: u8, pbtype: *mut u8, pblocation: *mut u8, pblength: *mut u8, ppbbytes: *mut *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordCrid)(windows_core::Interface::as_raw(self), brecordindex, pbtype, pblocation, pblength, ppbbytes).ok()
    }
}
#[repr(C)]
pub struct IDvbContentIdentifierDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordCrid: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8, *mut u8, *mut u8, *mut *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbDataBroadcastDescriptor, IDvbDataBroadcastDescriptor_Vtbl, 0xd1ebc1d6_8b60_4c20_9caf_e59382e7c400);
impl core::ops::Deref for IDvbDataBroadcastDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbDataBroadcastDescriptor, windows_core::IUnknown);
impl IDvbDataBroadcastDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDataBroadcastID(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDataBroadcastID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetComponentTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetComponentTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSelectorLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSelectorLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSelectorBytes(&self, pblen: *mut u8, pbval: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetSelectorBytes)(windows_core::Interface::as_raw(self), pblen, pbval).ok()
    }
    pub unsafe fn GetLangID(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLangID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTextLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTextLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetText(&self, pblen: *mut u8, pbval: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetText)(windows_core::Interface::as_raw(self), pblen, pbval).ok()
    }
}
#[repr(C)]
pub struct IDvbDataBroadcastDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetDataBroadcastID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetComponentTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetSelectorLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetSelectorBytes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8, *mut u8) -> windows_core::HRESULT,
    pub GetLangID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTextLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetText: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbDataBroadcastIDDescriptor, IDvbDataBroadcastIDDescriptor_Vtbl, 0x5f26f518_65c8_4048_91f2_9290f59f7b90);
impl core::ops::Deref for IDvbDataBroadcastIDDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbDataBroadcastIDDescriptor, windows_core::IUnknown);
impl IDvbDataBroadcastIDDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDataBroadcastID(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDataBroadcastID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetIDSelectorBytes(&self, pblen: *mut u8, pbval: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetIDSelectorBytes)(windows_core::Interface::as_raw(self), pblen, pbval).ok()
    }
}
#[repr(C)]
pub struct IDvbDataBroadcastIDDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetDataBroadcastID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetIDSelectorBytes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbDefaultAuthorityDescriptor, IDvbDefaultAuthorityDescriptor_Vtbl, 0x05ec24d1_3a31_44e7_b408_67c60a352276);
impl core::ops::Deref for IDvbDefaultAuthorityDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbDefaultAuthorityDescriptor, windows_core::IUnknown);
impl IDvbDefaultAuthorityDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDefaultAuthority(&self, pblength: *mut u8, ppbbytes: *mut *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetDefaultAuthority)(windows_core::Interface::as_raw(self), pblength, ppbbytes).ok()
    }
}
#[repr(C)]
pub struct IDvbDefaultAuthorityDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetDefaultAuthority: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8, *mut *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbExtendedEventDescriptor, IDvbExtendedEventDescriptor_Vtbl, 0xc9b22eca_85f4_499f_b1db_efa93a91ee57);
impl core::ops::Deref for IDvbExtendedEventDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbExtendedEventDescriptor, windows_core::IUnknown);
impl IDvbExtendedEventDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDescriptorNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDescriptorNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLastDescriptorNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLastDescriptorNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLanguageCode(&self, pszcode: &mut [u8; 4]) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetLanguageCode)(windows_core::Interface::as_raw(self), core::mem::transmute(pszcode.as_ptr())).ok()
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordItemW(&self, brecordindex: u8, convmode: DVB_STRCONV_MODE, pbstrdesc: *mut windows_core::BSTR, pbstritem: *mut windows_core::BSTR) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordItemW)(windows_core::Interface::as_raw(self), brecordindex, convmode, core::mem::transmute(pbstrdesc), core::mem::transmute(pbstritem)).ok()
    }
    pub unsafe fn GetConcatenatedItemW<P0>(&self, pfollowingdescriptor: P0, convmode: DVB_STRCONV_MODE, pbstrdesc: *mut windows_core::BSTR, pbstritem: *mut windows_core::BSTR) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDvbExtendedEventDescriptor>,
    {
        (windows_core::Interface::vtable(self).GetConcatenatedItemW)(windows_core::Interface::as_raw(self), pfollowingdescriptor.param().abi(), convmode, core::mem::transmute(pbstrdesc), core::mem::transmute(pbstritem)).ok()
    }
    pub unsafe fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTextW)(windows_core::Interface::as_raw(self), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetConcatenatedTextW<P0>(&self, followingdescriptor: P0, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>
    where
        P0: windows_core::Param<IDvbExtendedEventDescriptor>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetConcatenatedTextW)(windows_core::Interface::as_raw(self), followingdescriptor.param().abi(), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordItemRawBytes(&self, brecordindex: u8, ppbrawitem: *mut *mut u8, pbitemlength: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordItemRawBytes)(windows_core::Interface::as_raw(self), brecordindex, ppbrawitem, pbitemlength).ok()
    }
}
#[repr(C)]
pub struct IDvbExtendedEventDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetDescriptorNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLastDescriptorNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLanguageCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordItemW: unsafe extern "system" fn(*mut core::ffi::c_void, u8, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub GetConcatenatedItemW: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub GetTextW: unsafe extern "system" fn(*mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub GetConcatenatedTextW: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub GetRecordItemRawBytes: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut *mut u8, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbFrequencyListDescriptor, IDvbFrequencyListDescriptor_Vtbl, 0x1cadb613_e1dd_4512_afa8_bb7a007ef8b1);
impl core::ops::Deref for IDvbFrequencyListDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbFrequencyListDescriptor, windows_core::IUnknown);
impl IDvbFrequencyListDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCodingType(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCodingType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCentreFrequency(&self, brecordindex: u8) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCentreFrequency)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDvbFrequencyListDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCodingType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordCentreFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbHDSimulcastLogicalChannelDescriptor, IDvbHDSimulcastLogicalChannelDescriptor_Vtbl, 0x1ea8b738_a307_4680_9e26_d0a908c824f4);
impl core::ops::Deref for IDvbHDSimulcastLogicalChannelDescriptor {
    type Target = IDvbLogicalChannelDescriptor2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbHDSimulcastLogicalChannelDescriptor, windows_core::IUnknown, IDvbLogicalChannelDescriptor, IDvbLogicalChannelDescriptor2);
impl IDvbHDSimulcastLogicalChannelDescriptor {}
#[repr(C)]
pub struct IDvbHDSimulcastLogicalChannelDescriptor_Vtbl {
    pub base__: IDvbLogicalChannelDescriptor2_Vtbl,
}
windows_core::imp::define_interface!(IDvbLinkageDescriptor, IDvbLinkageDescriptor_Vtbl, 0x1cdf8b31_994a_46fc_acfd_6a6be8934dd5);
impl core::ops::Deref for IDvbLinkageDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbLinkageDescriptor, windows_core::IUnknown);
impl IDvbLinkageDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTSId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTSId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetONId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetONId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetServiceId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServiceId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLinkageType(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLinkageType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetPrivateDataLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetPrivateDataLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetPrivateData(&self, pblen: *mut u8, pbdata: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetPrivateData)(windows_core::Interface::as_raw(self), pblen, pbdata).ok()
    }
}
#[repr(C)]
pub struct IDvbLinkageDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTSId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetONId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetServiceId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetLinkageType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetPrivateDataLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetPrivateData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbLogicalChannel2Descriptor, IDvbLogicalChannel2Descriptor_Vtbl, 0xf69c3747_8a30_4980_998c_01fe7f0ba35a);
impl core::ops::Deref for IDvbLogicalChannel2Descriptor {
    type Target = IDvbLogicalChannelDescriptor2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbLogicalChannel2Descriptor, windows_core::IUnknown, IDvbLogicalChannelDescriptor, IDvbLogicalChannelDescriptor2);
impl IDvbLogicalChannel2Descriptor {
    pub unsafe fn GetCountOfLists(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfLists)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetListId(&self, blistindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetListId)(windows_core::Interface::as_raw(self), blistindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetListNameW(&self, blistindex: u8, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetListNameW)(windows_core::Interface::as_raw(self), blistindex, convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetListCountryCode(&self, blistindex: u8, pszcode: &mut [u8; 4]) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetListCountryCode)(windows_core::Interface::as_raw(self), blistindex, core::mem::transmute(pszcode.as_ptr())).ok()
    }
    pub unsafe fn GetListCountOfRecords(&self, bchannellistindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetListCountOfRecords)(windows_core::Interface::as_raw(self), bchannellistindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetListRecordServiceId(&self, blistindex: u8, brecordindex: u8) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetListRecordServiceId)(windows_core::Interface::as_raw(self), blistindex, brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetListRecordLogicalChannelNumber(&self, blistindex: u8, brecordindex: u8) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetListRecordLogicalChannelNumber)(windows_core::Interface::as_raw(self), blistindex, brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetListRecordLogicalChannelAndVisibility(&self, blistindex: u8, brecordindex: u8) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetListRecordLogicalChannelAndVisibility)(windows_core::Interface::as_raw(self), blistindex, brecordindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDvbLogicalChannel2Descriptor_Vtbl {
    pub base__: IDvbLogicalChannelDescriptor2_Vtbl,
    pub GetCountOfLists: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetListId: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetListNameW: unsafe extern "system" fn(*mut core::ffi::c_void, u8, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub GetListCountryCode: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetListCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetListRecordServiceId: unsafe extern "system" fn(*mut core::ffi::c_void, u8, u8, *mut u16) -> windows_core::HRESULT,
    pub GetListRecordLogicalChannelNumber: unsafe extern "system" fn(*mut core::ffi::c_void, u8, u8, *mut u16) -> windows_core::HRESULT,
    pub GetListRecordLogicalChannelAndVisibility: unsafe extern "system" fn(*mut core::ffi::c_void, u8, u8, *mut u16) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbLogicalChannelDescriptor, IDvbLogicalChannelDescriptor_Vtbl, 0xcf1edaff_3ffd_4cf7_8201_35756acbf85f);
impl core::ops::Deref for IDvbLogicalChannelDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbLogicalChannelDescriptor, windows_core::IUnknown);
impl IDvbLogicalChannelDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordServiceId(&self, brecordindex: u8) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordServiceId)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordLogicalChannelNumber(&self, brecordindex: u8) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordLogicalChannelNumber)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDvbLogicalChannelDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordServiceId: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u16) -> windows_core::HRESULT,
    pub GetRecordLogicalChannelNumber: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u16) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbLogicalChannelDescriptor2, IDvbLogicalChannelDescriptor2_Vtbl, 0x43aca974_4be8_4b98_bc17_9eafd788b1d7);
impl core::ops::Deref for IDvbLogicalChannelDescriptor2 {
    type Target = IDvbLogicalChannelDescriptor;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbLogicalChannelDescriptor2, windows_core::IUnknown, IDvbLogicalChannelDescriptor);
impl IDvbLogicalChannelDescriptor2 {
    pub unsafe fn GetRecordLogicalChannelAndVisibility(&self, brecordindex: u8) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordLogicalChannelAndVisibility)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDvbLogicalChannelDescriptor2_Vtbl {
    pub base__: IDvbLogicalChannelDescriptor_Vtbl,
    pub GetRecordLogicalChannelAndVisibility: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u16) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbMultilingualServiceNameDescriptor, IDvbMultilingualServiceNameDescriptor_Vtbl, 0x2d80433b_b32c_47ef_987f_e78ebb773e34);
impl core::ops::Deref for IDvbMultilingualServiceNameDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbMultilingualServiceNameDescriptor, windows_core::IUnknown);
impl IDvbMultilingualServiceNameDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordLangId(&self, brecordindex: u8) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordLangId)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordServiceProviderNameW(&self, brecordindex: u8, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordServiceProviderNameW)(windows_core::Interface::as_raw(self), brecordindex, convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordServiceNameW(&self, brecordindex: u8, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordServiceNameW)(windows_core::Interface::as_raw(self), brecordindex, convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IDvbMultilingualServiceNameDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordLangId: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32) -> windows_core::HRESULT,
    pub GetRecordServiceProviderNameW: unsafe extern "system" fn(*mut core::ffi::c_void, u8, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub GetRecordServiceNameW: unsafe extern "system" fn(*mut core::ffi::c_void, u8, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbNetworkNameDescriptor, IDvbNetworkNameDescriptor_Vtbl, 0x5b2a80cf_35b9_446c_b3e4_048b761dbc51);
impl core::ops::Deref for IDvbNetworkNameDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbNetworkNameDescriptor, windows_core::IUnknown);
impl IDvbNetworkNameDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetNetworkName(&self) -> windows_core::Result<*mut u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNetworkName)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetNetworkNameW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNetworkNameW)(windows_core::Interface::as_raw(self), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IDvbNetworkNameDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetNetworkName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut u8) -> windows_core::HRESULT,
    pub GetNetworkNameW: unsafe extern "system" fn(*mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbParentalRatingDescriptor, IDvbParentalRatingDescriptor_Vtbl, 0x3ad9dde1_fb1b_4186_937f_22e6b5a72a10);
impl core::ops::Deref for IDvbParentalRatingDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbParentalRatingDescriptor, windows_core::IUnknown);
impl IDvbParentalRatingDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordRating(&self, brecordindex: u8, pszcountrycode: &mut [u8; 4], pbval: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordRating)(windows_core::Interface::as_raw(self), brecordindex, core::mem::transmute(pszcountrycode.as_ptr()), pbval).ok()
    }
}
#[repr(C)]
pub struct IDvbParentalRatingDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordRating: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbPrivateDataSpecifierDescriptor, IDvbPrivateDataSpecifierDescriptor_Vtbl, 0x5660a019_e75a_4b82_9b4c_ed2256d165a2);
impl core::ops::Deref for IDvbPrivateDataSpecifierDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbPrivateDataSpecifierDescriptor, windows_core::IUnknown);
impl IDvbPrivateDataSpecifierDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetPrivateDataSpecifier(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetPrivateDataSpecifier)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDvbPrivateDataSpecifierDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetPrivateDataSpecifier: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbSatelliteDeliverySystemDescriptor, IDvbSatelliteDeliverySystemDescriptor_Vtbl, 0x02f2225a_805b_4ec5_a9a6_f9b5913cd470);
impl core::ops::Deref for IDvbSatelliteDeliverySystemDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbSatelliteDeliverySystemDescriptor, windows_core::IUnknown);
impl IDvbSatelliteDeliverySystemDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetFrequency(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetFrequency)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetOrbitalPosition(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetOrbitalPosition)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetWestEastFlag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetWestEastFlag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetPolarization(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetPolarization)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetModulation(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetModulation)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSymbolRate(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSymbolRate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetFECInner(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetFECInner)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDvbSatelliteDeliverySystemDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetOrbitalPosition: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetWestEastFlag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetPolarization: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetModulation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetSymbolRate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetFECInner: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbServiceAttributeDescriptor, IDvbServiceAttributeDescriptor_Vtbl, 0x0f37bd92_d6a1_4854_b950_3a969d27f30e);
impl core::ops::Deref for IDvbServiceAttributeDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbServiceAttributeDescriptor, windows_core::IUnknown);
impl IDvbServiceAttributeDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordServiceId(&self, brecordindex: u8) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordServiceId)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordNumericSelectionFlag(&self, brecordindex: u8) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordNumericSelectionFlag)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordVisibleServiceFlag(&self, brecordindex: u8) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordVisibleServiceFlag)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDvbServiceAttributeDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordServiceId: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u16) -> windows_core::HRESULT,
    pub GetRecordNumericSelectionFlag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetRecordVisibleServiceFlag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbServiceDescriptor, IDvbServiceDescriptor_Vtbl, 0xf9c7fbcf_e2d6_464d_b32d_2ef526e49290);
impl core::ops::Deref for IDvbServiceDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbServiceDescriptor, windows_core::IUnknown);
impl IDvbServiceDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetServiceType(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServiceType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetServiceProviderName(&self) -> windows_core::Result<*mut u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServiceProviderName)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetServiceProviderNameW(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServiceProviderNameW)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetServiceName(&self) -> windows_core::Result<*mut u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServiceName)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetProcessedServiceName(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetProcessedServiceName)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetServiceNameEmphasized(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServiceNameEmphasized)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IDvbServiceDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetServiceType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetServiceProviderName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut u8) -> windows_core::HRESULT,
    pub GetServiceProviderNameW: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub GetServiceName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut u8) -> windows_core::HRESULT,
    pub GetProcessedServiceName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub GetServiceNameEmphasized: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbServiceDescriptor2, IDvbServiceDescriptor2_Vtbl, 0xd6c76506_85ab_487c_9b2b_36416511e4a2);
impl core::ops::Deref for IDvbServiceDescriptor2 {
    type Target = IDvbServiceDescriptor;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbServiceDescriptor2, windows_core::IUnknown, IDvbServiceDescriptor);
impl IDvbServiceDescriptor2 {
    pub unsafe fn GetServiceProviderNameW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServiceProviderNameW)(windows_core::Interface::as_raw(self), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetServiceNameW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServiceNameW)(windows_core::Interface::as_raw(self), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IDvbServiceDescriptor2_Vtbl {
    pub base__: IDvbServiceDescriptor_Vtbl,
    pub GetServiceProviderNameW: unsafe extern "system" fn(*mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub GetServiceNameW: unsafe extern "system" fn(*mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbServiceListDescriptor, IDvbServiceListDescriptor_Vtbl, 0x05db0d8f_6008_491a_acd3_7090952707d0);
impl core::ops::Deref for IDvbServiceListDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbServiceListDescriptor, windows_core::IUnknown);
impl IDvbServiceListDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordServiceId(&self, brecordindex: u8) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordServiceId)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordServiceType(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordServiceType)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDvbServiceListDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordServiceId: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u16) -> windows_core::HRESULT,
    pub GetRecordServiceType: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbShortEventDescriptor, IDvbShortEventDescriptor_Vtbl, 0xb170be92_5b75_458e_9c6e_b0008231491a);
impl core::ops::Deref for IDvbShortEventDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbShortEventDescriptor, windows_core::IUnknown);
impl IDvbShortEventDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLanguageCode(&self, pszcode: &mut [u8; 4]) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetLanguageCode)(windows_core::Interface::as_raw(self), core::mem::transmute(pszcode.as_ptr())).ok()
    }
    pub unsafe fn GetEventNameW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEventNameW)(windows_core::Interface::as_raw(self), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTextW)(windows_core::Interface::as_raw(self), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IDvbShortEventDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLanguageCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetEventNameW: unsafe extern "system" fn(*mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub GetTextW: unsafe extern "system" fn(*mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbSiParser, IDvbSiParser_Vtbl, 0xb758a7bd_14dc_449d_b828_35909acb3b1e);
impl core::ops::Deref for IDvbSiParser {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbSiParser, windows_core::IUnknown);
impl IDvbSiParser {
    pub unsafe fn Initialize<P0>(&self, punkmpeg2data: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), punkmpeg2data.param().abi()).ok()
    }
    pub unsafe fn GetPAT(&self) -> windows_core::Result<IPAT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetPAT)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetCAT(&self, dwtimeout: u32) -> windows_core::Result<ICAT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCAT)(windows_core::Interface::as_raw(self), dwtimeout, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetPMT(&self, pid: u16, pwprogramnumber: Option<*const u16>) -> windows_core::Result<IPMT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetPMT)(windows_core::Interface::as_raw(self), pid, core::mem::transmute(pwprogramnumber.unwrap_or(std::ptr::null())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTSDT(&self) -> windows_core::Result<ITSDT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTSDT)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetNIT(&self, tableid: u8, pwnetworkid: Option<*const u16>) -> windows_core::Result<IDVB_NIT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNIT)(windows_core::Interface::as_raw(self), tableid, core::mem::transmute(pwnetworkid.unwrap_or(std::ptr::null())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetSDT(&self, tableid: u8, pwtransportstreamid: Option<*const u16>) -> windows_core::Result<IDVB_SDT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSDT)(windows_core::Interface::as_raw(self), tableid, core::mem::transmute(pwtransportstreamid.unwrap_or(std::ptr::null())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetEIT(&self, tableid: u8, pwserviceid: Option<*const u16>) -> windows_core::Result<IDVB_EIT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEIT)(windows_core::Interface::as_raw(self), tableid, core::mem::transmute(pwserviceid.unwrap_or(std::ptr::null())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetBAT(&self, pwbouquetid: Option<*const u16>) -> windows_core::Result<IDVB_BAT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetBAT)(windows_core::Interface::as_raw(self), core::mem::transmute(pwbouquetid.unwrap_or(std::ptr::null())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRST(&self, dwtimeout: u32) -> windows_core::Result<IDVB_RST> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRST)(windows_core::Interface::as_raw(self), dwtimeout, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetST(&self, pid: u16, dwtimeout: u32) -> windows_core::Result<IDVB_ST> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetST)(windows_core::Interface::as_raw(self), pid, dwtimeout, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTDT(&self) -> windows_core::Result<IDVB_TDT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTDT)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTOT(&self) -> windows_core::Result<IDVB_TOT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTOT)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetDIT(&self, dwtimeout: u32) -> windows_core::Result<IDVB_DIT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDIT)(windows_core::Interface::as_raw(self), dwtimeout, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetSIT(&self, dwtimeout: u32) -> windows_core::Result<IDVB_SIT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSIT)(windows_core::Interface::as_raw(self), dwtimeout, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IDvbSiParser_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetPAT: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCAT: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetPMT: unsafe extern "system" fn(*mut core::ffi::c_void, u16, *const u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTSDT: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetNIT: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *const u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetSDT: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *const u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetEIT: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *const u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBAT: unsafe extern "system" fn(*mut core::ffi::c_void, *const u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRST: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetST: unsafe extern "system" fn(*mut core::ffi::c_void, u16, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTDT: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTOT: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetDIT: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetSIT: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbSiParser2, IDvbSiParser2_Vtbl, 0x0ac5525f_f816_42f4_93ba_4c0f32f46e54);
impl core::ops::Deref for IDvbSiParser2 {
    type Target = IDvbSiParser;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbSiParser2, windows_core::IUnknown, IDvbSiParser);
impl IDvbSiParser2 {
    pub unsafe fn GetEIT2(&self, tableid: u8, pwserviceid: Option<*const u16>, pbsegment: Option<*const u8>) -> windows_core::Result<IDVB_EIT2> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEIT2)(windows_core::Interface::as_raw(self), tableid, core::mem::transmute(pwserviceid.unwrap_or(std::ptr::null())), core::mem::transmute(pbsegment.unwrap_or(std::ptr::null())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IDvbSiParser2_Vtbl {
    pub base__: IDvbSiParser_Vtbl,
    pub GetEIT2: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *const u16, *const u8, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbSubtitlingDescriptor, IDvbSubtitlingDescriptor_Vtbl, 0x9b25fe1d_fa23_4e50_9784_6df8b26f8a49);
impl core::ops::Deref for IDvbSubtitlingDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbSubtitlingDescriptor, windows_core::IUnknown);
impl IDvbSubtitlingDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordLangId(&self, brecordindex: u8) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordLangId)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordSubtitlingType(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordSubtitlingType)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCompositionPageID(&self, brecordindex: u8) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCompositionPageID)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordAncillaryPageID(&self, brecordindex: u8) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordAncillaryPageID)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDvbSubtitlingDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordLangId: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32) -> windows_core::HRESULT,
    pub GetRecordSubtitlingType: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordCompositionPageID: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u16) -> windows_core::HRESULT,
    pub GetRecordAncillaryPageID: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u16) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbTeletextDescriptor, IDvbTeletextDescriptor_Vtbl, 0x9cd29d47_69c6_4f92_98a9_210af1b7303a);
impl core::ops::Deref for IDvbTeletextDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbTeletextDescriptor, windows_core::IUnknown);
impl IDvbTeletextDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordLangId(&self, brecordindex: u8) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordLangId)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordTeletextType(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordTeletextType)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordMagazineNumber(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordMagazineNumber)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordPageNumber(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordPageNumber)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDvbTeletextDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordLangId: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32) -> windows_core::HRESULT,
    pub GetRecordTeletextType: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordMagazineNumber: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordPageNumber: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbTerrestrial2DeliverySystemDescriptor, IDvbTerrestrial2DeliverySystemDescriptor_Vtbl, 0x20ee9be9_cd57_49ab_8f6e_1d07aeb8e482);
impl core::ops::Deref for IDvbTerrestrial2DeliverySystemDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbTerrestrial2DeliverySystemDescriptor, windows_core::IUnknown);
impl IDvbTerrestrial2DeliverySystemDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTagExtension(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTagExtension)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCentreFrequency(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCentreFrequency)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetPLPId(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetPLPId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetT2SystemId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetT2SystemId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetMultipleInputMode(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetMultipleInputMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetBandwidth(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetBandwidth)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetGuardInterval(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetGuardInterval)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTransmissionMode(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTransmissionMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCellId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCellId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetOtherFrequencyFlag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetOtherFrequencyFlag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTFSFlag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTFSFlag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDvbTerrestrial2DeliverySystemDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTagExtension: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCentreFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetPLPId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetT2SystemId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetMultipleInputMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetBandwidth: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetGuardInterval: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTransmissionMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCellId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetOtherFrequencyFlag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTFSFlag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IDvbTerrestrialDeliverySystemDescriptor, IDvbTerrestrialDeliverySystemDescriptor_Vtbl, 0xed7e1b91_d12e_420c_b41d_a49d84fe1823);
impl core::ops::Deref for IDvbTerrestrialDeliverySystemDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDvbTerrestrialDeliverySystemDescriptor, windows_core::IUnknown);
impl IDvbTerrestrialDeliverySystemDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCentreFrequency(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCentreFrequency)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetBandwidth(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetBandwidth)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetConstellation(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetConstellation)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetHierarchyInformation(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetHierarchyInformation)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCodeRateHPStream(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCodeRateHPStream)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCodeRateLPStream(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCodeRateLPStream)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetGuardInterval(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetGuardInterval)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTransmissionMode(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTransmissionMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetOtherFrequencyFlag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetOtherFrequencyFlag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IDvbTerrestrialDeliverySystemDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCentreFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetBandwidth: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetConstellation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetHierarchyInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCodeRateHPStream: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCodeRateLPStream: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetGuardInterval: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTransmissionMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetOtherFrequencyFlag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IESCloseMmiEvent, IESCloseMmiEvent_Vtbl, 0x6b80e96f_55e2_45aa_b754_0c23c8e7d5c1);
impl core::ops::Deref for IESCloseMmiEvent {
    type Target = super::IESEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IESCloseMmiEvent, windows_core::IUnknown, super::IESEvent);
impl IESCloseMmiEvent {
    pub unsafe fn GetDialogNumber(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDialogNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IESCloseMmiEvent_Vtbl {
    pub base__: super::IESEvent_Vtbl,
    pub GetDialogNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IESEventFactory, IESEventFactory_Vtbl, 0x506a09b8_7f86_4e04_ac05_3303bfe8fc49);
impl core::ops::Deref for IESEventFactory {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IESEventFactory, windows_core::IUnknown);
impl IESEventFactory {
    pub unsafe fn CreateESEvent<P0, P1, P2>(&self, pserviceprovider: P0, dweventid: u32, guideventtype: windows_core::GUID, peventdata: &[u8], bstrbaseurl: P1, pinitcontext: P2) -> windows_core::Result<super::IESEvent>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
        P1: windows_core::Param<windows_core::BSTR>,
        P2: windows_core::Param<windows_core::IUnknown>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CreateESEvent)(windows_core::Interface::as_raw(self), pserviceprovider.param().abi(), dweventid, core::mem::transmute(guideventtype), peventdata.len().try_into().unwrap(), core::mem::transmute(peventdata.as_ptr()), bstrbaseurl.param().abi(), pinitcontext.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IESEventFactory_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CreateESEvent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, windows_core::GUID, u32, *const u8, core::mem::MaybeUninit<windows_core::BSTR>, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IESEventService, IESEventService_Vtbl, 0xed89a619_4c06_4b2f_99eb_c7669b13047c);
impl core::ops::Deref for IESEventService {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IESEventService, windows_core::IUnknown);
impl IESEventService {
    pub unsafe fn FireESEvent<P0>(&self, pesevent: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::IESEvent>,
    {
        (windows_core::Interface::vtable(self).FireESEvent)(windows_core::Interface::as_raw(self), pesevent.param().abi()).ok()
    }
}
#[repr(C)]
pub struct IESEventService_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub FireESEvent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IESEventServiceConfiguration, IESEventServiceConfiguration_Vtbl, 0x33b9daae_9309_491d_a051_bcad2a70cd66);
impl core::ops::Deref for IESEventServiceConfiguration {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IESEventServiceConfiguration, windows_core::IUnknown);
impl IESEventServiceConfiguration {
    pub unsafe fn SetParent<P0>(&self, peventservice: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IESEventService>,
    {
        (windows_core::Interface::vtable(self).SetParent)(windows_core::Interface::as_raw(self), peventservice.param().abi()).ok()
    }
    pub unsafe fn RemoveParent(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RemoveParent)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SetOwner<P0>(&self, pesevents: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::IESEvents>,
    {
        (windows_core::Interface::vtable(self).SetOwner)(windows_core::Interface::as_raw(self), pesevents.param().abi()).ok()
    }
    pub unsafe fn RemoveOwner(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RemoveOwner)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SetGraph<P0>(&self, pgraph: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::IFilterGraph>,
    {
        (windows_core::Interface::vtable(self).SetGraph)(windows_core::Interface::as_raw(self), pgraph.param().abi()).ok()
    }
    pub unsafe fn RemoveGraph<P0>(&self, pgraph: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::IFilterGraph>,
    {
        (windows_core::Interface::vtable(self).RemoveGraph)(windows_core::Interface::as_raw(self), pgraph.param().abi()).ok()
    }
}
#[repr(C)]
pub struct IESEventServiceConfiguration_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetParent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveParent: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOwner: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveOwner: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetGraph: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveGraph: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IESFileExpiryDateEvent, IESFileExpiryDateEvent_Vtbl, 0xba9edcb6_4d36_4cfe_8c56_87a6b0ca48e1);
impl core::ops::Deref for IESFileExpiryDateEvent {
    type Target = super::IESEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IESFileExpiryDateEvent, windows_core::IUnknown, super::IESEvent);
impl IESFileExpiryDateEvent {
    pub unsafe fn GetTunerId(&self) -> windows_core::Result<windows_core::GUID> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTunerId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetExpiryDate(&self) -> windows_core::Result<u64> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetExpiryDate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetFinalExpiryDate(&self) -> windows_core::Result<u64> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetFinalExpiryDate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetMaxRenewalCount(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetMaxRenewalCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn IsEntitlementTokenPresent(&self) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).IsEntitlementTokenPresent)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn DoesExpireAfterFirstUse(&self) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DoesExpireAfterFirstUse)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IESFileExpiryDateEvent_Vtbl {
    pub base__: super::IESEvent_Vtbl,
    pub GetTunerId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub GetExpiryDate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetFinalExpiryDate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetMaxRenewalCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub IsEntitlementTokenPresent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub DoesExpireAfterFirstUse: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IESIsdbCasResponseEvent, IESIsdbCasResponseEvent_Vtbl, 0x2017cb03_dc0f_4c24_83ca_36307b2cd19f);
impl core::ops::Deref for IESIsdbCasResponseEvent {
    type Target = super::IESEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IESIsdbCasResponseEvent, windows_core::IUnknown, super::IESEvent);
impl IESIsdbCasResponseEvent {
    pub unsafe fn GetRequestId(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRequestId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetStatus(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetStatus)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDataLength(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDataLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetResponseData(&self) -> windows_core::Result<*mut super::super::super::System::Com::SAFEARRAY> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetResponseData)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IESIsdbCasResponseEvent_Vtbl {
    pub base__: super::IESEvent_Vtbl,
    pub GetRequestId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDataLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub GetResponseData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut super::super::super::System::Com::SAFEARRAY) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetResponseData: usize,
}
windows_core::imp::define_interface!(IESLicenseRenewalResultEvent, IESLicenseRenewalResultEvent_Vtbl, 0xd5a48ef5_a81b_4df0_acaa_5e35e7ea45d4);
impl core::ops::Deref for IESLicenseRenewalResultEvent {
    type Target = super::IESEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IESLicenseRenewalResultEvent, windows_core::IUnknown, super::IESEvent);
impl IESLicenseRenewalResultEvent {
    pub unsafe fn GetCallersId(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCallersId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetFileName(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetFileName)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn IsRenewalSuccessful(&self) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).IsRenewalSuccessful)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn IsCheckEntitlementCallRequired(&self) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).IsCheckEntitlementCallRequired)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDescrambledStatus(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDescrambledStatus)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRenewalResultCode(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRenewalResultCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCASFailureCode(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCASFailureCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRenewalHResult(&self) -> windows_core::Result<windows_core::HRESULT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRenewalHResult)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetEntitlementTokenLength(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEntitlementTokenLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetEntitlementToken(&self) -> windows_core::Result<*mut super::super::super::System::Com::SAFEARRAY> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEntitlementToken)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetExpiryDate(&self) -> windows_core::Result<u64> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetExpiryDate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IESLicenseRenewalResultEvent_Vtbl {
    pub base__: super::IESEvent_Vtbl,
    pub GetCallersId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetFileName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub IsRenewalSuccessful: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub IsCheckEntitlementCallRequired: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetDescrambledStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRenewalResultCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetCASFailureCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRenewalHResult: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::HRESULT) -> windows_core::HRESULT,
    pub GetEntitlementTokenLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub GetEntitlementToken: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut super::super::super::System::Com::SAFEARRAY) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetEntitlementToken: usize,
    pub GetExpiryDate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IESOpenMmiEvent, IESOpenMmiEvent_Vtbl, 0xba4b6526_1a35_4635_8b56_3ec612746a8c);
impl core::ops::Deref for IESOpenMmiEvent {
    type Target = super::IESEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IESOpenMmiEvent, windows_core::IUnknown, super::IESEvent);
impl IESOpenMmiEvent {
    pub unsafe fn GetDialogNumber(&self, pdialogrequest: *mut u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDialogNumber)(windows_core::Interface::as_raw(self), pdialogrequest, &mut result__).map(|| result__)
    }
    pub unsafe fn GetDialogType(&self) -> windows_core::Result<windows_core::GUID> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDialogType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetDialogData(&self) -> windows_core::Result<*mut super::super::super::System::Com::SAFEARRAY> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDialogData)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDialogStringData(&self, pbstrbaseurl: *mut windows_core::BSTR) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDialogStringData)(windows_core::Interface::as_raw(self), core::mem::transmute(pbstrbaseurl), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IESOpenMmiEvent_Vtbl {
    pub base__: super::IESEvent_Vtbl,
    pub GetDialogNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetDialogType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub GetDialogData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut super::super::super::System::Com::SAFEARRAY) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetDialogData: usize,
    pub GetDialogStringData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IESRequestTunerEvent, IESRequestTunerEvent_Vtbl, 0x54c7a5e8_c3bb_4f51_af14_e0e2c0e34c6d);
impl core::ops::Deref for IESRequestTunerEvent {
    type Target = super::IESEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IESRequestTunerEvent, windows_core::IUnknown, super::IESEvent);
impl IESRequestTunerEvent {
    pub unsafe fn GetPriority(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetPriority)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetReason(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetReason)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetConsequences(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetConsequences)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetEstimatedTime(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEstimatedTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IESRequestTunerEvent_Vtbl {
    pub base__: super::IESEvent_Vtbl,
    pub GetPriority: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetReason: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetConsequences: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetEstimatedTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IESValueUpdatedEvent, IESValueUpdatedEvent_Vtbl, 0x8a24c46e_bb63_4664_8602_5d9c718c146d);
impl core::ops::Deref for IESValueUpdatedEvent {
    type Target = super::IESEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IESValueUpdatedEvent, windows_core::IUnknown, super::IESEvent);
impl IESValueUpdatedEvent {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetValueNames(&self) -> windows_core::Result<*mut super::super::super::System::Com::SAFEARRAY> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetValueNames)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IESValueUpdatedEvent_Vtbl {
    pub base__: super::IESEvent_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub GetValueNames: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut super::super::super::System::Com::SAFEARRAY) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetValueNames: usize,
}
windows_core::imp::define_interface!(IETFilter, IETFilter_Vtbl, 0xc4c4c4b1_0049_4e2b_98fb_9537f6ce516d);
impl core::ops::Deref for IETFilter {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IETFilter, windows_core::IUnknown);
impl IETFilter {
    pub unsafe fn EvalRatObjOK(&self) -> windows_core::Result<windows_core::HRESULT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EvalRatObjOK)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCurrRating(&self, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, plbfenattr: *mut i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetCurrRating)(windows_core::Interface::as_raw(self), pensystem, penrating, plbfenattr).ok()
    }
    pub unsafe fn GetCurrLicenseExpDate(&self, prottype: *const ProtType) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCurrLicenseExpDate)(windows_core::Interface::as_raw(self), prottype, &mut result__).map(|| result__)
    }
    pub unsafe fn GetLastErrorCode(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetLastErrorCode)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SetRecordingOn<P0>(&self, frecstate: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::BOOL>,
    {
        (windows_core::Interface::vtable(self).SetRecordingOn)(windows_core::Interface::as_raw(self), frecstate.param().abi()).ok()
    }
}
#[repr(C)]
pub struct IETFilter_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub EvalRatObjOK: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::HRESULT) -> windows_core::HRESULT,
    pub GetCurrRating: unsafe extern "system" fn(*mut core::ffi::c_void, *mut EnTvRat_System, *mut EnTvRat_GenericLevel, *mut i32) -> windows_core::HRESULT,
    pub GetCurrLicenseExpDate: unsafe extern "system" fn(*mut core::ffi::c_void, *const ProtType, *mut i32) -> windows_core::HRESULT,
    pub GetLastErrorCode: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetRecordingOn: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IETFilterConfig, IETFilterConfig_Vtbl, 0xc4c4c4d1_0049_4e2b_98fb_9537f6ce516d);
impl core::ops::Deref for IETFilterConfig {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IETFilterConfig, windows_core::IUnknown);
impl IETFilterConfig {
    pub unsafe fn InitLicense(&self, licenseid: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).InitLicense)(windows_core::Interface::as_raw(self), licenseid).ok()
    }
    pub unsafe fn GetSecureChannelObject(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSecureChannelObject)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IETFilterConfig_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub InitLicense: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub GetSecureChannelObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IETFilterEvents, IETFilterEvents_Vtbl, 0xc4c4c4c1_0049_4e2b_98fb_9537f6ce516d);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IETFilterEvents {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IETFilterEvents, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IETFilterEvents {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IETFilterEvents_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
}
windows_core::imp::define_interface!(IEnumComponentTypes, IEnumComponentTypes_Vtbl, 0x8a674b4a_1f63_11d3_b64c_00c04f79498e);
impl core::ops::Deref for IEnumComponentTypes {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IEnumComponentTypes, windows_core::IUnknown);
impl IEnumComponentTypes {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Next(&self, rgelt: &mut [Option<IComponentType>], pceltfetched: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), rgelt.len().try_into().unwrap(), core::mem::transmute(rgelt.as_ptr()), pceltfetched).ok()
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok()
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumComponentTypes> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IEnumComponentTypes_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Next: usize,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IEnumComponents, IEnumComponents_Vtbl, 0x2a6e2939_2595_11d3_b64c_00c04f79498e);
impl core::ops::Deref for IEnumComponents {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IEnumComponents, windows_core::IUnknown);
impl IEnumComponents {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Next(&self, rgelt: &mut [Option<IComponent>], pceltfetched: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), rgelt.len().try_into().unwrap(), core::mem::transmute(rgelt.as_ptr()), pceltfetched).ok()
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok()
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumComponents> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IEnumComponents_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Next: usize,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IEnumGuideDataProperties, IEnumGuideDataProperties_Vtbl, 0xae44423b_4571_475c_ad2c_f40a771d80ef);
impl core::ops::Deref for IEnumGuideDataProperties {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IEnumGuideDataProperties, windows_core::IUnknown);
impl IEnumGuideDataProperties {
    pub unsafe fn Next(&self, celt: u32, ppprop: *mut Option<IGuideDataProperty>, pcelt: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), celt, core::mem::transmute(ppprop), pcelt).ok()
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok()
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumGuideDataProperties> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IEnumGuideDataProperties_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IEnumMSVidGraphSegment, IEnumMSVidGraphSegment_Vtbl, 0x3dd2903e_e0aa_11d2_b63a_00c04f79498e);
impl core::ops::Deref for IEnumMSVidGraphSegment {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IEnumMSVidGraphSegment, windows_core::IUnknown);
impl IEnumMSVidGraphSegment {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Next(&self, celt: u32, rgelt: *mut Option<IMSVidGraphSegment>, pceltfetched: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), celt, core::mem::transmute(rgelt), pceltfetched).ok()
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok()
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumMSVidGraphSegment> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IEnumMSVidGraphSegment_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Next: usize,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IEnumStreamBufferRecordingAttrib, IEnumStreamBufferRecordingAttrib_Vtbl, 0xc18a9162_1e82_4142_8c73_5690fa62fe33);
impl core::ops::Deref for IEnumStreamBufferRecordingAttrib {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IEnumStreamBufferRecordingAttrib, windows_core::IUnknown);
impl IEnumStreamBufferRecordingAttrib {
    pub unsafe fn Next(&self, pstreambufferattribute: &mut [STREAMBUFFER_ATTRIBUTE], pcreceived: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), pstreambufferattribute.len().try_into().unwrap(), core::mem::transmute(pstreambufferattribute.as_ptr()), pcreceived).ok()
    }
    pub unsafe fn Skip(&self, crecords: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), crecords).ok()
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumStreamBufferRecordingAttrib> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IEnumStreamBufferRecordingAttrib_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut STREAMBUFFER_ATTRIBUTE, *mut u32) -> windows_core::HRESULT,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IEnumTuneRequests, IEnumTuneRequests_Vtbl, 0x1993299c_ced6_4788_87a3_420067dce0c7);
impl core::ops::Deref for IEnumTuneRequests {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IEnumTuneRequests, windows_core::IUnknown);
impl IEnumTuneRequests {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Next(&self, celt: u32, ppprop: *mut Option<ITuneRequest>, pcelt: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), celt, core::mem::transmute(ppprop), pcelt).ok()
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok()
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumTuneRequests> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IEnumTuneRequests_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Next: usize,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IEnumTuningSpaces, IEnumTuningSpaces_Vtbl, 0x8b8eb248_fc2b_11d2_9d8c_00c04f72d980);
impl core::ops::Deref for IEnumTuningSpaces {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IEnumTuningSpaces, windows_core::IUnknown);
impl IEnumTuningSpaces {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Next(&self, rgelt: &mut [Option<ITuningSpace>], pceltfetched: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), rgelt.len().try_into().unwrap(), core::mem::transmute(rgelt.as_ptr()), pceltfetched).ok()
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok()
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumTuningSpaces> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IEnumTuningSpaces_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Next: usize,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IEvalRat, IEvalRat_Vtbl, 0xc5c5c5b1_3abc_11d6_b25b_00c04fa0c026);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IEvalRat {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IEvalRat, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IEvalRat {
    pub unsafe fn get_BlockedRatingAttributes(&self, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_BlockedRatingAttributes)(windows_core::Interface::as_raw(self), ensystem, enlevel, &mut result__).map(|| result__)
    }
    pub unsafe fn put_BlockedRatingAttributes(&self, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel, lbfattrs: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).put_BlockedRatingAttributes)(windows_core::Interface::as_raw(self), ensystem, enlevel, lbfattrs).ok()
    }
    pub unsafe fn BlockUnRated(&self) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).BlockUnRated)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetBlockUnRated<P0>(&self, fblockunratedshows: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::BOOL>,
    {
        (windows_core::Interface::vtable(self).SetBlockUnRated)(windows_core::Interface::as_raw(self), fblockunratedshows.param().abi()).ok()
    }
    pub unsafe 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<()> {
        (windows_core::Interface::vtable(self).MostRestrictiveRating)(windows_core::Interface::as_raw(self), ensystem1, enenlevel1, lbfenattr1, ensystem2, enenlevel2, lbfenattr2, pensystem, penenlevel, plbfenattr).ok()
    }
    pub unsafe fn TestRating(&self, enshowsystem: EnTvRat_System, enshowlevel: EnTvRat_GenericLevel, lbfenshowattributes: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).TestRating)(windows_core::Interface::as_raw(self), enshowsystem, enshowlevel, lbfenshowattributes).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IEvalRat_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub get_BlockedRatingAttributes: unsafe extern "system" fn(*mut core::ffi::c_void, EnTvRat_System, EnTvRat_GenericLevel, *mut i32) -> windows_core::HRESULT,
    pub put_BlockedRatingAttributes: unsafe extern "system" fn(*mut core::ffi::c_void, EnTvRat_System, EnTvRat_GenericLevel, i32) -> windows_core::HRESULT,
    pub BlockUnRated: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub SetBlockUnRated: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub MostRestrictiveRating: unsafe extern "system" fn(*mut core::ffi::c_void, EnTvRat_System, EnTvRat_GenericLevel, i32, EnTvRat_System, EnTvRat_GenericLevel, i32, *mut EnTvRat_System, *mut EnTvRat_GenericLevel, *mut i32) -> windows_core::HRESULT,
    pub TestRating: unsafe extern "system" fn(*mut core::ffi::c_void, EnTvRat_System, EnTvRat_GenericLevel, i32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IGenericDescriptor, IGenericDescriptor_Vtbl, 0x6a5918f8_a77a_4f61_aed0_5702bdcda3e6);
impl core::ops::Deref for IGenericDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IGenericDescriptor, windows_core::IUnknown);
impl IGenericDescriptor {
    pub unsafe fn Initialize(&self, pbdesc: *const u8, bcount: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), pbdesc, bcount).ok()
    }
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetBody(&self) -> windows_core::Result<*mut u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetBody)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IGenericDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *const u8, i32) -> windows_core::HRESULT,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetBody: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IGenericDescriptor2, IGenericDescriptor2_Vtbl, 0xbf02fb7e_9792_4e10_a68d_033a2cc246a5);
impl core::ops::Deref for IGenericDescriptor2 {
    type Target = IGenericDescriptor;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IGenericDescriptor2, windows_core::IUnknown, IGenericDescriptor);
impl IGenericDescriptor2 {
    pub unsafe fn Initialize(&self, pbdesc: *const u8, wcount: u16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), pbdesc, wcount).ok()
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IGenericDescriptor2_Vtbl {
    pub base__: IGenericDescriptor_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *const u8, u16) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IGpnvsCommonBase, IGpnvsCommonBase_Vtbl, 0x907e0b5c_e42d_4f04_91f0_26f401f36907);
impl core::ops::Deref for IGpnvsCommonBase {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IGpnvsCommonBase, windows_core::IUnknown);
impl IGpnvsCommonBase {
    pub unsafe fn GetValueUpdateName(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetValueUpdateName)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IGpnvsCommonBase_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetValueUpdateName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IGuideData, IGuideData_Vtbl, 0x61571138_5b01_43cd_aeaf_60b784a0bf93);
impl core::ops::Deref for IGuideData {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IGuideData, windows_core::IUnknown);
impl IGuideData {
    pub unsafe fn GetServices(&self) -> windows_core::Result<IEnumTuneRequests> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServices)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetServiceProperties<P0>(&self, ptunerequest: P0) -> windows_core::Result<IEnumGuideDataProperties>
    where
        P0: windows_core::Param<ITuneRequest>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServiceProperties)(windows_core::Interface::as_raw(self), ptunerequest.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn GetGuideProgramIDs(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetGuideProgramIDs)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetProgramProperties<P0>(&self, varprogramdescriptionid: P0) -> windows_core::Result<IEnumGuideDataProperties>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetProgramProperties)(windows_core::Interface::as_raw(self), varprogramdescriptionid.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn GetScheduleEntryIDs(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetScheduleEntryIDs)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetScheduleEntryProperties<P0>(&self, varscheduleentrydescriptionid: P0) -> windows_core::Result<IEnumGuideDataProperties>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetScheduleEntryProperties)(windows_core::Interface::as_raw(self), varscheduleentrydescriptionid.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IGuideData_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetServices: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub GetServiceProperties: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetServiceProperties: usize,
    #[cfg(feature = "Win32_System_Ole")]
    pub GetGuideProgramIDs: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    GetGuideProgramIDs: usize,
    pub GetProgramProperties: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub GetScheduleEntryIDs: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    GetScheduleEntryIDs: usize,
    pub GetScheduleEntryProperties: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IGuideDataEvent, IGuideDataEvent_Vtbl, 0xefda0c80_f395_42c3_9b3c_56b37dec7bb7);
impl core::ops::Deref for IGuideDataEvent {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IGuideDataEvent, windows_core::IUnknown);
impl IGuideDataEvent {
    pub unsafe fn GuideDataAcquired(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GuideDataAcquired)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ProgramChanged<P0>(&self, varprogramdescriptionid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).ProgramChanged)(windows_core::Interface::as_raw(self), varprogramdescriptionid.param().abi()).ok()
    }
    pub unsafe fn ServiceChanged<P0>(&self, varservicedescriptionid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).ServiceChanged)(windows_core::Interface::as_raw(self), varservicedescriptionid.param().abi()).ok()
    }
    pub unsafe fn ScheduleEntryChanged<P0>(&self, varscheduleentrydescriptionid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).ScheduleEntryChanged)(windows_core::Interface::as_raw(self), varscheduleentrydescriptionid.param().abi()).ok()
    }
    pub unsafe fn ProgramDeleted<P0>(&self, varprogramdescriptionid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).ProgramDeleted)(windows_core::Interface::as_raw(self), varprogramdescriptionid.param().abi()).ok()
    }
    pub unsafe fn ServiceDeleted<P0>(&self, varservicedescriptionid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).ServiceDeleted)(windows_core::Interface::as_raw(self), varservicedescriptionid.param().abi()).ok()
    }
    pub unsafe fn ScheduleDeleted<P0>(&self, varscheduleentrydescriptionid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).ScheduleDeleted)(windows_core::Interface::as_raw(self), varscheduleentrydescriptionid.param().abi()).ok()
    }
}
#[repr(C)]
pub struct IGuideDataEvent_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GuideDataAcquired: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ProgramChanged: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    pub ServiceChanged: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    pub ScheduleEntryChanged: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    pub ProgramDeleted: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    pub ServiceDeleted: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    pub ScheduleDeleted: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IGuideDataLoader, IGuideDataLoader_Vtbl, 0x4764ff7c_fa95_4525_af4d_d32236db9e38);
impl core::ops::Deref for IGuideDataLoader {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IGuideDataLoader, windows_core::IUnknown);
impl IGuideDataLoader {
    pub unsafe fn Init<P0>(&self, pguidestore: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IGuideData>,
    {
        (windows_core::Interface::vtable(self).Init)(windows_core::Interface::as_raw(self), pguidestore.param().abi()).ok()
    }
    pub unsafe fn Terminate(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Terminate)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IGuideDataLoader_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Init: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Terminate: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IGuideDataProperty, IGuideDataProperty_Vtbl, 0x88ec5e58_bb73_41d6_99ce_66c524b8b591);
impl core::ops::Deref for IGuideDataProperty {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IGuideDataProperty, windows_core::IUnknown);
impl IGuideDataProperty {
    pub unsafe fn Name(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Name)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Language(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Language)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn Value(&self) -> windows_core::Result<windows_core::VARIANT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Value)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IGuideDataProperty_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Name: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub Language: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub Value: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IISDBSLocator, IISDBSLocator_Vtbl, 0xc9897087_e29c_473f_9e4b_7072123dea14);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IISDBSLocator {
    type Target = IDVBSLocator;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IISDBSLocator, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ILocator, IDigitalLocator, IDVBSLocator);
#[cfg(feature = "Win32_System_Com")]
impl IISDBSLocator {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IISDBSLocator_Vtbl {
    pub base__: IDVBSLocator_Vtbl,
}
windows_core::imp::define_interface!(IISDB_BIT, IISDB_BIT_Vtbl, 0x537cd71e_0e46_4173_9001_ba043f3e49e2);
impl core::ops::Deref for IISDB_BIT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IISDB_BIT, windows_core::IUnknown);
impl IISDB_BIT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetOriginalNetworkId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetOriginalNetworkId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetBroadcastViewPropriety(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetBroadcastViewPropriety)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfTableDescriptors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableDescriptorByIndex)(windows_core::Interface::as_raw(self), dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptorByTag)(windows_core::Interface::as_raw(self), btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordBroadcasterId(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordBroadcasterId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfDescriptors)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptorByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordDescriptorByTag)(windows_core::Interface::as_raw(self), dwrecordindex, btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn GetVersionHash(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionHash)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IISDB_BIT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetOriginalNetworkId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetBroadcastViewPropriety: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfTableDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTableDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTableDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordBroadcasterId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordCountOfDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRecordDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionHash: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IISDB_CDT, IISDB_CDT_Vtbl, 0x25fa92c2_8b80_4787_a841_3a0e8f17984b);
impl core::ops::Deref for IISDB_CDT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IISDB_CDT, windows_core::IUnknown);
impl IISDB_CDT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1, bsectionnumber: u8) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi(), bsectionnumber).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDownloadDataId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDownloadDataId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSectionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSectionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetOriginalNetworkId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetOriginalNetworkId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDataType(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDataType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfTableDescriptors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableDescriptorByIndex)(windows_core::Interface::as_raw(self), dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptorByTag)(windows_core::Interface::as_raw(self), btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn GetSizeOfDataModule(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSizeOfDataModule)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDataModule(&self) -> windows_core::Result<*mut u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDataModule)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetVersionHash(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionHash)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IISDB_CDT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, u8) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetDownloadDataId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetSectionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetOriginalNetworkId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetDataType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfTableDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTableDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTableDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetSizeOfDataModule: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDataModule: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut u8) -> windows_core::HRESULT,
    pub GetVersionHash: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IISDB_EMM, IISDB_EMM_Vtbl, 0x0edb556d_43ad_4938_9668_321b2ffecfd3);
impl core::ops::Deref for IISDB_EMM {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IISDB_EMM, windows_core::IUnknown);
impl IISDB_EMM {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableIdExtension(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableIdExtension)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDataBytes(&self, pwbufferlength: *mut u16, pbbuffer: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetDataBytes)(windows_core::Interface::as_raw(self), pwbufferlength, pbbuffer).ok()
    }
    pub unsafe fn GetSharedEmmMessage(&self, pwlength: *mut u16, ppbmessage: *mut *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetSharedEmmMessage)(windows_core::Interface::as_raw(self), pwlength, ppbmessage).ok()
    }
    pub unsafe fn GetIndividualEmmMessage<P0>(&self, punknown: P0, pwlength: *mut u16, ppbmessage: *mut *mut u8) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        (windows_core::Interface::vtable(self).GetIndividualEmmMessage)(windows_core::Interface::as_raw(self), punknown.param().abi(), pwlength, ppbmessage).ok()
    }
    pub unsafe fn GetVersionHash(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionHash)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IISDB_EMM_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTableIdExtension: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetDataBytes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16, *mut u8) -> windows_core::HRESULT,
    pub GetSharedEmmMessage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16, *mut *mut u8) -> windows_core::HRESULT,
    pub GetIndividualEmmMessage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u16, *mut *mut u8) -> windows_core::HRESULT,
    pub GetVersionHash: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IISDB_LDT, IISDB_LDT_Vtbl, 0x141a546b_02ff_4fb9_a3a3_2f074b74a9a9);
impl core::ops::Deref for IISDB_LDT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IISDB_LDT, windows_core::IUnknown);
impl IISDB_LDT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetOriginalServiceId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetOriginalServiceId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTransportStreamId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTransportStreamId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetOriginalNetworkId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetOriginalNetworkId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptionId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptionId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfDescriptors)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptorByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordDescriptorByTag)(windows_core::Interface::as_raw(self), dwrecordindex, btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn GetVersionHash(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionHash)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IISDB_LDT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetOriginalServiceId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetTransportStreamId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetOriginalNetworkId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptionId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordCountOfDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRecordDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionHash: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IISDB_NBIT, IISDB_NBIT_Vtbl, 0x1b1863ef_08f1_40b7_a559_3b1eff8cafa6);
impl core::ops::Deref for IISDB_NBIT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IISDB_NBIT, windows_core::IUnknown);
impl IISDB_NBIT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetOriginalNetworkId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetOriginalNetworkId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordInformationId(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordInformationId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordInformationType(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordInformationType)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptionBodyLocation(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptionBodyLocation)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordMessageSectionNumber(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordMessageSectionNumber)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordUserDefined(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordUserDefined)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordNumberOfKeys(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordNumberOfKeys)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordKeys(&self, dwrecordindex: u32) -> windows_core::Result<*mut u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordKeys)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfDescriptors)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptorByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordDescriptorByTag)(windows_core::Interface::as_raw(self), dwrecordindex, btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn GetVersionHash(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionHash)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IISDB_NBIT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetOriginalNetworkId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordInformationId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordInformationType: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordDescriptionBodyLocation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordMessageSectionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordUserDefined: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordNumberOfKeys: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordKeys: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut u8) -> windows_core::HRESULT,
    pub GetRecordCountOfDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRecordDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionHash: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IISDB_SDT, IISDB_SDT_Vtbl, 0x3f3dc9a2_bb32_4fb9_ae9e_d856848927a3);
impl core::ops::Deref for IISDB_SDT {
    type Target = IDVB_SDT;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IISDB_SDT, windows_core::IUnknown, IDVB_SDT);
impl IISDB_SDT {
    pub unsafe fn GetRecordEITUserDefinedFlags(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordEITUserDefinedFlags)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IISDB_SDT_Vtbl {
    pub base__: IDVB_SDT_Vtbl,
    pub GetRecordEITUserDefinedFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IISDB_SDTT, IISDB_SDTT_Vtbl, 0xee60ef2d_813a_4dc7_bf92_ea13dac85313);
impl core::ops::Deref for IISDB_SDTT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IISDB_SDTT, windows_core::IUnknown);
impl IISDB_SDTT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableIdExt(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableIdExt)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTransportStreamId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTransportStreamId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetOriginalNetworkId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetOriginalNetworkId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetServiceId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServiceId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordGroup(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordGroup)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordTargetVersion(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordTargetVersion)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordNewVersion(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordNewVersion)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDownloadLevel(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDownloadLevel)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordVersionIndicator(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordVersionIndicator)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordScheduleTimeShiftInformation(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordScheduleTimeShiftInformation)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCountOfSchedules(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfSchedules)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordStartTimeByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<MPEG_DATE_AND_TIME> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordStartTimeByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDurationByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<MPEG_TIME> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDurationByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfDescriptors)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptorByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: Option<*mut u32>, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordDescriptorByTag)(windows_core::Interface::as_raw(self), dwrecordindex, btag, core::mem::transmute(pdwcookie.unwrap_or(std::ptr::null_mut())), core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn GetVersionHash(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionHash)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IISDB_SDTT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTableIdExt: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetTransportStreamId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetOriginalNetworkId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetServiceId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordGroup: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordTargetVersion: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordNewVersion: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordDownloadLevel: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordVersionIndicator: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordScheduleTimeShiftInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordCountOfSchedules: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordStartTimeByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT,
    pub GetRecordDurationByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut MPEG_TIME) -> windows_core::HRESULT,
    pub GetRecordCountOfDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRecordDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionHash: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbAudioComponentDescriptor, IIsdbAudioComponentDescriptor_Vtbl, 0x679d2002_2425_4be4_a4c7_d6632a574f4d);
impl core::ops::Deref for IIsdbAudioComponentDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbAudioComponentDescriptor, windows_core::IUnknown);
impl IIsdbAudioComponentDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetStreamContent(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetStreamContent)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetComponentType(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetComponentType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetComponentTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetComponentTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetStreamType(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetStreamType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSimulcastGroupTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSimulcastGroupTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetESMultiLingualFlag(&self) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetESMultiLingualFlag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetMainComponentFlag(&self) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetMainComponentFlag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetQualityIndicator(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetQualityIndicator)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSamplingRate(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSamplingRate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLanguageCode(&self, pszcode: &mut [u8; 4]) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetLanguageCode)(windows_core::Interface::as_raw(self), core::mem::transmute(pszcode.as_ptr())).ok()
    }
    pub unsafe fn GetLanguageCode2(&self, pszcode: &mut [u8; 4]) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetLanguageCode2)(windows_core::Interface::as_raw(self), core::mem::transmute(pszcode.as_ptr())).ok()
    }
    pub unsafe fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTextW)(windows_core::Interface::as_raw(self), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IIsdbAudioComponentDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetStreamContent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetComponentType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetComponentTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetStreamType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetSimulcastGroupTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetESMultiLingualFlag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetMainComponentFlag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetQualityIndicator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetSamplingRate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLanguageCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLanguageCode2: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTextW: unsafe extern "system" fn(*mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbCAContractInformationDescriptor, IIsdbCAContractInformationDescriptor_Vtbl, 0x08e18b25_a28f_4e92_821e_4fced5cc2291);
impl core::ops::Deref for IIsdbCAContractInformationDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbCAContractInformationDescriptor, windows_core::IUnknown);
impl IIsdbCAContractInformationDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCASystemId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCASystemId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCAUnitId(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCAUnitId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordComponentTag(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordComponentTag)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetContractVerificationInfoLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetContractVerificationInfoLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetContractVerificationInfo(&self, bbuflength: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetContractVerificationInfo)(windows_core::Interface::as_raw(self), bbuflength, &mut result__).map(|| result__)
    }
    pub unsafe fn GetFeeNameW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetFeeNameW)(windows_core::Interface::as_raw(self), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IIsdbCAContractInformationDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCASystemId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetCAUnitId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordComponentTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetContractVerificationInfoLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetContractVerificationInfo: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetFeeNameW: unsafe extern "system" fn(*mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbCADescriptor, IIsdbCADescriptor_Vtbl, 0x0570aa47_52bc_42ae_8ca5_969f41e81aea);
impl core::ops::Deref for IIsdbCADescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbCADescriptor, windows_core::IUnknown);
impl IIsdbCADescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCASystemId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCASystemId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetReservedBits(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetReservedBits)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCAPID(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCAPID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetPrivateDataBytes(&self, pbbufferlength: *mut u8, pbbuffer: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetPrivateDataBytes)(windows_core::Interface::as_raw(self), pbbufferlength, pbbuffer).ok()
    }
}
#[repr(C)]
pub struct IIsdbCADescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCASystemId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetReservedBits: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCAPID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetPrivateDataBytes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbCAServiceDescriptor, IIsdbCAServiceDescriptor_Vtbl, 0x39cbeb97_ff0b_42a7_9ab9_7b9cfe70a77a);
impl core::ops::Deref for IIsdbCAServiceDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbCAServiceDescriptor, windows_core::IUnknown);
impl IIsdbCAServiceDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCASystemId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCASystemId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCABroadcasterGroupId(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCABroadcasterGroupId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetMessageControl(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetMessageControl)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetServiceIds(&self, pbnumserviceids: *mut u8, pwserviceids: *mut u16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetServiceIds)(windows_core::Interface::as_raw(self), pbnumserviceids, pwserviceids).ok()
    }
}
#[repr(C)]
pub struct IIsdbCAServiceDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCASystemId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetCABroadcasterGroupId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetMessageControl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetServiceIds: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8, *mut u16) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbComponentGroupDescriptor, IIsdbComponentGroupDescriptor_Vtbl, 0xa494f17f_c592_47d8_8943_64c9a34be7b9);
impl core::ops::Deref for IIsdbComponentGroupDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbComponentGroupDescriptor, windows_core::IUnknown);
impl IIsdbComponentGroupDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetComponentGroupType(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetComponentGroupType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordGroupId(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordGroupId)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordNumberOfCAUnit(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordNumberOfCAUnit)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCAUnitCAUnitId(&self, brecordindex: u8, bcaunitindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCAUnitCAUnitId)(windows_core::Interface::as_raw(self), brecordindex, bcaunitindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCAUnitNumberOfComponents(&self, brecordindex: u8, bcaunitindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCAUnitNumberOfComponents)(windows_core::Interface::as_raw(self), brecordindex, bcaunitindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCAUnitComponentTag(&self, brecordindex: u8, bcaunitindex: u8, bcomponentindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCAUnitComponentTag)(windows_core::Interface::as_raw(self), brecordindex, bcaunitindex, bcomponentindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordTotalBitRate(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordTotalBitRate)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordTextW(&self, brecordindex: u8, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordTextW)(windows_core::Interface::as_raw(self), brecordindex, convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IIsdbComponentGroupDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetComponentGroupType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordGroupId: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordNumberOfCAUnit: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordCAUnitCAUnitId: unsafe extern "system" fn(*mut core::ffi::c_void, u8, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordCAUnitNumberOfComponents: unsafe extern "system" fn(*mut core::ffi::c_void, u8, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordCAUnitComponentTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, u8, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordTotalBitRate: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordTextW: unsafe extern "system" fn(*mut core::ffi::c_void, u8, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbDataContentDescriptor, IIsdbDataContentDescriptor_Vtbl, 0xa428100a_e646_4bd6_aa14_6087bdc08cd5);
impl core::ops::Deref for IIsdbDataContentDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbDataContentDescriptor, windows_core::IUnknown);
impl IIsdbDataContentDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDataComponentId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDataComponentId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetEntryComponent(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEntryComponent)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSelectorLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSelectorLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSelectorBytes(&self, bbuflength: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSelectorBytes)(windows_core::Interface::as_raw(self), bbuflength, &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordComponentRef(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordComponentRef)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetLanguageCode(&self, pszcode: &mut [u8; 4]) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetLanguageCode)(windows_core::Interface::as_raw(self), core::mem::transmute(pszcode.as_ptr())).ok()
    }
    pub unsafe fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTextW)(windows_core::Interface::as_raw(self), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IIsdbDataContentDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetDataComponentId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetEntryComponent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetSelectorLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetSelectorBytes: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordComponentRef: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetLanguageCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTextW: unsafe extern "system" fn(*mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbDigitalCopyControlDescriptor, IIsdbDigitalCopyControlDescriptor_Vtbl, 0x1a28417e_266a_4bb8_a4bd_d782bcfb8161);
impl core::ops::Deref for IIsdbDigitalCopyControlDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbDigitalCopyControlDescriptor, windows_core::IUnknown);
impl IIsdbDigitalCopyControlDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCopyControl(&self, pbdigitalrecordingcontroldata: *mut u8, pbcopycontroltype: *mut u8, pbapscontroldata: *mut u8, pbmaximumbitrate: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetCopyControl)(windows_core::Interface::as_raw(self), pbdigitalrecordingcontroldata, pbcopycontroltype, pbapscontroldata, pbmaximumbitrate).ok()
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCopyControl(&self, brecordindex: u8, pbcomponenttag: *mut u8, pbdigitalrecordingcontroldata: *mut u8, pbcopycontroltype: *mut u8, pbapscontroldata: *mut u8, pbmaximumbitrate: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordCopyControl)(windows_core::Interface::as_raw(self), brecordindex, pbcomponenttag, pbdigitalrecordingcontroldata, pbcopycontroltype, pbapscontroldata, pbmaximumbitrate).ok()
    }
}
#[repr(C)]
pub struct IIsdbDigitalCopyControlDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCopyControl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8, *mut u8, *mut u8, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordCopyControl: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8, *mut u8, *mut u8, *mut u8, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbDownloadContentDescriptor, IIsdbDownloadContentDescriptor_Vtbl, 0x5298661e_cb88_4f5f_a1de_5f440c185b92);
impl core::ops::Deref for IIsdbDownloadContentDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbDownloadContentDescriptor, windows_core::IUnknown);
impl IIsdbDownloadContentDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetFlags(&self, pfreboot: *mut super::super::super::Foundation::BOOL, pfaddon: *mut super::super::super::Foundation::BOOL, pfcompatibility: *mut super::super::super::Foundation::BOOL, pfmoduleinfo: *mut super::super::super::Foundation::BOOL, pftextinfo: *mut super::super::super::Foundation::BOOL) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetFlags)(windows_core::Interface::as_raw(self), pfreboot, pfaddon, pfcompatibility, pfmoduleinfo, pftextinfo).ok()
    }
    pub unsafe fn GetComponentSize(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetComponentSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDownloadId(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDownloadId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTimeOutValueDII(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTimeOutValueDII)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLeakRate(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLeakRate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetComponentTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetComponentTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCompatiblityDescriptorLength(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCompatiblityDescriptorLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCompatiblityDescriptor(&self) -> windows_core::Result<*mut u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCompatiblityDescriptor)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordModuleId(&self, wrecordindex: u16) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordModuleId)(windows_core::Interface::as_raw(self), wrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordModuleSize(&self, wrecordindex: u16) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordModuleSize)(windows_core::Interface::as_raw(self), wrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordModuleInfoLength(&self, wrecordindex: u16) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordModuleInfoLength)(windows_core::Interface::as_raw(self), wrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordModuleInfo(&self, wrecordindex: u16) -> windows_core::Result<*mut u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordModuleInfo)(windows_core::Interface::as_raw(self), wrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetTextLanguageCode(&self, szcode: &mut [u8; 4]) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTextLanguageCode)(windows_core::Interface::as_raw(self), core::mem::transmute(szcode.as_ptr())).ok()
    }
    pub unsafe fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTextW)(windows_core::Interface::as_raw(self), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IIsdbDownloadContentDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::BOOL, *mut super::super::super::Foundation::BOOL, *mut super::super::super::Foundation::BOOL, *mut super::super::super::Foundation::BOOL, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetComponentSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDownloadId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTimeOutValueDII: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetLeakRate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetComponentTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCompatiblityDescriptorLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetCompatiblityDescriptor: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetRecordModuleId: unsafe extern "system" fn(*mut core::ffi::c_void, u16, *mut u16) -> windows_core::HRESULT,
    pub GetRecordModuleSize: unsafe extern "system" fn(*mut core::ffi::c_void, u16, *mut u32) -> windows_core::HRESULT,
    pub GetRecordModuleInfoLength: unsafe extern "system" fn(*mut core::ffi::c_void, u16, *mut u8) -> windows_core::HRESULT,
    pub GetRecordModuleInfo: unsafe extern "system" fn(*mut core::ffi::c_void, u16, *mut *mut u8) -> windows_core::HRESULT,
    pub GetTextLanguageCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTextW: unsafe extern "system" fn(*mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbEmergencyInformationDescriptor, IIsdbEmergencyInformationDescriptor_Vtbl, 0xba6fa681_b973_4da1_9207_ac3e7f0341eb);
impl core::ops::Deref for IIsdbEmergencyInformationDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbEmergencyInformationDescriptor, windows_core::IUnknown);
impl IIsdbEmergencyInformationDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetServiceId(&self, brecordindex: u8) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServiceId)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetStartEndFlag(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetStartEndFlag)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetSignalLevel(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSignalLevel)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetAreaCode(&self, brecordindex: u8, ppwval: *mut *mut u16, pbnumareacodes: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetAreaCode)(windows_core::Interface::as_raw(self), brecordindex, ppwval, pbnumareacodes).ok()
    }
}
#[repr(C)]
pub struct IIsdbEmergencyInformationDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetServiceId: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u16) -> windows_core::HRESULT,
    pub GetStartEndFlag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetSignalLevel: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetAreaCode: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut *mut u16, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbEventGroupDescriptor, IIsdbEventGroupDescriptor_Vtbl, 0x94b06780_2e2a_44dc_a966_cc56fdabc6c2);
impl core::ops::Deref for IIsdbEventGroupDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbEventGroupDescriptor, windows_core::IUnknown);
impl IIsdbEventGroupDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetGroupType(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetGroupType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordEvent(&self, brecordindex: u8, pwserviceid: *mut u16, pweventid: *mut u16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordEvent)(windows_core::Interface::as_raw(self), brecordindex, pwserviceid, pweventid).ok()
    }
    pub unsafe fn GetCountOfRefRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRefRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRefRecordEvent(&self, brecordindex: u8, pworiginalnetworkid: *mut u16, pwtransportstreamid: *mut u16, pwserviceid: *mut u16, pweventid: *mut u16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRefRecordEvent)(windows_core::Interface::as_raw(self), brecordindex, pworiginalnetworkid, pwtransportstreamid, pwserviceid, pweventid).ok()
    }
}
#[repr(C)]
pub struct IIsdbEventGroupDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetGroupType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordEvent: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u16, *mut u16) -> windows_core::HRESULT,
    pub GetCountOfRefRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRefRecordEvent: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u16, *mut u16, *mut u16, *mut u16) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbHierarchicalTransmissionDescriptor, IIsdbHierarchicalTransmissionDescriptor_Vtbl, 0xb7b3ae90_ee0b_446d_8769_f7e2aa266aa6);
impl core::ops::Deref for IIsdbHierarchicalTransmissionDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbHierarchicalTransmissionDescriptor, windows_core::IUnknown);
impl IIsdbHierarchicalTransmissionDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetFutureUse1(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetFutureUse1)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetQualityLevel(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetQualityLevel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetFutureUse2(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetFutureUse2)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetReferencePid(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetReferencePid)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IIsdbHierarchicalTransmissionDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetFutureUse1: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetQualityLevel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetFutureUse2: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetReferencePid: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbLogoTransmissionDescriptor, IIsdbLogoTransmissionDescriptor_Vtbl, 0xe0103f49_4ae1_4f07_9098_756db1fa88cd);
impl core::ops::Deref for IIsdbLogoTransmissionDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbLogoTransmissionDescriptor, windows_core::IUnknown);
impl IIsdbLogoTransmissionDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLogoTransmissionType(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLogoTransmissionType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLogoId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLogoId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLogoVersion(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLogoVersion)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDownloadDataId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDownloadDataId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLogoCharW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLogoCharW)(windows_core::Interface::as_raw(self), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IIsdbLogoTransmissionDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLogoTransmissionType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLogoId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetLogoVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetDownloadDataId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetLogoCharW: unsafe extern "system" fn(*mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbSIParameterDescriptor, IIsdbSIParameterDescriptor_Vtbl, 0xf837dc36_867c_426a_9111_f62093951a45);
impl core::ops::Deref for IIsdbSIParameterDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbSIParameterDescriptor, windows_core::IUnknown);
impl IIsdbSIParameterDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetParameterVersion(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetParameterVersion)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetUpdateTime(&self) -> windows_core::Result<MPEG_DATE> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetUpdateTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordNumberOfTable(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordNumberOfTable)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableId(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableId)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableDescriptionLength(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableDescriptionLength)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableDescriptionBytes(&self, brecordindex: u8, pbbufferlength: *mut u8, pbbuffer: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptionBytes)(windows_core::Interface::as_raw(self), brecordindex, pbbufferlength, pbbuffer).ok()
    }
}
#[repr(C)]
pub struct IIsdbSIParameterDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetParameterVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetUpdateTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut MPEG_DATE) -> windows_core::HRESULT,
    pub GetRecordNumberOfTable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTableId: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetTableDescriptionLength: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetTableDescriptionBytes: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbSeriesDescriptor, IIsdbSeriesDescriptor_Vtbl, 0x07ef6370_1660_4f26_87fc_614adab24b11);
impl core::ops::Deref for IIsdbSeriesDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbSeriesDescriptor, windows_core::IUnknown);
impl IIsdbSeriesDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSeriesId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSeriesId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRepeatLabel(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRepeatLabel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetProgramPattern(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetProgramPattern)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetExpireDate(&self, pfvalid: *mut super::super::super::Foundation::BOOL, pmdtval: *mut MPEG_DATE_AND_TIME) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetExpireDate)(windows_core::Interface::as_raw(self), pfvalid, pmdtval).ok()
    }
    pub unsafe fn GetEpisodeNumber(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEpisodeNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLastEpisodeNumber(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLastEpisodeNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSeriesNameW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSeriesNameW)(windows_core::Interface::as_raw(self), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IIsdbSeriesDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetSeriesId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetRepeatLabel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetProgramPattern: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetExpireDate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::BOOL, *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT,
    pub GetEpisodeNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetLastEpisodeNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetSeriesNameW: unsafe extern "system" fn(*mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbSiParser2, IIsdbSiParser2_Vtbl, 0x900e4bb7_18cd_453f_98be_3be6aa211772);
impl core::ops::Deref for IIsdbSiParser2 {
    type Target = IDvbSiParser2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbSiParser2, windows_core::IUnknown, IDvbSiParser, IDvbSiParser2);
impl IIsdbSiParser2 {
    pub unsafe fn GetSDT(&self, tableid: u8, pwtransportstreamid: Option<*const u16>) -> windows_core::Result<IISDB_SDT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSDT)(windows_core::Interface::as_raw(self), tableid, core::mem::transmute(pwtransportstreamid.unwrap_or(std::ptr::null())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetBIT(&self, tableid: u8, pworiginalnetworkid: Option<*const u16>) -> windows_core::Result<IISDB_BIT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetBIT)(windows_core::Interface::as_raw(self), tableid, core::mem::transmute(pworiginalnetworkid.unwrap_or(std::ptr::null())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetNBIT(&self, tableid: u8, pworiginalnetworkid: Option<*const u16>) -> windows_core::Result<IISDB_NBIT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNBIT)(windows_core::Interface::as_raw(self), tableid, core::mem::transmute(pworiginalnetworkid.unwrap_or(std::ptr::null())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetLDT(&self, tableid: u8, pworiginalserviceid: Option<*const u16>) -> windows_core::Result<IISDB_LDT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLDT)(windows_core::Interface::as_raw(self), tableid, core::mem::transmute(pworiginalserviceid.unwrap_or(std::ptr::null())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetSDTT(&self, tableid: u8, pwtableidext: Option<*const u16>) -> windows_core::Result<IISDB_SDTT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSDTT)(windows_core::Interface::as_raw(self), tableid, core::mem::transmute(pwtableidext.unwrap_or(std::ptr::null())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetCDT(&self, tableid: u8, bsectionnumber: u8, pwdownloaddataid: Option<*const u16>) -> windows_core::Result<IISDB_CDT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCDT)(windows_core::Interface::as_raw(self), tableid, bsectionnumber, core::mem::transmute(pwdownloaddataid.unwrap_or(std::ptr::null())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetEMM(&self, pid: u16, wtableidext: u16) -> windows_core::Result<IISDB_EMM> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEMM)(windows_core::Interface::as_raw(self), pid, wtableidext, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IIsdbSiParser2_Vtbl {
    pub base__: IDvbSiParser2_Vtbl,
    pub GetSDT: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *const u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBIT: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *const u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetNBIT: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *const u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetLDT: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *const u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetSDTT: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *const u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCDT: unsafe extern "system" fn(*mut core::ffi::c_void, u8, u8, *const u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetEMM: unsafe extern "system" fn(*mut core::ffi::c_void, u16, u16, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbTSInformationDescriptor, IIsdbTSInformationDescriptor_Vtbl, 0xd7ad183e_38f5_4210_b55f_ec8d601bbd47);
impl core::ops::Deref for IIsdbTSInformationDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbTSInformationDescriptor, windows_core::IUnknown);
impl IIsdbTSInformationDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRemoteControlKeyId(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRemoteControlKeyId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTSNameW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTSNameW)(windows_core::Interface::as_raw(self), convmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordTransmissionTypeInfo(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordTransmissionTypeInfo)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordNumberOfServices(&self, brecordindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordNumberOfServices)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordServiceIdByIndex(&self, brecordindex: u8, bserviceindex: u8) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordServiceIdByIndex)(windows_core::Interface::as_raw(self), brecordindex, bserviceindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IIsdbTSInformationDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRemoteControlKeyId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTSNameW: unsafe extern "system" fn(*mut core::ffi::c_void, DVB_STRCONV_MODE, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordTransmissionTypeInfo: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordNumberOfServices: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetRecordServiceIdByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u8, u8, *mut u16) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IIsdbTerrestrialDeliverySystemDescriptor, IIsdbTerrestrialDeliverySystemDescriptor_Vtbl, 0x39fae0a6_d151_44dd_a28a_765de5991670);
impl core::ops::Deref for IIsdbTerrestrialDeliverySystemDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIsdbTerrestrialDeliverySystemDescriptor, windows_core::IUnknown);
impl IIsdbTerrestrialDeliverySystemDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetAreaCode(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetAreaCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetGuardInterval(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetGuardInterval)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTransmissionMode(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTransmissionMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordFrequency(&self, brecordindex: u8) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordFrequency)(windows_core::Interface::as_raw(self), brecordindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IIsdbTerrestrialDeliverySystemDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetAreaCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetGuardInterval: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetTransmissionMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRecordFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(ILanguageComponentType, ILanguageComponentType_Vtbl, 0xb874c8ba_0fa2_11d3_9d8e_00c04f72d980);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for ILanguageComponentType {
    type Target = IComponentType;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(ILanguageComponentType, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IComponentType);
#[cfg(feature = "Win32_System_Com")]
impl ILanguageComponentType {
    pub unsafe fn LangID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).LangID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetLangID(&self, langid: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetLangID)(windows_core::Interface::as_raw(self), langid).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct ILanguageComponentType_Vtbl {
    pub base__: IComponentType_Vtbl,
    pub LangID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetLangID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(ILocator, ILocator_Vtbl, 0x286d7f89_760c_4f89_80c4_66841d2507aa);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for ILocator {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(ILocator, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ILocator {
    pub unsafe fn CarrierFrequency(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CarrierFrequency)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetCarrierFrequency(&self, frequency: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetCarrierFrequency)(windows_core::Interface::as_raw(self), frequency).ok()
    }
    pub unsafe fn InnerFEC(&self) -> windows_core::Result<super::FECMethod> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).InnerFEC)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetInnerFEC(&self, fec: super::FECMethod) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetInnerFEC)(windows_core::Interface::as_raw(self), fec).ok()
    }
    pub unsafe fn InnerFECRate(&self) -> windows_core::Result<super::BinaryConvolutionCodeRate> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).InnerFECRate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetInnerFECRate(&self, fec: super::BinaryConvolutionCodeRate) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetInnerFECRate)(windows_core::Interface::as_raw(self), fec).ok()
    }
    pub unsafe fn OuterFEC(&self) -> windows_core::Result<super::FECMethod> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).OuterFEC)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetOuterFEC(&self, fec: super::FECMethod) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetOuterFEC)(windows_core::Interface::as_raw(self), fec).ok()
    }
    pub unsafe fn OuterFECRate(&self) -> windows_core::Result<super::BinaryConvolutionCodeRate> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).OuterFECRate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetOuterFECRate(&self, fec: super::BinaryConvolutionCodeRate) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetOuterFECRate)(windows_core::Interface::as_raw(self), fec).ok()
    }
    pub unsafe fn Modulation(&self) -> windows_core::Result<super::ModulationType> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Modulation)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetModulation(&self, modulation: super::ModulationType) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetModulation)(windows_core::Interface::as_raw(self), modulation).ok()
    }
    pub unsafe fn SymbolRate(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SymbolRate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetSymbolRate(&self, rate: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetSymbolRate)(windows_core::Interface::as_raw(self), rate).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Clone(&self) -> windows_core::Result<ILocator> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct ILocator_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub CarrierFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetCarrierFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub InnerFEC: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::FECMethod) -> windows_core::HRESULT,
    pub SetInnerFEC: unsafe extern "system" fn(*mut core::ffi::c_void, super::FECMethod) -> windows_core::HRESULT,
    pub InnerFECRate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::BinaryConvolutionCodeRate) -> windows_core::HRESULT,
    pub SetInnerFECRate: unsafe extern "system" fn(*mut core::ffi::c_void, super::BinaryConvolutionCodeRate) -> windows_core::HRESULT,
    pub OuterFEC: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::FECMethod) -> windows_core::HRESULT,
    pub SetOuterFEC: unsafe extern "system" fn(*mut core::ffi::c_void, super::FECMethod) -> windows_core::HRESULT,
    pub OuterFECRate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::BinaryConvolutionCodeRate) -> windows_core::HRESULT,
    pub SetOuterFECRate: unsafe extern "system" fn(*mut core::ffi::c_void, super::BinaryConvolutionCodeRate) -> windows_core::HRESULT,
    pub Modulation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::ModulationType) -> windows_core::HRESULT,
    pub SetModulation: unsafe extern "system" fn(*mut core::ffi::c_void, super::ModulationType) -> windows_core::HRESULT,
    pub SymbolRate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetSymbolRate: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Clone: usize,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMPEG2Component, IMPEG2Component_Vtbl, 0x1493e353_1eb6_473c_802d_8e6b8ec9d2a9);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMPEG2Component {
    type Target = IComponent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMPEG2Component, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IComponent);
#[cfg(feature = "Win32_System_Com")]
impl IMPEG2Component {
    pub unsafe fn PID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).PID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetPID(&self, pid: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetPID)(windows_core::Interface::as_raw(self), pid).ok()
    }
    pub unsafe fn PCRPID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).PCRPID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetPCRPID(&self, pcrpid: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetPCRPID)(windows_core::Interface::as_raw(self), pcrpid).ok()
    }
    pub unsafe fn ProgramNumber(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ProgramNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetProgramNumber(&self, programnumber: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetProgramNumber)(windows_core::Interface::as_raw(self), programnumber).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMPEG2Component_Vtbl {
    pub base__: IComponent_Vtbl,
    pub PID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetPID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub PCRPID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetPCRPID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub ProgramNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetProgramNumber: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMPEG2ComponentType, IMPEG2ComponentType_Vtbl, 0x2c073d84_b51c_48c9_aa9f_68971e1f6e38);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMPEG2ComponentType {
    type Target = ILanguageComponentType;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMPEG2ComponentType, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IComponentType, ILanguageComponentType);
#[cfg(feature = "Win32_System_Com")]
impl IMPEG2ComponentType {
    pub unsafe fn StreamType(&self) -> windows_core::Result<super::MPEG2StreamType> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).StreamType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetStreamType(&self, mp2streamtype: super::MPEG2StreamType) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetStreamType)(windows_core::Interface::as_raw(self), mp2streamtype).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMPEG2ComponentType_Vtbl {
    pub base__: ILanguageComponentType_Vtbl,
    pub StreamType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::MPEG2StreamType) -> windows_core::HRESULT,
    pub SetStreamType: unsafe extern "system" fn(*mut core::ffi::c_void, super::MPEG2StreamType) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMPEG2TuneRequest, IMPEG2TuneRequest_Vtbl, 0xeb7d987f_8a01_42ad_b8ae_574deee44d1a);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMPEG2TuneRequest {
    type Target = ITuneRequest;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMPEG2TuneRequest, windows_core::IUnknown, super::super::super::System::Com::IDispatch, ITuneRequest);
#[cfg(feature = "Win32_System_Com")]
impl IMPEG2TuneRequest {
    pub unsafe fn TSID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TSID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetTSID(&self, tsid: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetTSID)(windows_core::Interface::as_raw(self), tsid).ok()
    }
    pub unsafe fn ProgNo(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ProgNo)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetProgNo(&self, progno: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetProgNo)(windows_core::Interface::as_raw(self), progno).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMPEG2TuneRequest_Vtbl {
    pub base__: ITuneRequest_Vtbl,
    pub TSID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetTSID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub ProgNo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetProgNo: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMPEG2TuneRequestFactory, IMPEG2TuneRequestFactory_Vtbl, 0x14e11abd_ee37_4893_9ea1_6964de933e39);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMPEG2TuneRequestFactory {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMPEG2TuneRequestFactory, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IMPEG2TuneRequestFactory {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CreateTuneRequest<P0>(&self, tuningspace: P0) -> windows_core::Result<IMPEG2TuneRequest>
    where
        P0: windows_core::Param<ITuningSpace>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CreateTuneRequest)(windows_core::Interface::as_raw(self), tuningspace.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMPEG2TuneRequestFactory_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub CreateTuneRequest: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CreateTuneRequest: usize,
}
windows_core::imp::define_interface!(IMPEG2TuneRequestSupport, IMPEG2TuneRequestSupport_Vtbl, 0x1b9d5fc3_5bbc_4b6c_bb18_b9d10e3eeebf);
impl core::ops::Deref for IMPEG2TuneRequestSupport {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IMPEG2TuneRequestSupport, windows_core::IUnknown);
impl IMPEG2TuneRequestSupport {}
#[repr(C)]
pub struct IMPEG2TuneRequestSupport_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
}
windows_core::imp::define_interface!(IMPEG2_TIF_CONTROL, IMPEG2_TIF_CONTROL_Vtbl, 0xf9bac2f9_4149_4916_b2ef_faa202326862);
impl core::ops::Deref for IMPEG2_TIF_CONTROL {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IMPEG2_TIF_CONTROL, windows_core::IUnknown);
impl IMPEG2_TIF_CONTROL {
    pub unsafe fn RegisterTIF<P0>(&self, punktif: P0, ppvregistrationcontext: *mut u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        (windows_core::Interface::vtable(self).RegisterTIF)(windows_core::Interface::as_raw(self), punktif.param().abi(), ppvregistrationcontext).ok()
    }
    pub unsafe fn UnregisterTIF(&self, pvregistrationcontext: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).UnregisterTIF)(windows_core::Interface::as_raw(self), pvregistrationcontext).ok()
    }
    pub unsafe fn AddPIDs(&self, ulcpids: u32, pulpids: *const u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).AddPIDs)(windows_core::Interface::as_raw(self), ulcpids, pulpids).ok()
    }
    pub unsafe fn DeletePIDs(&self, ulcpids: u32, pulpids: *const u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).DeletePIDs)(windows_core::Interface::as_raw(self), ulcpids, pulpids).ok()
    }
    pub unsafe fn GetPIDCount(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetPIDCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetPIDs(&self, pulcpids: *mut u32, pulpids: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetPIDs)(windows_core::Interface::as_raw(self), pulcpids, pulpids).ok()
    }
}
#[repr(C)]
pub struct IMPEG2_TIF_CONTROL_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub RegisterTIF: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub UnregisterTIF: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub AddPIDs: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32) -> windows_core::HRESULT,
    pub DeletePIDs: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32) -> windows_core::HRESULT,
    pub GetPIDCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetPIDs: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSEventBinder, IMSEventBinder_Vtbl, 0xc3a9f406_2222_436d_86d5_ba3229279efb);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSEventBinder {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSEventBinder, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IMSEventBinder {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Bind<P0, P1, P2>(&self, peventobject: P0, eventname: P1, eventhandler: P2) -> windows_core::Result<i32>
    where
        P0: windows_core::Param<super::super::super::System::Com::IDispatch>,
        P1: windows_core::Param<windows_core::BSTR>,
        P2: windows_core::Param<windows_core::BSTR>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Bind)(windows_core::Interface::as_raw(self), peventobject.param().abi(), eventname.param().abi(), eventhandler.param().abi(), &mut result__).map(|| result__)
    }
    pub unsafe fn Unbind(&self, cancelcookie: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Unbind)(windows_core::Interface::as_raw(self), cancelcookie).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSEventBinder_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Bind: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>, core::mem::MaybeUninit<windows_core::BSTR>, *mut i32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Bind: usize,
    pub Unbind: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidAnalogTuner, IMSVidAnalogTuner_Vtbl, 0x1c15d47e_911d_11d2_b632_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidAnalogTuner {
    type Target = IMSVidTuner;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidAnalogTuner, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidInputDevice, IMSVidVideoInputDevice, IMSVidTuner);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidAnalogTuner {
    pub unsafe fn Channel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Channel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetChannel(&self, channel: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetChannel)(windows_core::Interface::as_raw(self), channel).ok()
    }
    pub unsafe fn VideoFrequency(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).VideoFrequency)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn AudioFrequency(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).AudioFrequency)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn CountryCode(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CountryCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetCountryCode(&self, lcc: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetCountryCode)(windows_core::Interface::as_raw(self), lcc).ok()
    }
    pub unsafe fn SAP(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SAP)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetSAP<P0>(&self, fsapon: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetSAP)(windows_core::Interface::as_raw(self), fsapon.param().abi()).ok()
    }
    pub unsafe fn ChannelAvailable(&self, nchannel: i32, signalstrength: *mut i32) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ChannelAvailable)(windows_core::Interface::as_raw(self), nchannel, signalstrength, &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidAnalogTuner_Vtbl {
    pub base__: IMSVidTuner_Vtbl,
    pub Channel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetChannel: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub VideoFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub AudioFrequency: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub CountryCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetCountryCode: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub SAP: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetSAP: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub ChannelAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut i32, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidAnalogTuner2, IMSVidAnalogTuner2_Vtbl, 0x37647bf7_3dde_4cc8_a4dc_0d534d3d0037);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidAnalogTuner2 {
    type Target = IMSVidAnalogTuner;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidAnalogTuner2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidInputDevice, IMSVidVideoInputDevice, IMSVidTuner, IMSVidAnalogTuner);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidAnalogTuner2 {
    pub unsafe fn TVFormats(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TVFormats)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn TunerModes(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TunerModes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn NumAuxInputs(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).NumAuxInputs)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidAnalogTuner2_Vtbl {
    pub base__: IMSVidAnalogTuner_Vtbl,
    pub TVFormats: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub TunerModes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub NumAuxInputs: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidAnalogTunerEvent, IMSVidAnalogTunerEvent_Vtbl, 0x1c15d486_911d_11d2_b632_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidAnalogTunerEvent {
    type Target = IMSVidTunerEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidAnalogTunerEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidInputDeviceEvent, IMSVidTunerEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidAnalogTunerEvent {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidAnalogTunerEvent_Vtbl {
    pub base__: IMSVidTunerEvent_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidAudioRenderer, IMSVidAudioRenderer_Vtbl, 0x37b0353f_a4c8_11d2_b634_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidAudioRenderer {
    type Target = IMSVidOutputDevice;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidAudioRenderer, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidOutputDevice);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidAudioRenderer {
    pub unsafe fn SetVolume(&self, lvol: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetVolume)(windows_core::Interface::as_raw(self), lvol).ok()
    }
    pub unsafe fn Volume(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Volume)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetBalance(&self, lbal: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetBalance)(windows_core::Interface::as_raw(self), lbal).ok()
    }
    pub unsafe fn Balance(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Balance)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidAudioRenderer_Vtbl {
    pub base__: IMSVidOutputDevice_Vtbl,
    pub SetVolume: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub Volume: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetBalance: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub Balance: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidAudioRendererDevices, IMSVidAudioRendererDevices_Vtbl, 0xc5702cd4_9b79_11d3_b654_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidAudioRendererDevices {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidAudioRendererDevices, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidAudioRendererDevices {
    pub unsafe fn Count(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Count)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._NewEnum)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_Item<P0>(&self, v: P0) -> windows_core::Result<IMSVidAudioRenderer>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_Item)(windows_core::Interface::as_raw(self), v.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pdb: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidAudioRenderer>,
    {
        (windows_core::Interface::vtable(self).Add)(windows_core::Interface::as_raw(self), pdb.param().abi()).ok()
    }
    pub unsafe fn Remove<P0>(&self, v: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).Remove)(windows_core::Interface::as_raw(self), v.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidAudioRendererDevices_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub _NewEnum: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    _NewEnum: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get_Item: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_Item: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidAudioRendererEvent, IMSVidAudioRendererEvent_Vtbl, 0x37b03541_a4c8_11d2_b634_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidAudioRendererEvent {
    type Target = IMSVidOutputDeviceEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidAudioRendererEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDeviceEvent, IMSVidOutputDeviceEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidAudioRendererEvent {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidAudioRendererEvent_Vtbl {
    pub base__: IMSVidOutputDeviceEvent_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidAudioRendererEvent2, IMSVidAudioRendererEvent2_Vtbl, 0xe3f55729_353b_4c43_a028_50f79aa9a907);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidAudioRendererEvent2 {
    type Target = IMSVidAudioRendererEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidAudioRendererEvent2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDeviceEvent, IMSVidOutputDeviceEvent, IMSVidAudioRendererEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidAudioRendererEvent2 {
    pub unsafe fn AVDecAudioDualMono(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).AVDecAudioDualMono)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AVAudioSampleRate(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).AVAudioSampleRate)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AVAudioChannelConfig(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).AVAudioChannelConfig)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AVAudioChannelCount(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).AVAudioChannelCount)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AVDecCommonMeanBitRate(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).AVDecCommonMeanBitRate)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AVDDSurroundMode(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).AVDDSurroundMode)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AVDecCommonInputFormat(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).AVDecCommonInputFormat)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn AVDecCommonOutputFormat(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).AVDecCommonOutputFormat)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidAudioRendererEvent2_Vtbl {
    pub base__: IMSVidAudioRendererEvent_Vtbl,
    pub AVDecAudioDualMono: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AVAudioSampleRate: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AVAudioChannelConfig: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AVAudioChannelCount: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AVDecCommonMeanBitRate: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AVDDSurroundMode: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AVDecCommonInputFormat: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AVDecCommonOutputFormat: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidClosedCaptioning, IMSVidClosedCaptioning_Vtbl, 0x99652ea1_c1f7_414f_bb7b_1c967de75983);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidClosedCaptioning {
    type Target = IMSVidFeature;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidClosedCaptioning, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidFeature);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidClosedCaptioning {
    pub unsafe fn Enable(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Enable)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetEnable<P0>(&self, on: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetEnable)(windows_core::Interface::as_raw(self), on.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidClosedCaptioning_Vtbl {
    pub base__: IMSVidFeature_Vtbl,
    pub Enable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetEnable: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidClosedCaptioning2, IMSVidClosedCaptioning2_Vtbl, 0xe00cb864_a029_4310_9987_a873f5887d97);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidClosedCaptioning2 {
    type Target = IMSVidClosedCaptioning;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidClosedCaptioning2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidFeature, IMSVidClosedCaptioning);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidClosedCaptioning2 {
    pub unsafe fn Service(&self) -> windows_core::Result<MSVidCCService> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Service)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetService(&self, on: MSVidCCService) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetService)(windows_core::Interface::as_raw(self), on).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidClosedCaptioning2_Vtbl {
    pub base__: IMSVidClosedCaptioning_Vtbl,
    pub Service: unsafe extern "system" fn(*mut core::ffi::c_void, *mut MSVidCCService) -> windows_core::HRESULT,
    pub SetService: unsafe extern "system" fn(*mut core::ffi::c_void, MSVidCCService) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidClosedCaptioning3, IMSVidClosedCaptioning3_Vtbl, 0xc8638e8a_7625_4c51_9366_2f40a9831fc0);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidClosedCaptioning3 {
    type Target = IMSVidClosedCaptioning2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidClosedCaptioning3, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidFeature, IMSVidClosedCaptioning, IMSVidClosedCaptioning2);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidClosedCaptioning3 {
    pub unsafe fn TeleTextFilter(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TeleTextFilter)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidClosedCaptioning3_Vtbl {
    pub base__: IMSVidClosedCaptioning2_Vtbl,
    pub TeleTextFilter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidCompositionSegment, IMSVidCompositionSegment_Vtbl, 0x1c15d483_911d_11d2_b632_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidCompositionSegment {
    type Target = IMSVidGraphSegment;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidCompositionSegment, windows_core::IUnknown, super::super::super::System::Com::IPersist, IMSVidGraphSegment);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidCompositionSegment {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Compose<P0, P1>(&self, upstream: P0, downstream: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidGraphSegment>,
        P1: windows_core::Param<IMSVidGraphSegment>,
    {
        (windows_core::Interface::vtable(self).Compose)(windows_core::Interface::as_raw(self), upstream.param().abi(), downstream.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Up(&self) -> windows_core::Result<IMSVidGraphSegment> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Up)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Down(&self) -> windows_core::Result<IMSVidGraphSegment> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Down)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidCompositionSegment_Vtbl {
    pub base__: IMSVidGraphSegment_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Compose: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Compose: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Up: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Up: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Down: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Down: usize,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidCtl, IMSVidCtl_Vtbl, 0xb0edf162_910a_11d2_b632_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidCtl {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidCtl, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidCtl {
    pub unsafe fn AutoSize(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).AutoSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetAutoSize<P0>(&self, vbool: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetAutoSize)(windows_core::Interface::as_raw(self), vbool.param().abi()).ok()
    }
    pub unsafe fn BackColor(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).BackColor)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetBackColor(&self, backcolor: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetBackColor)(windows_core::Interface::as_raw(self), backcolor).ok()
    }
    pub unsafe fn Enabled(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Enabled)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetEnabled<P0>(&self, vbool: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetEnabled)(windows_core::Interface::as_raw(self), vbool.param().abi()).ok()
    }
    pub unsafe fn TabStop(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TabStop)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetTabStop<P0>(&self, vbool: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetTabStop)(windows_core::Interface::as_raw(self), vbool.param().abi()).ok()
    }
    pub unsafe fn Window(&self) -> windows_core::Result<super::super::super::Foundation::HWND> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Window)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn Refresh(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Refresh)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DisplaySize(&self) -> windows_core::Result<DisplaySizeList> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DisplaySize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetDisplaySize(&self, newvalue: DisplaySizeList) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetDisplaySize)(windows_core::Interface::as_raw(self), newvalue).ok()
    }
    pub unsafe fn MaintainAspectRatio(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MaintainAspectRatio)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMaintainAspectRatio<P0>(&self, newvalue: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetMaintainAspectRatio)(windows_core::Interface::as_raw(self), newvalue.param().abi()).ok()
    }
    pub unsafe fn ColorKey(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ColorKey)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetColorKey(&self, newvalue: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetColorKey)(windows_core::Interface::as_raw(self), newvalue).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_InputsAvailable<P0>(&self, categoryguid: P0) -> windows_core::Result<IMSVidInputDevices>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_InputsAvailable)(windows_core::Interface::as_raw(self), categoryguid.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_OutputsAvailable<P0>(&self, categoryguid: P0) -> windows_core::Result<IMSVidOutputDevices>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_OutputsAvailable)(windows_core::Interface::as_raw(self), categoryguid.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get__InputsAvailable(&self, categoryguid: *const windows_core::GUID) -> windows_core::Result<IMSVidInputDevices> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get__InputsAvailable)(windows_core::Interface::as_raw(self), categoryguid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get__OutputsAvailable(&self, categoryguid: *const windows_core::GUID) -> windows_core::Result<IMSVidOutputDevices> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get__OutputsAvailable)(windows_core::Interface::as_raw(self), categoryguid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn VideoRenderersAvailable(&self) -> windows_core::Result<IMSVidVideoRendererDevices> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).VideoRenderersAvailable)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn AudioRenderersAvailable(&self) -> windows_core::Result<IMSVidAudioRendererDevices> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).AudioRenderersAvailable)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn FeaturesAvailable(&self) -> windows_core::Result<IMSVidFeatures> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).FeaturesAvailable)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InputActive(&self) -> windows_core::Result<IMSVidInputDevice> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).InputActive)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetInputActive<P0>(&self, pval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidInputDevice>,
    {
        (windows_core::Interface::vtable(self).SetInputActive)(windows_core::Interface::as_raw(self), pval.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn OutputsActive(&self) -> windows_core::Result<IMSVidOutputDevices> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).OutputsActive)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetOutputsActive<P0>(&self, pval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidOutputDevices>,
    {
        (windows_core::Interface::vtable(self).SetOutputsActive)(windows_core::Interface::as_raw(self), pval.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn VideoRendererActive(&self) -> windows_core::Result<IMSVidVideoRenderer> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).VideoRendererActive)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetVideoRendererActive<P0>(&self, pval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidVideoRenderer>,
    {
        (windows_core::Interface::vtable(self).SetVideoRendererActive)(windows_core::Interface::as_raw(self), pval.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn AudioRendererActive(&self) -> windows_core::Result<IMSVidAudioRenderer> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).AudioRendererActive)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetAudioRendererActive<P0>(&self, pval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidAudioRenderer>,
    {
        (windows_core::Interface::vtable(self).SetAudioRendererActive)(windows_core::Interface::as_raw(self), pval.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn FeaturesActive(&self) -> windows_core::Result<IMSVidFeatures> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).FeaturesActive)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetFeaturesActive<P0>(&self, pval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidFeatures>,
    {
        (windows_core::Interface::vtable(self).SetFeaturesActive)(windows_core::Interface::as_raw(self), pval.param().abi()).ok()
    }
    pub unsafe fn State(&self) -> windows_core::Result<MSVidCtlStateList> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).State)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn View(&self, v: *const windows_core::VARIANT) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).View)(windows_core::Interface::as_raw(self), core::mem::transmute(v)).ok()
    }
    pub unsafe fn Build(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Build)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Pause(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Pause)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Run(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Run)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Stop(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Stop)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Decompose(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Decompose)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DisableVideo(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).DisableVideo)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DisableAudio(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).DisableAudio)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ViewNext(&self, v: *const windows_core::VARIANT) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ViewNext)(windows_core::Interface::as_raw(self), core::mem::transmute(v)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidCtl_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub AutoSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetAutoSize: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub BackColor: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetBackColor: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Enabled: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetEnabled: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub TabStop: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetTabStop: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub Window: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub Refresh: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DisplaySize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut DisplaySizeList) -> windows_core::HRESULT,
    pub SetDisplaySize: unsafe extern "system" fn(*mut core::ffi::c_void, DisplaySizeList) -> windows_core::HRESULT,
    pub MaintainAspectRatio: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetMaintainAspectRatio: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub ColorKey: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetColorKey: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub get_InputsAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_InputsAvailable: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get_OutputsAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_OutputsAvailable: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get__InputsAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get__InputsAvailable: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get__OutputsAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get__OutputsAvailable: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub VideoRenderersAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    VideoRenderersAvailable: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub AudioRenderersAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    AudioRenderersAvailable: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub FeaturesAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    FeaturesAvailable: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub InputActive: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InputActive: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetInputActive: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetInputActive: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub OutputsActive: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    OutputsActive: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetOutputsActive: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetOutputsActive: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub VideoRendererActive: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    VideoRendererActive: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetVideoRendererActive: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetVideoRendererActive: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub AudioRendererActive: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    AudioRendererActive: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetAudioRendererActive: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetAudioRendererActive: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub FeaturesActive: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    FeaturesActive: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetFeaturesActive: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetFeaturesActive: usize,
    pub State: unsafe extern "system" fn(*mut core::ffi::c_void, *mut MSVidCtlStateList) -> windows_core::HRESULT,
    pub View: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    pub Build: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Pause: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Run: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Stop: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Decompose: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DisableVideo: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DisableAudio: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ViewNext: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidDataServices, IMSVidDataServices_Vtbl, 0x334125c1_77e5_11d3_b653_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidDataServices {
    type Target = IMSVidFeature;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidDataServices, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidFeature);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidDataServices {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidDataServices_Vtbl {
    pub base__: IMSVidFeature_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidDataServicesEvent, IMSVidDataServicesEvent_Vtbl, 0x334125c2_77e5_11d3_b653_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidDataServicesEvent {
    type Target = IMSVidDeviceEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidDataServicesEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDeviceEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidDataServicesEvent {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidDataServicesEvent_Vtbl {
    pub base__: IMSVidDeviceEvent_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidDevice, IMSVidDevice_Vtbl, 0x1c15d47c_911d_11d2_b632_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidDevice {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidDevice, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidDevice {
    pub unsafe fn Name(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Name)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Status(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Status)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetPower<P0>(&self, power: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetPower)(windows_core::Interface::as_raw(self), power.param().abi()).ok()
    }
    pub unsafe fn Power(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Power)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn Category(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Category)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn ClassID(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ClassID)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn _Category(&self) -> windows_core::Result<windows_core::GUID> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._Category)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn _ClassID(&self) -> windows_core::Result<windows_core::GUID> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._ClassID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn IsEqualDevice<P0>(&self, device: P0) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>
    where
        P0: windows_core::Param<IMSVidDevice>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).IsEqualDevice)(windows_core::Interface::as_raw(self), device.param().abi(), &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidDevice_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Name: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub Status: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetPower: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub Power: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub Category: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub ClassID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub _Category: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub _ClassID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub IsEqualDevice: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    IsEqualDevice: usize,
}
windows_core::imp::define_interface!(IMSVidDevice2, IMSVidDevice2_Vtbl, 0x87bd2783_ebc0_478c_b4a0_e8e7f43ab78e);
impl core::ops::Deref for IMSVidDevice2 {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IMSVidDevice2, windows_core::IUnknown);
impl IMSVidDevice2 {
    pub unsafe fn DevicePath(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DevicePath)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IMSVidDevice2_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub DevicePath: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidDeviceEvent, IMSVidDeviceEvent_Vtbl, 0x1c15d480_911d_11d2_b632_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidDeviceEvent {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidDeviceEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidDeviceEvent {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn StateChange<P0>(&self, lpd: P0, oldstate: i32, newstate: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidDevice>,
    {
        (windows_core::Interface::vtable(self).StateChange)(windows_core::Interface::as_raw(self), lpd.param().abi(), oldstate, newstate).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidDeviceEvent_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub StateChange: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, i32, i32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    StateChange: usize,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidEVR, IMSVidEVR_Vtbl, 0x15e496ae_82a8_4cf9_a6b6_c561dc60398f);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidEVR {
    type Target = IMSVidVideoRenderer;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidEVR, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidOutputDevice, IMSVidVideoRenderer);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidEVR {
    #[cfg(feature = "Win32_Media_MediaFoundation")]
    pub unsafe fn Presenter(&self) -> windows_core::Result<super::super::MediaFoundation::IMFVideoPresenter> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Presenter)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_Media_MediaFoundation")]
    pub unsafe fn SetPresenter<P0>(&self, pallocpresent: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::MediaFoundation::IMFVideoPresenter>,
    {
        (windows_core::Interface::vtable(self).SetPresenter)(windows_core::Interface::as_raw(self), pallocpresent.param().abi()).ok()
    }
    pub unsafe fn SetSuppressEffects<P0>(&self, bsuppress: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetSuppressEffects)(windows_core::Interface::as_raw(self), bsuppress.param().abi()).ok()
    }
    pub unsafe fn SuppressEffects(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SuppressEffects)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidEVR_Vtbl {
    pub base__: IMSVidVideoRenderer_Vtbl,
    #[cfg(feature = "Win32_Media_MediaFoundation")]
    pub Presenter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Media_MediaFoundation"))]
    Presenter: usize,
    #[cfg(feature = "Win32_Media_MediaFoundation")]
    pub SetPresenter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Media_MediaFoundation"))]
    SetPresenter: usize,
    pub SetSuppressEffects: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SuppressEffects: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidEVREvent, IMSVidEVREvent_Vtbl, 0x349abb10_883c_4f22_8714_cecaeee45d62);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidEVREvent {
    type Target = IMSVidOutputDeviceEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidEVREvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDeviceEvent, IMSVidOutputDeviceEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidEVREvent {
    pub unsafe fn OnUserEvent(&self, leventcode: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).OnUserEvent)(windows_core::Interface::as_raw(self), leventcode).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidEVREvent_Vtbl {
    pub base__: IMSVidOutputDeviceEvent_Vtbl,
    pub OnUserEvent: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidEncoder, IMSVidEncoder_Vtbl, 0xc0020fd4_bee7_43d9_a495_9f213117103d);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidEncoder {
    type Target = IMSVidFeature;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidEncoder, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidFeature);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidEncoder {
    pub unsafe fn VideoEncoderInterface(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).VideoEncoderInterface)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn AudioEncoderInterface(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).AudioEncoderInterface)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidEncoder_Vtbl {
    pub base__: IMSVidFeature_Vtbl,
    pub VideoEncoderInterface: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AudioEncoderInterface: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidFeature, IMSVidFeature_Vtbl, 0x37b03547_a4c8_11d2_b634_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidFeature {
    type Target = IMSVidDevice;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidFeature, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidFeature {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidFeature_Vtbl {
    pub base__: IMSVidDevice_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidFeatureEvent, IMSVidFeatureEvent_Vtbl, 0x3dd2903c_e0aa_11d2_b63a_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidFeatureEvent {
    type Target = IMSVidDeviceEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidFeatureEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDeviceEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidFeatureEvent {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidFeatureEvent_Vtbl {
    pub base__: IMSVidDeviceEvent_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidFeatures, IMSVidFeatures_Vtbl, 0xc5702cd5_9b79_11d3_b654_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidFeatures {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidFeatures, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidFeatures {
    pub unsafe fn Count(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Count)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._NewEnum)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_Item<P0>(&self, v: P0) -> windows_core::Result<IMSVidFeature>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_Item)(windows_core::Interface::as_raw(self), v.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pdb: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidFeature>,
    {
        (windows_core::Interface::vtable(self).Add)(windows_core::Interface::as_raw(self), pdb.param().abi()).ok()
    }
    pub unsafe fn Remove<P0>(&self, v: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).Remove)(windows_core::Interface::as_raw(self), v.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidFeatures_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub _NewEnum: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    _NewEnum: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get_Item: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_Item: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidFilePlayback, IMSVidFilePlayback_Vtbl, 0x37b03539_a4c8_11d2_b634_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidFilePlayback {
    type Target = IMSVidPlayback;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidFilePlayback, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidInputDevice, IMSVidPlayback);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidFilePlayback {
    pub unsafe fn FileName(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).FileName)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetFileName<P0>(&self, filename: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetFileName)(windows_core::Interface::as_raw(self), filename.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidFilePlayback_Vtbl {
    pub base__: IMSVidPlayback_Vtbl,
    pub FileName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SetFileName: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidFilePlayback2, IMSVidFilePlayback2_Vtbl, 0x2f7e44af_6e52_4660_bc08_d8d542587d72);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidFilePlayback2 {
    type Target = IMSVidFilePlayback;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidFilePlayback2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidInputDevice, IMSVidPlayback, IMSVidFilePlayback);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidFilePlayback2 {
    pub unsafe fn Set_SourceFilter<P0>(&self, filename: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).Set_SourceFilter)(windows_core::Interface::as_raw(self), filename.param().abi()).ok()
    }
    pub unsafe fn Set__SourceFilter(&self, filename: windows_core::GUID) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Set__SourceFilter)(windows_core::Interface::as_raw(self), core::mem::transmute(filename)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidFilePlayback2_Vtbl {
    pub base__: IMSVidFilePlayback_Vtbl,
    pub Set_SourceFilter: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub Set__SourceFilter: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::GUID) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidFilePlaybackEvent, IMSVidFilePlaybackEvent_Vtbl, 0x37b0353a_a4c8_11d2_b634_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidFilePlaybackEvent {
    type Target = IMSVidPlaybackEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidFilePlaybackEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidInputDeviceEvent, IMSVidPlaybackEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidFilePlaybackEvent {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidFilePlaybackEvent_Vtbl {
    pub base__: IMSVidPlaybackEvent_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidGenericSink, IMSVidGenericSink_Vtbl, 0x6c29b41d_455b_4c33_963a_0d28e5e555ea);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidGenericSink {
    type Target = IMSVidOutputDevice;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidGenericSink, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidOutputDevice);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidGenericSink {
    pub unsafe fn SetSinkFilter<P0>(&self, bstrname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetSinkFilter)(windows_core::Interface::as_raw(self), bstrname.param().abi()).ok()
    }
    pub unsafe fn SinkStreams(&self) -> windows_core::Result<MSVidSinkStreams> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SinkStreams)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetSinkStreams(&self, streams: MSVidSinkStreams) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetSinkStreams)(windows_core::Interface::as_raw(self), streams).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidGenericSink_Vtbl {
    pub base__: IMSVidOutputDevice_Vtbl,
    pub SetSinkFilter: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SinkStreams: unsafe extern "system" fn(*mut core::ffi::c_void, *mut MSVidSinkStreams) -> windows_core::HRESULT,
    pub SetSinkStreams: unsafe extern "system" fn(*mut core::ffi::c_void, MSVidSinkStreams) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidGenericSink2, IMSVidGenericSink2_Vtbl, 0x6b5a28f3_47f1_4092_b168_60cabec08f1c);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidGenericSink2 {
    type Target = IMSVidGenericSink;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidGenericSink2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidOutputDevice, IMSVidGenericSink);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidGenericSink2 {
    pub unsafe fn AddFilter<P0>(&self, bstrname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).AddFilter)(windows_core::Interface::as_raw(self), bstrname.param().abi()).ok()
    }
    pub unsafe fn ResetFilterList(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ResetFilterList)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidGenericSink2_Vtbl {
    pub base__: IMSVidGenericSink_Vtbl,
    pub AddFilter: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub ResetFilterList: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidGraphSegment, IMSVidGraphSegment_Vtbl, 0x238dec54_adeb_4005_a349_f772b9afebc4);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidGraphSegment {
    type Target = super::super::super::System::Com::IPersist;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidGraphSegment, windows_core::IUnknown, super::super::super::System::Com::IPersist);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidGraphSegment {
    pub unsafe fn Init(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Init)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetInit<P0>(&self, pinit: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        (windows_core::Interface::vtable(self).SetInit)(windows_core::Interface::as_raw(self), pinit.param().abi()).ok()
    }
    pub unsafe fn EnumFilters(&self) -> windows_core::Result<super::IEnumFilters> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EnumFilters)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Container(&self) -> windows_core::Result<IMSVidGraphSegmentContainer> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Container)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetContainer<P0>(&self, pctl: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidGraphSegmentContainer>,
    {
        (windows_core::Interface::vtable(self).SetContainer)(windows_core::Interface::as_raw(self), pctl.param().abi()).ok()
    }
    pub unsafe fn Type(&self) -> windows_core::Result<MSVidSegmentType> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Type)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn Category(&self) -> windows_core::Result<windows_core::GUID> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Category)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn Build(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Build)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn PostBuild(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).PostBuild)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn PreRun(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).PreRun)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn PostRun(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).PostRun)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn PreStop(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).PreStop)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn PostStop(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).PostStop)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn OnEventNotify(&self, leventcode: i32, leventparm1: isize, leventparm2: isize) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).OnEventNotify)(windows_core::Interface::as_raw(self), leventcode, leventparm1, leventparm2).ok()
    }
    pub unsafe fn Decompose(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Decompose)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidGraphSegment_Vtbl {
    pub base__: super::super::super::System::Com::IPersist_Vtbl,
    pub Init: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInit: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumFilters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Container: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetContainer: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Type: unsafe extern "system" fn(*mut core::ffi::c_void, *mut MSVidSegmentType) -> windows_core::HRESULT,
    pub Category: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub Build: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PostBuild: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PreRun: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PostRun: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PreStop: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PostStop: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnEventNotify: unsafe extern "system" fn(*mut core::ffi::c_void, i32, isize, isize) -> windows_core::HRESULT,
    pub Decompose: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IMSVidGraphSegmentContainer, IMSVidGraphSegmentContainer_Vtbl, 0x3dd2903d_e0aa_11d2_b63a_00c04f79498e);
impl core::ops::Deref for IMSVidGraphSegmentContainer {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IMSVidGraphSegmentContainer, windows_core::IUnknown);
impl IMSVidGraphSegmentContainer {
    pub unsafe fn Graph(&self) -> windows_core::Result<super::IGraphBuilder> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Graph)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Input(&self) -> windows_core::Result<IMSVidGraphSegment> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Input)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Outputs(&self) -> windows_core::Result<IEnumMSVidGraphSegment> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Outputs)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn VideoRenderer(&self) -> windows_core::Result<IMSVidGraphSegment> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).VideoRenderer)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn AudioRenderer(&self) -> windows_core::Result<IMSVidGraphSegment> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).AudioRenderer)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Features(&self) -> windows_core::Result<IEnumMSVidGraphSegment> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Features)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Composites(&self) -> windows_core::Result<IEnumMSVidGraphSegment> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Composites)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn ParentContainer(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ParentContainer)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Decompose<P0>(&self, psegment: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidGraphSegment>,
    {
        (windows_core::Interface::vtable(self).Decompose)(windows_core::Interface::as_raw(self), psegment.param().abi()).ok()
    }
    pub unsafe fn IsWindowless(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).IsWindowless)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetFocus(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetFocus)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IMSVidGraphSegmentContainer_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Graph: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Input: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Input: usize,
    pub Outputs: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub VideoRenderer: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    VideoRenderer: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub AudioRenderer: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    AudioRenderer: usize,
    pub Features: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Composites: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ParentContainer: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Decompose: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Decompose: usize,
    pub IsWindowless: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetFocus: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IMSVidGraphSegmentUserInput, IMSVidGraphSegmentUserInput_Vtbl, 0x301c060e_20d9_4587_9b03_f82ed9a9943c);
impl core::ops::Deref for IMSVidGraphSegmentUserInput {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IMSVidGraphSegmentUserInput, windows_core::IUnknown);
impl IMSVidGraphSegmentUserInput {
    pub unsafe fn Click(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Click)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DblClick(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).DblClick)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn KeyDown(&self, keycode: *const i16, shiftstate: i16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).KeyDown)(windows_core::Interface::as_raw(self), keycode, shiftstate).ok()
    }
    pub unsafe fn KeyPress(&self, keyascii: *const i16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).KeyPress)(windows_core::Interface::as_raw(self), keyascii).ok()
    }
    pub unsafe fn KeyUp(&self, keycode: *const i16, shiftstate: i16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).KeyUp)(windows_core::Interface::as_raw(self), keycode, shiftstate).ok()
    }
    pub unsafe fn MouseDown(&self, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).MouseDown)(windows_core::Interface::as_raw(self), buttonstate, shiftstate, x, y).ok()
    }
    pub unsafe fn MouseMove(&self, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).MouseMove)(windows_core::Interface::as_raw(self), buttonstate, shiftstate, x, y).ok()
    }
    pub unsafe fn MouseUp(&self, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).MouseUp)(windows_core::Interface::as_raw(self), buttonstate, shiftstate, x, y).ok()
    }
}
#[repr(C)]
pub struct IMSVidGraphSegmentUserInput_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Click: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DblClick: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub KeyDown: unsafe extern "system" fn(*mut core::ffi::c_void, *const i16, i16) -> windows_core::HRESULT,
    pub KeyPress: unsafe extern "system" fn(*mut core::ffi::c_void, *const i16) -> windows_core::HRESULT,
    pub KeyUp: unsafe extern "system" fn(*mut core::ffi::c_void, *const i16, i16) -> windows_core::HRESULT,
    pub MouseDown: unsafe extern "system" fn(*mut core::ffi::c_void, i16, i16, i32, i32) -> windows_core::HRESULT,
    pub MouseMove: unsafe extern "system" fn(*mut core::ffi::c_void, i16, i16, i32, i32) -> windows_core::HRESULT,
    pub MouseUp: unsafe extern "system" fn(*mut core::ffi::c_void, i16, i16, i32, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidInputDevice, IMSVidInputDevice_Vtbl, 0x37b0353d_a4c8_11d2_b634_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidInputDevice {
    type Target = IMSVidDevice;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidInputDevice, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidInputDevice {
    pub unsafe fn IsViewable(&self, v: *const windows_core::VARIANT) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).IsViewable)(windows_core::Interface::as_raw(self), core::mem::transmute(v), &mut result__).map(|| result__)
    }
    pub unsafe fn View(&self, v: *const windows_core::VARIANT) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).View)(windows_core::Interface::as_raw(self), core::mem::transmute(v)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidInputDevice_Vtbl {
    pub base__: IMSVidDevice_Vtbl,
    pub IsViewable: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::mem::MaybeUninit<windows_core::VARIANT>, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub View: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidInputDeviceEvent, IMSVidInputDeviceEvent_Vtbl, 0x37b0353e_a4c8_11d2_b634_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidInputDeviceEvent {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidInputDeviceEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidInputDeviceEvent {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidInputDeviceEvent_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidInputDevices, IMSVidInputDevices_Vtbl, 0xc5702cd1_9b79_11d3_b654_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidInputDevices {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidInputDevices, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidInputDevices {
    pub unsafe fn Count(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Count)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._NewEnum)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_Item<P0>(&self, v: P0) -> windows_core::Result<IMSVidInputDevice>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_Item)(windows_core::Interface::as_raw(self), v.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pdb: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidInputDevice>,
    {
        (windows_core::Interface::vtable(self).Add)(windows_core::Interface::as_raw(self), pdb.param().abi()).ok()
    }
    pub unsafe fn Remove<P0>(&self, v: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).Remove)(windows_core::Interface::as_raw(self), v.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidInputDevices_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub _NewEnum: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    _NewEnum: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get_Item: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_Item: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidOutputDevice, IMSVidOutputDevice_Vtbl, 0x37b03546_a4c8_11d2_b634_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidOutputDevice {
    type Target = IMSVidDevice;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidOutputDevice, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidOutputDevice {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidOutputDevice_Vtbl {
    pub base__: IMSVidDevice_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidOutputDeviceEvent, IMSVidOutputDeviceEvent_Vtbl, 0x2e6a14e2_571c_11d3_b652_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidOutputDeviceEvent {
    type Target = IMSVidDeviceEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidOutputDeviceEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDeviceEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidOutputDeviceEvent {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidOutputDeviceEvent_Vtbl {
    pub base__: IMSVidDeviceEvent_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidOutputDevices, IMSVidOutputDevices_Vtbl, 0xc5702cd2_9b79_11d3_b654_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidOutputDevices {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidOutputDevices, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidOutputDevices {
    pub unsafe fn Count(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Count)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._NewEnum)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_Item<P0>(&self, v: P0) -> windows_core::Result<IMSVidOutputDevice>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_Item)(windows_core::Interface::as_raw(self), v.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pdb: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidOutputDevice>,
    {
        (windows_core::Interface::vtable(self).Add)(windows_core::Interface::as_raw(self), pdb.param().abi()).ok()
    }
    pub unsafe fn Remove<P0>(&self, v: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).Remove)(windows_core::Interface::as_raw(self), v.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidOutputDevices_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub _NewEnum: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    _NewEnum: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get_Item: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_Item: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidPlayback, IMSVidPlayback_Vtbl, 0x37b03538_a4c8_11d2_b634_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidPlayback {
    type Target = IMSVidInputDevice;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidPlayback, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidInputDevice);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidPlayback {
    pub unsafe fn EnableResetOnStop(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EnableResetOnStop)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetEnableResetOnStop<P0>(&self, newval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetEnableResetOnStop)(windows_core::Interface::as_raw(self), newval.param().abi()).ok()
    }
    pub unsafe fn Run(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Run)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Pause(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Pause)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Stop(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Stop)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn get_CanStep<P0>(&self, fbackwards: P0) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_CanStep)(windows_core::Interface::as_raw(self), fbackwards.param().abi(), &mut result__).map(|| result__)
    }
    pub unsafe fn Step(&self, lstep: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Step)(windows_core::Interface::as_raw(self), lstep).ok()
    }
    pub unsafe fn SetRate(&self, plrate: f64) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetRate)(windows_core::Interface::as_raw(self), plrate).ok()
    }
    pub unsafe fn Rate(&self) -> windows_core::Result<f64> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Rate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetCurrentPosition(&self, lposition: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetCurrentPosition)(windows_core::Interface::as_raw(self), lposition).ok()
    }
    pub unsafe fn CurrentPosition(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CurrentPosition)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetPositionMode(&self, lpositionmode: PositionModeList) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetPositionMode)(windows_core::Interface::as_raw(self), lpositionmode).ok()
    }
    pub unsafe fn PositionMode(&self) -> windows_core::Result<PositionModeList> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).PositionMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn Length(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Length)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidPlayback_Vtbl {
    pub base__: IMSVidInputDevice_Vtbl,
    pub EnableResetOnStop: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetEnableResetOnStop: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub Run: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Pause: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Stop: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub get_CanStep: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub Step: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub SetRate: unsafe extern "system" fn(*mut core::ffi::c_void, f64) -> windows_core::HRESULT,
    pub Rate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
    pub SetCurrentPosition: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub CurrentPosition: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetPositionMode: unsafe extern "system" fn(*mut core::ffi::c_void, PositionModeList) -> windows_core::HRESULT,
    pub PositionMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut PositionModeList) -> windows_core::HRESULT,
    pub Length: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidPlaybackEvent, IMSVidPlaybackEvent_Vtbl, 0x37b0353b_a4c8_11d2_b634_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidPlaybackEvent {
    type Target = IMSVidInputDeviceEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidPlaybackEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidInputDeviceEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidPlaybackEvent {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EndOfMedia<P0>(&self, lpd: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidPlayback>,
    {
        (windows_core::Interface::vtable(self).EndOfMedia)(windows_core::Interface::as_raw(self), lpd.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidPlaybackEvent_Vtbl {
    pub base__: IMSVidInputDeviceEvent_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub EndOfMedia: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    EndOfMedia: usize,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidRect, IMSVidRect_Vtbl, 0x7f5000a6_a440_47ca_8acc_c0e75531a2c2);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidRect {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidRect, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidRect {
    pub unsafe fn Top(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Top)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetTop(&self, topval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetTop)(windows_core::Interface::as_raw(self), topval).ok()
    }
    pub unsafe fn Left(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Left)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetLeft(&self, leftval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetLeft)(windows_core::Interface::as_raw(self), leftval).ok()
    }
    pub unsafe fn Width(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Width)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetWidth(&self, widthval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetWidth)(windows_core::Interface::as_raw(self), widthval).ok()
    }
    pub unsafe fn Height(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Height)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetHeight(&self, heightval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetHeight)(windows_core::Interface::as_raw(self), heightval).ok()
    }
    pub unsafe fn HWnd(&self) -> windows_core::Result<super::super::super::Foundation::HWND> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).HWnd)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetHWnd<P0>(&self, hwndval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HWND>,
    {
        (windows_core::Interface::vtable(self).SetHWnd)(windows_core::Interface::as_raw(self), hwndval.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetRect<P0>(&self, rectval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidRect>,
    {
        (windows_core::Interface::vtable(self).SetRect)(windows_core::Interface::as_raw(self), rectval.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidRect_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Top: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetTop: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub Left: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetLeft: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub Width: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetWidth: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub Height: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetHeight: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub HWnd: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub SetHWnd: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HWND) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub SetRect: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetRect: usize,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidStreamBufferRecordingControl, IMSVidStreamBufferRecordingControl_Vtbl, 0x160621aa_bbbc_4326_a824_c395aebc6e74);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidStreamBufferRecordingControl {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidStreamBufferRecordingControl, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferRecordingControl {
    pub unsafe fn StartTime(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).StartTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetStartTime(&self, rtstart: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetStartTime)(windows_core::Interface::as_raw(self), rtstart).ok()
    }
    pub unsafe fn StopTime(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).StopTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetStopTime(&self, rtstop: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetStopTime)(windows_core::Interface::as_raw(self), rtstop).ok()
    }
    pub unsafe fn RecordingStopped(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).RecordingStopped)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn RecordingStarted(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).RecordingStarted)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn RecordingType(&self) -> windows_core::Result<RecordingType> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).RecordingType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn RecordingAttribute(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).RecordingAttribute)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidStreamBufferRecordingControl_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub StartTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetStartTime: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub StopTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetStopTime: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub RecordingStopped: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub RecordingStarted: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub RecordingType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut RecordingType) -> windows_core::HRESULT,
    pub RecordingAttribute: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidStreamBufferSink, IMSVidStreamBufferSink_Vtbl, 0x159dbb45_cd1b_4dab_83ea_5cb1f4f21d07);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidStreamBufferSink {
    type Target = IMSVidOutputDevice;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidStreamBufferSink, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidOutputDevice);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSink {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ContentRecorder<P0>(&self, pszfilename: P0) -> windows_core::Result<IMSVidStreamBufferRecordingControl>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_ContentRecorder)(windows_core::Interface::as_raw(self), pszfilename.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ReferenceRecorder<P0>(&self, pszfilename: P0) -> windows_core::Result<IMSVidStreamBufferRecordingControl>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_ReferenceRecorder)(windows_core::Interface::as_raw(self), pszfilename.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SinkName(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SinkName)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetSinkName<P0>(&self, name: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetSinkName)(windows_core::Interface::as_raw(self), name.param().abi()).ok()
    }
    pub unsafe fn NameSetLock(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).NameSetLock)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SBESink(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SBESink)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidStreamBufferSink_Vtbl {
    pub base__: IMSVidOutputDevice_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ContentRecorder: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ContentRecorder: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ReferenceRecorder: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ReferenceRecorder: usize,
    pub SinkName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SetSinkName: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub NameSetLock: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SBESink: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidStreamBufferSink2, IMSVidStreamBufferSink2_Vtbl, 0x2ca9fc63_c131_4e5a_955a_544a47c67146);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidStreamBufferSink2 {
    type Target = IMSVidStreamBufferSink;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidStreamBufferSink2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidOutputDevice, IMSVidStreamBufferSink);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSink2 {
    pub unsafe fn UnlockProfile(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).UnlockProfile)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidStreamBufferSink2_Vtbl {
    pub base__: IMSVidStreamBufferSink_Vtbl,
    pub UnlockProfile: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidStreamBufferSink3, IMSVidStreamBufferSink3_Vtbl, 0x4f8721d7_7d59_4d8b_99f5_a77775586bd5);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidStreamBufferSink3 {
    type Target = IMSVidStreamBufferSink2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidStreamBufferSink3, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidOutputDevice, IMSVidStreamBufferSink, IMSVidStreamBufferSink2);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSink3 {
    pub unsafe fn SetMinSeek(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SetMinSeek)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn AudioCounter(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).AudioCounter)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn VideoCounter(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).VideoCounter)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn CCCounter(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CCCounter)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn WSTCounter(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).WSTCounter)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetAudioAnalysisFilter<P0>(&self, szclsid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetAudioAnalysisFilter)(windows_core::Interface::as_raw(self), szclsid.param().abi()).ok()
    }
    pub unsafe fn AudioAnalysisFilter(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).AudioAnalysisFilter)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Set_AudioAnalysisFilter(&self, guid: windows_core::GUID) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Set_AudioAnalysisFilter)(windows_core::Interface::as_raw(self), core::mem::transmute(guid)).ok()
    }
    pub unsafe fn _AudioAnalysisFilter(&self) -> windows_core::Result<windows_core::GUID> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._AudioAnalysisFilter)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetVideoAnalysisFilter<P0>(&self, szclsid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetVideoAnalysisFilter)(windows_core::Interface::as_raw(self), szclsid.param().abi()).ok()
    }
    pub unsafe fn VideoAnalysisFilter(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).VideoAnalysisFilter)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Set_VideoAnalysisFilter(&self, guid: windows_core::GUID) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Set_VideoAnalysisFilter)(windows_core::Interface::as_raw(self), core::mem::transmute(guid)).ok()
    }
    pub unsafe fn _VideoAnalysisFilter(&self) -> windows_core::Result<windows_core::GUID> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._VideoAnalysisFilter)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetDataAnalysisFilter<P0>(&self, szclsid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetDataAnalysisFilter)(windows_core::Interface::as_raw(self), szclsid.param().abi()).ok()
    }
    pub unsafe fn DataAnalysisFilter(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DataAnalysisFilter)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Set_DataAnalysisFilter(&self, guid: windows_core::GUID) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Set_DataAnalysisFilter)(windows_core::Interface::as_raw(self), core::mem::transmute(guid)).ok()
    }
    pub unsafe fn _DataAnalysisFilter(&self) -> windows_core::Result<windows_core::GUID> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._DataAnalysisFilter)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn LicenseErrorCode(&self) -> windows_core::Result<windows_core::HRESULT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).LicenseErrorCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidStreamBufferSink3_Vtbl {
    pub base__: IMSVidStreamBufferSink2_Vtbl,
    pub SetMinSeek: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub AudioCounter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub VideoCounter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CCCounter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub WSTCounter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetAudioAnalysisFilter: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub AudioAnalysisFilter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub Set_AudioAnalysisFilter: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::GUID) -> windows_core::HRESULT,
    pub _AudioAnalysisFilter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub SetVideoAnalysisFilter: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub VideoAnalysisFilter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub Set_VideoAnalysisFilter: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::GUID) -> windows_core::HRESULT,
    pub _VideoAnalysisFilter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub SetDataAnalysisFilter: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub DataAnalysisFilter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub Set_DataAnalysisFilter: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::GUID) -> windows_core::HRESULT,
    pub _DataAnalysisFilter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub LicenseErrorCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::HRESULT) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidStreamBufferSinkEvent, IMSVidStreamBufferSinkEvent_Vtbl, 0xf798a36b_b05b_4bbe_9703_eaea7d61cd51);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidStreamBufferSinkEvent {
    type Target = IMSVidOutputDeviceEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidStreamBufferSinkEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDeviceEvent, IMSVidOutputDeviceEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSinkEvent {
    pub unsafe fn CertificateFailure(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).CertificateFailure)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn CertificateSuccess(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).CertificateSuccess)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn WriteFailure(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).WriteFailure)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidStreamBufferSinkEvent_Vtbl {
    pub base__: IMSVidOutputDeviceEvent_Vtbl,
    pub CertificateFailure: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CertificateSuccess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub WriteFailure: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidStreamBufferSinkEvent2, IMSVidStreamBufferSinkEvent2_Vtbl, 0x3d7a5166_72d7_484b_a06f_286187b80ca1);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidStreamBufferSinkEvent2 {
    type Target = IMSVidStreamBufferSinkEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidStreamBufferSinkEvent2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDeviceEvent, IMSVidOutputDeviceEvent, IMSVidStreamBufferSinkEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSinkEvent2 {
    pub unsafe fn EncryptionOn(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).EncryptionOn)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn EncryptionOff(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).EncryptionOff)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidStreamBufferSinkEvent2_Vtbl {
    pub base__: IMSVidStreamBufferSinkEvent_Vtbl,
    pub EncryptionOn: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EncryptionOff: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidStreamBufferSinkEvent3, IMSVidStreamBufferSinkEvent3_Vtbl, 0x735ad8d5_c259_48e9_81e7_d27953665b23);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidStreamBufferSinkEvent3 {
    type Target = IMSVidStreamBufferSinkEvent2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidStreamBufferSinkEvent3, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDeviceEvent, IMSVidOutputDeviceEvent, IMSVidStreamBufferSinkEvent, IMSVidStreamBufferSinkEvent2);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSinkEvent3 {
    pub unsafe fn LicenseChange(&self, dwprot: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).LicenseChange)(windows_core::Interface::as_raw(self), dwprot).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidStreamBufferSinkEvent3_Vtbl {
    pub base__: IMSVidStreamBufferSinkEvent2_Vtbl,
    pub LicenseChange: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidStreamBufferSinkEvent4, IMSVidStreamBufferSinkEvent4_Vtbl, 0x1b01dcb0_daf0_412c_a5d1_590c7f62e2b8);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidStreamBufferSinkEvent4 {
    type Target = IMSVidStreamBufferSinkEvent3;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidStreamBufferSinkEvent4, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDeviceEvent, IMSVidOutputDeviceEvent, IMSVidStreamBufferSinkEvent, IMSVidStreamBufferSinkEvent2, IMSVidStreamBufferSinkEvent3);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSinkEvent4 {
    pub unsafe fn WriteFailureClear(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).WriteFailureClear)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidStreamBufferSinkEvent4_Vtbl {
    pub base__: IMSVidStreamBufferSinkEvent3_Vtbl,
    pub WriteFailureClear: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidStreamBufferSource, IMSVidStreamBufferSource_Vtbl, 0xeb0c8cf9_6950_4772_87b1_47d11cf3a02f);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidStreamBufferSource {
    type Target = IMSVidFilePlayback;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidStreamBufferSource, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidInputDevice, IMSVidPlayback, IMSVidFilePlayback);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSource {
    pub unsafe fn Start(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Start)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn RecordingAttribute(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).RecordingAttribute)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn CurrentRatings(&self, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, pbfenattr: *mut i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).CurrentRatings)(windows_core::Interface::as_raw(self), pensystem, penrating, pbfenattr).ok()
    }
    pub unsafe fn MaxRatingsLevel(&self, ensystem: EnTvRat_System, enrating: EnTvRat_GenericLevel, lbfenattr: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).MaxRatingsLevel)(windows_core::Interface::as_raw(self), ensystem, enrating, lbfenattr).ok()
    }
    pub unsafe fn SetBlockUnrated<P0>(&self, bblock: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetBlockUnrated)(windows_core::Interface::as_raw(self), bblock.param().abi()).ok()
    }
    pub unsafe fn SetUnratedDelay(&self, dwdelay: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetUnratedDelay)(windows_core::Interface::as_raw(self), dwdelay).ok()
    }
    pub unsafe fn SBESource(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SBESource)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidStreamBufferSource_Vtbl {
    pub base__: IMSVidFilePlayback_Vtbl,
    pub Start: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub RecordingAttribute: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CurrentRatings: unsafe extern "system" fn(*mut core::ffi::c_void, *mut EnTvRat_System, *mut EnTvRat_GenericLevel, *mut i32) -> windows_core::HRESULT,
    pub MaxRatingsLevel: unsafe extern "system" fn(*mut core::ffi::c_void, EnTvRat_System, EnTvRat_GenericLevel, i32) -> windows_core::HRESULT,
    pub SetBlockUnrated: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetUnratedDelay: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub SBESource: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidStreamBufferSource2, IMSVidStreamBufferSource2_Vtbl, 0xe4ba9059_b1ce_40d8_b9a0_d4ea4a9989d3);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidStreamBufferSource2 {
    type Target = IMSVidStreamBufferSource;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidStreamBufferSource2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidInputDevice, IMSVidPlayback, IMSVidFilePlayback, IMSVidStreamBufferSource);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSource2 {
    pub unsafe fn put_RateEx(&self, dwrate: f64, dwframespersecond: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).put_RateEx)(windows_core::Interface::as_raw(self), dwrate, dwframespersecond).ok()
    }
    pub unsafe fn AudioCounter(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).AudioCounter)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn VideoCounter(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).VideoCounter)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn CCCounter(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CCCounter)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn WSTCounter(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).WSTCounter)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidStreamBufferSource2_Vtbl {
    pub base__: IMSVidStreamBufferSource_Vtbl,
    pub put_RateEx: unsafe extern "system" fn(*mut core::ffi::c_void, f64, u32) -> windows_core::HRESULT,
    pub AudioCounter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub VideoCounter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CCCounter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub WSTCounter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidStreamBufferSourceEvent, IMSVidStreamBufferSourceEvent_Vtbl, 0x50ce8a7d_9c28_4da8_9042_cdfa7116f979);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidStreamBufferSourceEvent {
    type Target = IMSVidFilePlaybackEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidStreamBufferSourceEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidInputDeviceEvent, IMSVidPlaybackEvent, IMSVidFilePlaybackEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSourceEvent {
    pub unsafe fn CertificateFailure(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).CertificateFailure)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn CertificateSuccess(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).CertificateSuccess)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn RatingsBlocked(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RatingsBlocked)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn RatingsUnblocked(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RatingsUnblocked)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn RatingsChanged(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RatingsChanged)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn TimeHole(&self, streamoffsetms: i32, sizems: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).TimeHole)(windows_core::Interface::as_raw(self), streamoffsetms, sizems).ok()
    }
    pub unsafe fn StaleDataRead(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).StaleDataRead)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ContentBecomingStale(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ContentBecomingStale)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn StaleFileDeleted(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).StaleFileDeleted)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidStreamBufferSourceEvent_Vtbl {
    pub base__: IMSVidFilePlaybackEvent_Vtbl,
    pub CertificateFailure: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CertificateSuccess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RatingsBlocked: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RatingsUnblocked: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RatingsChanged: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TimeHole: unsafe extern "system" fn(*mut core::ffi::c_void, i32, i32) -> windows_core::HRESULT,
    pub StaleDataRead: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ContentBecomingStale: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StaleFileDeleted: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidStreamBufferSourceEvent2, IMSVidStreamBufferSourceEvent2_Vtbl, 0x7aef50ce_8e22_4ba8_bc06_a92a458b4ef2);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidStreamBufferSourceEvent2 {
    type Target = IMSVidStreamBufferSourceEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidStreamBufferSourceEvent2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidInputDeviceEvent, IMSVidPlaybackEvent, IMSVidFilePlaybackEvent, IMSVidStreamBufferSourceEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSourceEvent2 {
    pub unsafe fn RateChange(&self, qwnewrate: f64, qwoldrate: f64) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RateChange)(windows_core::Interface::as_raw(self), qwnewrate, qwoldrate).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidStreamBufferSourceEvent2_Vtbl {
    pub base__: IMSVidStreamBufferSourceEvent_Vtbl,
    pub RateChange: unsafe extern "system" fn(*mut core::ffi::c_void, f64, f64) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidStreamBufferSourceEvent3, IMSVidStreamBufferSourceEvent3_Vtbl, 0xceabd6ab_9b90_4570_adf1_3ce76e00a763);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidStreamBufferSourceEvent3 {
    type Target = IMSVidStreamBufferSourceEvent2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidStreamBufferSourceEvent3, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidInputDeviceEvent, IMSVidPlaybackEvent, IMSVidFilePlaybackEvent, IMSVidStreamBufferSourceEvent, IMSVidStreamBufferSourceEvent2);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSourceEvent3 {
    pub unsafe fn BroadcastEvent<P0>(&self, guid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).BroadcastEvent)(windows_core::Interface::as_raw(self), guid.param().abi()).ok()
    }
    pub unsafe fn BroadcastEventEx<P0>(&self, guid: P0, param1: u32, param2: u32, param3: u32, param4: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).BroadcastEventEx)(windows_core::Interface::as_raw(self), guid.param().abi(), param1, param2, param3, param4).ok()
    }
    pub unsafe fn COPPBlocked(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).COPPBlocked)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn COPPUnblocked(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).COPPUnblocked)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ContentPrimarilyAudio(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ContentPrimarilyAudio)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidStreamBufferSourceEvent3_Vtbl {
    pub base__: IMSVidStreamBufferSourceEvent2_Vtbl,
    pub BroadcastEvent: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub BroadcastEventEx: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>, u32, u32, u32, u32) -> windows_core::HRESULT,
    pub COPPBlocked: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub COPPUnblocked: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ContentPrimarilyAudio: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidStreamBufferV2SourceEvent, IMSVidStreamBufferV2SourceEvent_Vtbl, 0x49c771f9_41b2_4cf7_9f9a_a313a8f6027e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidStreamBufferV2SourceEvent {
    type Target = IMSVidFilePlaybackEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidStreamBufferV2SourceEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidInputDeviceEvent, IMSVidPlaybackEvent, IMSVidFilePlaybackEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferV2SourceEvent {
    pub unsafe fn RatingsChanged(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RatingsChanged)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn TimeHole(&self, streamoffsetms: i32, sizems: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).TimeHole)(windows_core::Interface::as_raw(self), streamoffsetms, sizems).ok()
    }
    pub unsafe fn StaleDataRead(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).StaleDataRead)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ContentBecomingStale(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ContentBecomingStale)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn StaleFileDeleted(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).StaleFileDeleted)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn RateChange(&self, qwnewrate: f64, qwoldrate: f64) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RateChange)(windows_core::Interface::as_raw(self), qwnewrate, qwoldrate).ok()
    }
    pub unsafe fn BroadcastEvent<P0>(&self, guid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).BroadcastEvent)(windows_core::Interface::as_raw(self), guid.param().abi()).ok()
    }
    pub unsafe fn BroadcastEventEx<P0>(&self, guid: P0, param1: u32, param2: u32, param3: u32, param4: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).BroadcastEventEx)(windows_core::Interface::as_raw(self), guid.param().abi(), param1, param2, param3, param4).ok()
    }
    pub unsafe fn ContentPrimarilyAudio(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ContentPrimarilyAudio)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidStreamBufferV2SourceEvent_Vtbl {
    pub base__: IMSVidFilePlaybackEvent_Vtbl,
    pub RatingsChanged: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TimeHole: unsafe extern "system" fn(*mut core::ffi::c_void, i32, i32) -> windows_core::HRESULT,
    pub StaleDataRead: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ContentBecomingStale: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StaleFileDeleted: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RateChange: unsafe extern "system" fn(*mut core::ffi::c_void, f64, f64) -> windows_core::HRESULT,
    pub BroadcastEvent: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub BroadcastEventEx: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>, u32, u32, u32, u32) -> windows_core::HRESULT,
    pub ContentPrimarilyAudio: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidTuner, IMSVidTuner_Vtbl, 0x1c15d47d_911d_11d2_b632_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidTuner {
    type Target = IMSVidVideoInputDevice;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidTuner, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidInputDevice, IMSVidVideoInputDevice);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidTuner {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Tune(&self) -> windows_core::Result<ITuneRequest> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Tune)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetTune<P0>(&self, ptr: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ITuneRequest>,
    {
        (windows_core::Interface::vtable(self).SetTune)(windows_core::Interface::as_raw(self), ptr.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TuningSpace(&self) -> windows_core::Result<ITuningSpace> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TuningSpace)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetTuningSpace<P0>(&self, plts: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ITuningSpace>,
    {
        (windows_core::Interface::vtable(self).SetTuningSpace)(windows_core::Interface::as_raw(self), plts.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidTuner_Vtbl {
    pub base__: IMSVidVideoInputDevice_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Tune: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Tune: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetTune: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetTune: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub TuningSpace: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    TuningSpace: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetTuningSpace: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetTuningSpace: usize,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidTunerEvent, IMSVidTunerEvent_Vtbl, 0x1c15d485_911d_11d2_b632_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidTunerEvent {
    type Target = IMSVidInputDeviceEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidTunerEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidInputDeviceEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidTunerEvent {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TuneChanged<P0>(&self, lpd: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidTuner>,
    {
        (windows_core::Interface::vtable(self).TuneChanged)(windows_core::Interface::as_raw(self), lpd.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidTunerEvent_Vtbl {
    pub base__: IMSVidInputDeviceEvent_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub TuneChanged: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    TuneChanged: usize,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidVMR9, IMSVidVMR9_Vtbl, 0xd58b0015_ebef_44bb_bbdd_3f3699d76ea1);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidVMR9 {
    type Target = IMSVidVideoRenderer;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidVMR9, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidOutputDevice, IMSVidVideoRenderer);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidVMR9 {
    pub unsafe fn Allocator_ID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Allocator_ID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetAllocator<P0>(&self, allocpresent: P0, id: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        (windows_core::Interface::vtable(self).SetAllocator)(windows_core::Interface::as_raw(self), allocpresent.param().abi(), id).ok()
    }
    pub unsafe fn SetSuppressEffects<P0>(&self, bsuppress: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetSuppressEffects)(windows_core::Interface::as_raw(self), bsuppress.param().abi()).ok()
    }
    pub unsafe fn SuppressEffects(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SuppressEffects)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn Allocator(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Allocator)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidVMR9_Vtbl {
    pub base__: IMSVidVideoRenderer_Vtbl,
    pub Allocator_ID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetAllocator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub SetSuppressEffects: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SuppressEffects: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub Allocator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidVRGraphSegment, IMSVidVRGraphSegment_Vtbl, 0xdd47de3f_9874_4f7b_8b22_7cb2688461e7);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidVRGraphSegment {
    type Target = IMSVidGraphSegment;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidVRGraphSegment, windows_core::IUnknown, super::super::super::System::Com::IPersist, IMSVidGraphSegment);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidVRGraphSegment {
    pub unsafe fn Set_VMRendererMode(&self, dwmode: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Set_VMRendererMode)(windows_core::Interface::as_raw(self), dwmode).ok()
    }
    pub unsafe fn SetOwner<P0>(&self, window: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HWND>,
    {
        (windows_core::Interface::vtable(self).SetOwner)(windows_core::Interface::as_raw(self), window.param().abi()).ok()
    }
    pub unsafe fn Owner(&self) -> windows_core::Result<super::super::super::Foundation::HWND> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Owner)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn UseOverlay(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).UseOverlay)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetUseOverlay<P0>(&self, useoverlayval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetUseOverlay)(windows_core::Interface::as_raw(self), useoverlayval.param().abi()).ok()
    }
    pub unsafe fn Visible(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Visible)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetVisible<P0>(&self, visible: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetVisible)(windows_core::Interface::as_raw(self), visible.param().abi()).ok()
    }
    pub unsafe fn ColorKey(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ColorKey)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetColorKey(&self, colorkey: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetColorKey)(windows_core::Interface::as_raw(self), colorkey).ok()
    }
    pub unsafe fn Source(&self) -> windows_core::Result<super::super::super::Foundation::RECT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Source)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetSource(&self, r: super::super::super::Foundation::RECT) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetSource)(windows_core::Interface::as_raw(self), core::mem::transmute(r)).ok()
    }
    pub unsafe fn Destination(&self) -> windows_core::Result<super::super::super::Foundation::RECT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Destination)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetDestination(&self, r: super::super::super::Foundation::RECT) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetDestination)(windows_core::Interface::as_raw(self), core::mem::transmute(r)).ok()
    }
    pub unsafe fn get_NativeSize(&self, sizeval: *mut super::super::super::Foundation::SIZE, aspectratio: *mut super::super::super::Foundation::SIZE) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).get_NativeSize)(windows_core::Interface::as_raw(self), sizeval, aspectratio).ok()
    }
    pub unsafe fn BorderColor(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).BorderColor)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetBorderColor(&self, color: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetBorderColor)(windows_core::Interface::as_raw(self), color).ok()
    }
    pub unsafe fn MaintainAspectRatio(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MaintainAspectRatio)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMaintainAspectRatio<P0>(&self, fmaintain: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetMaintainAspectRatio)(windows_core::Interface::as_raw(self), fmaintain.param().abi()).ok()
    }
    pub unsafe fn Refresh(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Refresh)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn DisplayChange(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).DisplayChange)(windows_core::Interface::as_raw(self)).ok()
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn RePaint<P0>(&self, hdc: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Graphics::Gdi::HDC>,
    {
        (windows_core::Interface::vtable(self).RePaint)(windows_core::Interface::as_raw(self), hdc.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidVRGraphSegment_Vtbl {
    pub base__: IMSVidGraphSegment_Vtbl,
    pub Set_VMRendererMode: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub SetOwner: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub Owner: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub UseOverlay: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetUseOverlay: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub Visible: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetVisible: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub ColorKey: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetColorKey: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Source: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::RECT) -> windows_core::HRESULT,
    pub SetSource: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::RECT) -> windows_core::HRESULT,
    pub Destination: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::RECT) -> windows_core::HRESULT,
    pub SetDestination: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::RECT) -> windows_core::HRESULT,
    pub get_NativeSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::SIZE, *mut super::super::super::Foundation::SIZE) -> windows_core::HRESULT,
    pub BorderColor: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetBorderColor: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub MaintainAspectRatio: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetMaintainAspectRatio: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub Refresh: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DisplayChange: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub RePaint: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Graphics::Gdi::HDC) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    RePaint: usize,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidVideoInputDevice, IMSVidVideoInputDevice_Vtbl, 0x1c15d47f_911d_11d2_b632_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidVideoInputDevice {
    type Target = IMSVidInputDevice;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidVideoInputDevice, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidInputDevice);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidVideoInputDevice {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidVideoInputDevice_Vtbl {
    pub base__: IMSVidInputDevice_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidVideoRenderer, IMSVidVideoRenderer_Vtbl, 0x37b03540_a4c8_11d2_b634_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidVideoRenderer {
    type Target = IMSVidOutputDevice;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidVideoRenderer, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidOutputDevice);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidVideoRenderer {
    pub unsafe fn CustomCompositorClass(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CustomCompositorClass)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetCustomCompositorClass<P0>(&self, compositorclsid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetCustomCompositorClass)(windows_core::Interface::as_raw(self), compositorclsid.param().abi()).ok()
    }
    pub unsafe fn _CustomCompositorClass(&self) -> windows_core::Result<windows_core::GUID> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._CustomCompositorClass)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn Set_CustomCompositorClass(&self, compositorclsid: *const windows_core::GUID) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Set_CustomCompositorClass)(windows_core::Interface::as_raw(self), compositorclsid).ok()
    }
    pub unsafe fn _CustomCompositor(&self) -> windows_core::Result<super::IVMRImageCompositor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._CustomCompositor)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Set_CustomCompositor<P0>(&self, compositor: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::IVMRImageCompositor>,
    {
        (windows_core::Interface::vtable(self).Set_CustomCompositor)(windows_core::Interface::as_raw(self), compositor.param().abi()).ok()
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn MixerBitmap(&self) -> windows_core::Result<super::super::super::System::Ole::IPictureDisp> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MixerBitmap)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn _MixerBitmap(&self) -> windows_core::Result<super::IVMRMixerBitmap> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._MixerBitmap)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetMixerBitmap<P0>(&self, mixerpicturedisp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::System::Ole::IPictureDisp>,
    {
        (windows_core::Interface::vtable(self).SetMixerBitmap)(windows_core::Interface::as_raw(self), mixerpicturedisp.param().abi()).ok()
    }
    #[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
    pub unsafe fn Set_MixerBitmap(&self, mixerpicture: *const super::VMRALPHABITMAP) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Set_MixerBitmap)(windows_core::Interface::as_raw(self), mixerpicture).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn MixerBitmapPositionRect(&self) -> windows_core::Result<IMSVidRect> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MixerBitmapPositionRect)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetMixerBitmapPositionRect<P0>(&self, rdest: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidRect>,
    {
        (windows_core::Interface::vtable(self).SetMixerBitmapPositionRect)(windows_core::Interface::as_raw(self), rdest.param().abi()).ok()
    }
    pub unsafe fn MixerBitmapOpacity(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MixerBitmapOpacity)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMixerBitmapOpacity(&self, opacity: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMixerBitmapOpacity)(windows_core::Interface::as_raw(self), opacity).ok()
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn SetupMixerBitmap<P0, P1>(&self, mixerpicturedisp: P0, opacity: i32, rdest: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::System::Ole::IPictureDisp>,
        P1: windows_core::Param<IMSVidRect>,
    {
        (windows_core::Interface::vtable(self).SetupMixerBitmap)(windows_core::Interface::as_raw(self), mixerpicturedisp.param().abi(), opacity, rdest.param().abi()).ok()
    }
    pub unsafe fn SourceSize(&self) -> windows_core::Result<SourceSizeList> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SourceSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetSourceSize(&self, newsize: SourceSizeList) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetSourceSize)(windows_core::Interface::as_raw(self), newsize).ok()
    }
    pub unsafe fn OverScan(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).OverScan)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetOverScan(&self, lpercent: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetOverScan)(windows_core::Interface::as_raw(self), lpercent).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn AvailableSourceRect(&self) -> windows_core::Result<IMSVidRect> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).AvailableSourceRect)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn MaxVidRect(&self) -> windows_core::Result<IMSVidRect> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MaxVidRect)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn MinVidRect(&self) -> windows_core::Result<IMSVidRect> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MinVidRect)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ClippedSourceRect(&self) -> windows_core::Result<IMSVidRect> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ClippedSourceRect)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetClippedSourceRect<P0>(&self, prect: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidRect>,
    {
        (windows_core::Interface::vtable(self).SetClippedSourceRect)(windows_core::Interface::as_raw(self), prect.param().abi()).ok()
    }
    pub unsafe fn UsingOverlay(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).UsingOverlay)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetUsingOverlay<P0>(&self, useoverlayval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetUsingOverlay)(windows_core::Interface::as_raw(self), useoverlayval.param().abi()).ok()
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn Capture(&self) -> windows_core::Result<super::super::super::System::Ole::IPictureDisp> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Capture)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn FramesPerSecond(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).FramesPerSecond)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn DecimateInput(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DecimateInput)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetDecimateInput<P0>(&self, pdeci: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetDecimateInput)(windows_core::Interface::as_raw(self), pdeci.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidVideoRenderer_Vtbl {
    pub base__: IMSVidOutputDevice_Vtbl,
    pub CustomCompositorClass: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SetCustomCompositorClass: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub _CustomCompositorClass: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub Set_CustomCompositorClass: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    pub _CustomCompositor: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Set_CustomCompositor: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub MixerBitmap: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    MixerBitmap: usize,
    pub _MixerBitmap: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub SetMixerBitmap: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    SetMixerBitmap: usize,
    #[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
    pub Set_MixerBitmap: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::VMRALPHABITMAP) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi")))]
    Set_MixerBitmap: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub MixerBitmapPositionRect: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    MixerBitmapPositionRect: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetMixerBitmapPositionRect: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetMixerBitmapPositionRect: usize,
    pub MixerBitmapOpacity: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMixerBitmapOpacity: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub SetupMixerBitmap: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, i32, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    SetupMixerBitmap: usize,
    pub SourceSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SourceSizeList) -> windows_core::HRESULT,
    pub SetSourceSize: unsafe extern "system" fn(*mut core::ffi::c_void, SourceSizeList) -> windows_core::HRESULT,
    pub OverScan: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetOverScan: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub AvailableSourceRect: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    AvailableSourceRect: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub MaxVidRect: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    MaxVidRect: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub MinVidRect: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    MinVidRect: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub ClippedSourceRect: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    ClippedSourceRect: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetClippedSourceRect: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetClippedSourceRect: usize,
    pub UsingOverlay: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetUsingOverlay: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub Capture: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    Capture: usize,
    pub FramesPerSecond: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub DecimateInput: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetDecimateInput: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidVideoRenderer2, IMSVidVideoRenderer2_Vtbl, 0x6bdd5c1e_2810_4159_94bc_05511ae8549b);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidVideoRenderer2 {
    type Target = IMSVidVideoRenderer;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidVideoRenderer2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidOutputDevice, IMSVidVideoRenderer);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidVideoRenderer2 {
    pub unsafe fn Allocator(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Allocator)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn _Allocator(&self) -> windows_core::Result<super::IVMRSurfaceAllocator> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._Allocator)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Allocator_ID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Allocator_ID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetAllocator<P0>(&self, allocpresent: P0, id: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        (windows_core::Interface::vtable(self).SetAllocator)(windows_core::Interface::as_raw(self), allocpresent.param().abi(), id).ok()
    }
    pub unsafe fn _SetAllocator2<P0>(&self, allocpresent: P0, id: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::IVMRSurfaceAllocator>,
    {
        (windows_core::Interface::vtable(self)._SetAllocator2)(windows_core::Interface::as_raw(self), allocpresent.param().abi(), id).ok()
    }
    pub unsafe fn SetSuppressEffects<P0>(&self, bsuppress: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetSuppressEffects)(windows_core::Interface::as_raw(self), bsuppress.param().abi()).ok()
    }
    pub unsafe fn SuppressEffects(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SuppressEffects)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidVideoRenderer2_Vtbl {
    pub base__: IMSVidVideoRenderer_Vtbl,
    pub Allocator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub _Allocator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Allocator_ID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetAllocator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub _SetAllocator2: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub SetSuppressEffects: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SuppressEffects: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidVideoRendererDevices, IMSVidVideoRendererDevices_Vtbl, 0xc5702cd3_9b79_11d3_b654_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidVideoRendererDevices {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidVideoRendererDevices, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidVideoRendererDevices {
    pub unsafe fn Count(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Count)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._NewEnum)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_Item<P0>(&self, v: P0) -> windows_core::Result<IMSVidVideoRenderer>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_Item)(windows_core::Interface::as_raw(self), v.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, pdb: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidVideoRenderer>,
    {
        (windows_core::Interface::vtable(self).Add)(windows_core::Interface::as_raw(self), pdb.param().abi()).ok()
    }
    pub unsafe fn Remove<P0>(&self, v: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).Remove)(windows_core::Interface::as_raw(self), v.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidVideoRendererDevices_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub _NewEnum: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    _NewEnum: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get_Item: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_Item: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub Remove: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidVideoRendererEvent, IMSVidVideoRendererEvent_Vtbl, 0x37b03545_a4c8_11d2_b634_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidVideoRendererEvent {
    type Target = IMSVidOutputDeviceEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidVideoRendererEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDeviceEvent, IMSVidOutputDeviceEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidVideoRendererEvent {
    pub unsafe fn OverlayUnavailable(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).OverlayUnavailable)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidVideoRendererEvent_Vtbl {
    pub base__: IMSVidOutputDeviceEvent_Vtbl,
    pub OverlayUnavailable: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidVideoRendererEvent2, IMSVidVideoRendererEvent2_Vtbl, 0x7145ed66_4730_4fdb_8a53_fde7508d3e5e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidVideoRendererEvent2 {
    type Target = IMSVidOutputDeviceEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidVideoRendererEvent2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDeviceEvent, IMSVidOutputDeviceEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidVideoRendererEvent2 {
    pub unsafe fn OverlayUnavailable(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).OverlayUnavailable)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidVideoRendererEvent2_Vtbl {
    pub base__: IMSVidOutputDeviceEvent_Vtbl,
    pub OverlayUnavailable: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidWebDVD, IMSVidWebDVD_Vtbl, 0xcf45f88b_ac56_4ee2_a73a_ed04e2885d3c);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidWebDVD {
    type Target = IMSVidPlayback;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidWebDVD, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidInputDevice, IMSVidPlayback);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidWebDVD {
    pub unsafe fn OnDVDEvent(&self, levent: i32, lparam1: isize, lparam2: isize) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).OnDVDEvent)(windows_core::Interface::as_raw(self), levent, lparam1, lparam2).ok()
    }
    pub unsafe fn PlayTitle(&self, ltitle: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).PlayTitle)(windows_core::Interface::as_raw(self), ltitle).ok()
    }
    pub unsafe fn PlayChapterInTitle(&self, ltitle: i32, lchapter: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).PlayChapterInTitle)(windows_core::Interface::as_raw(self), ltitle, lchapter).ok()
    }
    pub unsafe fn PlayChapter(&self, lchapter: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).PlayChapter)(windows_core::Interface::as_raw(self), lchapter).ok()
    }
    pub unsafe fn PlayChaptersAutoStop(&self, ltitle: i32, lstrchapter: i32, lchaptercount: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).PlayChaptersAutoStop)(windows_core::Interface::as_raw(self), ltitle, lstrchapter, lchaptercount).ok()
    }
    pub unsafe fn PlayAtTime<P0>(&self, strtime: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).PlayAtTime)(windows_core::Interface::as_raw(self), strtime.param().abi()).ok()
    }
    pub unsafe fn PlayAtTimeInTitle<P0>(&self, ltitle: i32, strtime: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).PlayAtTimeInTitle)(windows_core::Interface::as_raw(self), ltitle, strtime.param().abi()).ok()
    }
    pub unsafe fn PlayPeriodInTitleAutoStop<P0, P1>(&self, ltitle: i32, strstarttime: P0, strendtime: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
        P1: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).PlayPeriodInTitleAutoStop)(windows_core::Interface::as_raw(self), ltitle, strstarttime.param().abi(), strendtime.param().abi()).ok()
    }
    pub unsafe fn ReplayChapter(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ReplayChapter)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn PlayPrevChapter(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).PlayPrevChapter)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn PlayNextChapter(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).PlayNextChapter)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn StillOff(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).StillOff)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn get_AudioLanguage<P0>(&self, lstream: i32, fformat: P0) -> windows_core::Result<windows_core::BSTR>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_AudioLanguage)(windows_core::Interface::as_raw(self), lstream, fformat.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn ShowMenu(&self, menuid: DVDMenuIDConstants) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ShowMenu)(windows_core::Interface::as_raw(self), menuid).ok()
    }
    pub unsafe fn Resume(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Resume)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ReturnFromSubmenu(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ReturnFromSubmenu)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ButtonsAvailable(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ButtonsAvailable)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn CurrentButton(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CurrentButton)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SelectAndActivateButton(&self, lbutton: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SelectAndActivateButton)(windows_core::Interface::as_raw(self), lbutton).ok()
    }
    pub unsafe fn ActivateButton(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ActivateButton)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SelectRightButton(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SelectRightButton)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SelectLeftButton(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SelectLeftButton)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SelectLowerButton(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SelectLowerButton)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SelectUpperButton(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SelectUpperButton)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ActivateAtPosition(&self, xpos: i32, ypos: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ActivateAtPosition)(windows_core::Interface::as_raw(self), xpos, ypos).ok()
    }
    pub unsafe fn SelectAtPosition(&self, xpos: i32, ypos: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SelectAtPosition)(windows_core::Interface::as_raw(self), xpos, ypos).ok()
    }
    pub unsafe fn get_ButtonAtPosition(&self, xpos: i32, ypos: i32) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_ButtonAtPosition)(windows_core::Interface::as_raw(self), xpos, ypos, &mut result__).map(|| result__)
    }
    pub unsafe fn get_NumberOfChapters(&self, ltitle: i32) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_NumberOfChapters)(windows_core::Interface::as_raw(self), ltitle, &mut result__).map(|| result__)
    }
    pub unsafe fn TotalTitleTime(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TotalTitleTime)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn TitlesAvailable(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TitlesAvailable)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn VolumesAvailable(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).VolumesAvailable)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn CurrentVolume(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CurrentVolume)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn CurrentDiscSide(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CurrentDiscSide)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn CurrentDomain(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CurrentDomain)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn CurrentChapter(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CurrentChapter)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn CurrentTitle(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CurrentTitle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn CurrentTime(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CurrentTime)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn DVDTimeCode2bstr(&self, timecode: i32) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DVDTimeCode2bstr)(windows_core::Interface::as_raw(self), timecode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn DVDDirectory(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DVDDirectory)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetDVDDirectory<P0>(&self, newval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetDVDDirectory)(windows_core::Interface::as_raw(self), newval.param().abi()).ok()
    }
    pub unsafe fn IsSubpictureStreamEnabled(&self, lstream: i32) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).IsSubpictureStreamEnabled)(windows_core::Interface::as_raw(self), lstream, &mut result__).map(|| result__)
    }
    pub unsafe fn IsAudioStreamEnabled(&self, lstream: i32) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).IsAudioStreamEnabled)(windows_core::Interface::as_raw(self), lstream, &mut result__).map(|| result__)
    }
    pub unsafe fn CurrentSubpictureStream(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CurrentSubpictureStream)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetCurrentSubpictureStream(&self, newval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetCurrentSubpictureStream)(windows_core::Interface::as_raw(self), newval).ok()
    }
    pub unsafe fn get_SubpictureLanguage(&self, lstream: i32) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_SubpictureLanguage)(windows_core::Interface::as_raw(self), lstream, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn CurrentAudioStream(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CurrentAudioStream)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetCurrentAudioStream(&self, newval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetCurrentAudioStream)(windows_core::Interface::as_raw(self), newval).ok()
    }
    pub unsafe fn AudioStreamsAvailable(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).AudioStreamsAvailable)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn AnglesAvailable(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).AnglesAvailable)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn CurrentAngle(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CurrentAngle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetCurrentAngle(&self, newval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetCurrentAngle)(windows_core::Interface::as_raw(self), newval).ok()
    }
    pub unsafe fn SubpictureStreamsAvailable(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SubpictureStreamsAvailable)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SubpictureOn(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SubpictureOn)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetSubpictureOn<P0>(&self, newval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetSubpictureOn)(windows_core::Interface::as_raw(self), newval.param().abi()).ok()
    }
    pub unsafe fn DVDUniqueID(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DVDUniqueID)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn AcceptParentalLevelChange<P0, P1, P2>(&self, faccept: P0, strusername: P1, strpassword: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
        P1: windows_core::Param<windows_core::BSTR>,
        P2: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).AcceptParentalLevelChange)(windows_core::Interface::as_raw(self), faccept.param().abi(), strusername.param().abi(), strpassword.param().abi()).ok()
    }
    pub unsafe fn NotifyParentalLevelChange<P0>(&self, newval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).NotifyParentalLevelChange)(windows_core::Interface::as_raw(self), newval.param().abi()).ok()
    }
    pub unsafe fn SelectParentalCountry<P0, P1>(&self, lcountry: i32, strusername: P0, strpassword: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
        P1: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SelectParentalCountry)(windows_core::Interface::as_raw(self), lcountry, strusername.param().abi(), strpassword.param().abi()).ok()
    }
    pub unsafe fn SelectParentalLevel<P0, P1>(&self, lparentallevel: i32, strusername: P0, strpassword: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
        P1: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SelectParentalLevel)(windows_core::Interface::as_raw(self), lparentallevel, strusername.param().abi(), strpassword.param().abi()).ok()
    }
    pub unsafe fn get_TitleParentalLevels(&self, ltitle: i32) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_TitleParentalLevels)(windows_core::Interface::as_raw(self), ltitle, &mut result__).map(|| result__)
    }
    pub unsafe fn PlayerParentalCountry(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).PlayerParentalCountry)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn PlayerParentalLevel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).PlayerParentalLevel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn Eject(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Eject)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn UOPValid(&self, luop: i32) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).UOPValid)(windows_core::Interface::as_raw(self), luop, &mut result__).map(|| result__)
    }
    pub unsafe fn get_SPRM(&self, lindex: i32) -> windows_core::Result<i16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_SPRM)(windows_core::Interface::as_raw(self), lindex, &mut result__).map(|| result__)
    }
    pub unsafe fn get_GPRM(&self, lindex: i32) -> windows_core::Result<i16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_GPRM)(windows_core::Interface::as_raw(self), lindex, &mut result__).map(|| result__)
    }
    pub unsafe fn put_GPRM(&self, lindex: i32, svalue: i16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).put_GPRM)(windows_core::Interface::as_raw(self), lindex, svalue).ok()
    }
    pub unsafe fn get_DVDTextStringType(&self, llangindex: i32, lstringindex: i32) -> windows_core::Result<DVDTextStringType> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_DVDTextStringType)(windows_core::Interface::as_raw(self), llangindex, lstringindex, &mut result__).map(|| result__)
    }
    pub unsafe fn get_DVDTextString(&self, llangindex: i32, lstringindex: i32) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_DVDTextString)(windows_core::Interface::as_raw(self), llangindex, lstringindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn get_DVDTextNumberOfStrings(&self, llangindex: i32) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_DVDTextNumberOfStrings)(windows_core::Interface::as_raw(self), llangindex, &mut result__).map(|| result__)
    }
    pub unsafe fn DVDTextNumberOfLanguages(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DVDTextNumberOfLanguages)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn get_DVDTextLanguageLCID(&self, llangindex: i32) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_DVDTextLanguageLCID)(windows_core::Interface::as_raw(self), llangindex, &mut result__).map(|| result__)
    }
    pub unsafe fn RegionChange(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RegionChange)(windows_core::Interface::as_raw(self)).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn DVDAdm(&self) -> windows_core::Result<super::super::super::System::Com::IDispatch> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DVDAdm)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn DeleteBookmark(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).DeleteBookmark)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn RestoreBookmark(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RestoreBookmark)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SaveBookmark(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SaveBookmark)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SelectDefaultAudioLanguage(&self, lang: i32, ext: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SelectDefaultAudioLanguage)(windows_core::Interface::as_raw(self), lang, ext).ok()
    }
    pub unsafe fn SelectDefaultSubpictureLanguage(&self, lang: i32, ext: DVDSPExt) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SelectDefaultSubpictureLanguage)(windows_core::Interface::as_raw(self), lang, ext).ok()
    }
    pub unsafe fn PreferredSubpictureStream(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).PreferredSubpictureStream)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn DefaultMenuLanguage(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DefaultMenuLanguage)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetDefaultMenuLanguage(&self, lang: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetDefaultMenuLanguage)(windows_core::Interface::as_raw(self), lang).ok()
    }
    pub unsafe fn DefaultSubpictureLanguage(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DefaultSubpictureLanguage)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn DefaultAudioLanguage(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DefaultAudioLanguage)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn DefaultSubpictureLanguageExt(&self) -> windows_core::Result<DVDSPExt> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DefaultSubpictureLanguageExt)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn DefaultAudioLanguageExt(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DefaultAudioLanguageExt)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn get_LanguageFromLCID(&self, lcid: i32) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_LanguageFromLCID)(windows_core::Interface::as_raw(self), lcid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn KaraokeAudioPresentationMode(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).KaraokeAudioPresentationMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetKaraokeAudioPresentationMode(&self, newval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetKaraokeAudioPresentationMode)(windows_core::Interface::as_raw(self), newval).ok()
    }
    pub unsafe fn get_KaraokeChannelContent(&self, lstream: i32, lchan: i32) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_KaraokeChannelContent)(windows_core::Interface::as_raw(self), lstream, lchan, &mut result__).map(|| result__)
    }
    pub unsafe fn get_KaraokeChannelAssignment(&self, lstream: i32) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_KaraokeChannelAssignment)(windows_core::Interface::as_raw(self), lstream, &mut result__).map(|| result__)
    }
    pub unsafe fn RestorePreferredSettings(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RestorePreferredSettings)(windows_core::Interface::as_raw(self)).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_ButtonRect(&self, lbutton: i32) -> windows_core::Result<IMSVidRect> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_ButtonRect)(windows_core::Interface::as_raw(self), lbutton, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn DVDScreenInMouseCoordinates(&self) -> windows_core::Result<IMSVidRect> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DVDScreenInMouseCoordinates)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetDVDScreenInMouseCoordinates<P0>(&self, prect: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMSVidRect>,
    {
        (windows_core::Interface::vtable(self).SetDVDScreenInMouseCoordinates)(windows_core::Interface::as_raw(self), prect.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidWebDVD_Vtbl {
    pub base__: IMSVidPlayback_Vtbl,
    pub OnDVDEvent: unsafe extern "system" fn(*mut core::ffi::c_void, i32, isize, isize) -> windows_core::HRESULT,
    pub PlayTitle: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub PlayChapterInTitle: unsafe extern "system" fn(*mut core::ffi::c_void, i32, i32) -> windows_core::HRESULT,
    pub PlayChapter: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub PlayChaptersAutoStop: unsafe extern "system" fn(*mut core::ffi::c_void, i32, i32, i32) -> windows_core::HRESULT,
    pub PlayAtTime: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub PlayAtTimeInTitle: unsafe extern "system" fn(*mut core::ffi::c_void, i32, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub PlayPeriodInTitleAutoStop: unsafe extern "system" fn(*mut core::ffi::c_void, i32, core::mem::MaybeUninit<windows_core::BSTR>, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub ReplayChapter: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PlayPrevChapter: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PlayNextChapter: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StillOff: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub get_AudioLanguage: unsafe extern "system" fn(*mut core::ffi::c_void, i32, super::super::super::Foundation::VARIANT_BOOL, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub ShowMenu: unsafe extern "system" fn(*mut core::ffi::c_void, DVDMenuIDConstants) -> windows_core::HRESULT,
    pub Resume: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ReturnFromSubmenu: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ButtonsAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub CurrentButton: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SelectAndActivateButton: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub ActivateButton: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SelectRightButton: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SelectLeftButton: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SelectLowerButton: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SelectUpperButton: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ActivateAtPosition: unsafe extern "system" fn(*mut core::ffi::c_void, i32, i32) -> windows_core::HRESULT,
    pub SelectAtPosition: unsafe extern "system" fn(*mut core::ffi::c_void, i32, i32) -> windows_core::HRESULT,
    pub get_ButtonAtPosition: unsafe extern "system" fn(*mut core::ffi::c_void, i32, i32, *mut i32) -> windows_core::HRESULT,
    pub get_NumberOfChapters: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut i32) -> windows_core::HRESULT,
    pub TotalTitleTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub TitlesAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub VolumesAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub CurrentVolume: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub CurrentDiscSide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub CurrentDomain: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub CurrentChapter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub CurrentTitle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub CurrentTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub DVDTimeCode2bstr: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub DVDDirectory: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SetDVDDirectory: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub IsSubpictureStreamEnabled: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub IsAudioStreamEnabled: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub CurrentSubpictureStream: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetCurrentSubpictureStream: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub get_SubpictureLanguage: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub CurrentAudioStream: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetCurrentAudioStream: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub AudioStreamsAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub AnglesAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub CurrentAngle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetCurrentAngle: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub SubpictureStreamsAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SubpictureOn: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetSubpictureOn: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub DVDUniqueID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub AcceptParentalLevelChange: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL, core::mem::MaybeUninit<windows_core::BSTR>, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub NotifyParentalLevelChange: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SelectParentalCountry: unsafe extern "system" fn(*mut core::ffi::c_void, i32, core::mem::MaybeUninit<windows_core::BSTR>, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SelectParentalLevel: unsafe extern "system" fn(*mut core::ffi::c_void, i32, core::mem::MaybeUninit<windows_core::BSTR>, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub get_TitleParentalLevels: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut i32) -> windows_core::HRESULT,
    pub PlayerParentalCountry: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub PlayerParentalLevel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub Eject: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub UOPValid: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub get_SPRM: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut i16) -> windows_core::HRESULT,
    pub get_GPRM: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut i16) -> windows_core::HRESULT,
    pub put_GPRM: unsafe extern "system" fn(*mut core::ffi::c_void, i32, i16) -> windows_core::HRESULT,
    pub get_DVDTextStringType: unsafe extern "system" fn(*mut core::ffi::c_void, i32, i32, *mut DVDTextStringType) -> windows_core::HRESULT,
    pub get_DVDTextString: unsafe extern "system" fn(*mut core::ffi::c_void, i32, i32, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub get_DVDTextNumberOfStrings: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut i32) -> windows_core::HRESULT,
    pub DVDTextNumberOfLanguages: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub get_DVDTextLanguageLCID: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut i32) -> windows_core::HRESULT,
    pub RegionChange: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub DVDAdm: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    DVDAdm: usize,
    pub DeleteBookmark: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RestoreBookmark: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SaveBookmark: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SelectDefaultAudioLanguage: unsafe extern "system" fn(*mut core::ffi::c_void, i32, i32) -> windows_core::HRESULT,
    pub SelectDefaultSubpictureLanguage: unsafe extern "system" fn(*mut core::ffi::c_void, i32, DVDSPExt) -> windows_core::HRESULT,
    pub PreferredSubpictureStream: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub DefaultMenuLanguage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetDefaultMenuLanguage: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub DefaultSubpictureLanguage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub DefaultAudioLanguage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub DefaultSubpictureLanguageExt: unsafe extern "system" fn(*mut core::ffi::c_void, *mut DVDSPExt) -> windows_core::HRESULT,
    pub DefaultAudioLanguageExt: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub get_LanguageFromLCID: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub KaraokeAudioPresentationMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetKaraokeAudioPresentationMode: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub get_KaraokeChannelContent: unsafe extern "system" fn(*mut core::ffi::c_void, i32, i32, *mut i32) -> windows_core::HRESULT,
    pub get_KaraokeChannelAssignment: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut i32) -> windows_core::HRESULT,
    pub RestorePreferredSettings: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub get_ButtonRect: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_ButtonRect: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub DVDScreenInMouseCoordinates: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    DVDScreenInMouseCoordinates: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetDVDScreenInMouseCoordinates: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetDVDScreenInMouseCoordinates: usize,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidWebDVD2, IMSVidWebDVD2_Vtbl, 0x7027212f_ee9a_4a7c_8b67_f023714cdaff);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidWebDVD2 {
    type Target = IMSVidWebDVD;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidWebDVD2, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidInputDevice, IMSVidPlayback, IMSVidWebDVD);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidWebDVD2 {
    pub unsafe fn get_Bookmark(&self, ppdata: *mut *mut u8, pdatalength: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).get_Bookmark)(windows_core::Interface::as_raw(self), ppdata, pdatalength).ok()
    }
    pub unsafe fn put_Bookmark(&self, pdata: *const u8, dwdatalength: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).put_Bookmark)(windows_core::Interface::as_raw(self), pdata, dwdatalength).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidWebDVD2_Vtbl {
    pub base__: IMSVidWebDVD_Vtbl,
    pub get_Bookmark: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut u8, *mut u32) -> windows_core::HRESULT,
    pub put_Bookmark: unsafe extern "system" fn(*mut core::ffi::c_void, *const u8, u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidWebDVDAdm, IMSVidWebDVDAdm_Vtbl, 0xb8be681a_eb2c_47f0_b415_94d5452f0e05);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidWebDVDAdm {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidWebDVDAdm, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidWebDVDAdm {
    pub unsafe fn ChangePassword<P0, P1, P2>(&self, strusername: P0, strold: P1, strnew: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
        P1: windows_core::Param<windows_core::BSTR>,
        P2: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).ChangePassword)(windows_core::Interface::as_raw(self), strusername.param().abi(), strold.param().abi(), strnew.param().abi()).ok()
    }
    pub unsafe fn SaveParentalLevel<P0, P1>(&self, level: i32, strusername: P0, strpassword: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
        P1: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SaveParentalLevel)(windows_core::Interface::as_raw(self), level, strusername.param().abi(), strpassword.param().abi()).ok()
    }
    pub unsafe fn SaveParentalCountry<P0, P1>(&self, country: i32, strusername: P0, strpassword: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
        P1: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SaveParentalCountry)(windows_core::Interface::as_raw(self), country, strusername.param().abi(), strpassword.param().abi()).ok()
    }
    pub unsafe fn ConfirmPassword<P0, P1>(&self, strusername: P0, strpassword: P1) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>
    where
        P0: windows_core::Param<windows_core::BSTR>,
        P1: windows_core::Param<windows_core::BSTR>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ConfirmPassword)(windows_core::Interface::as_raw(self), strusername.param().abi(), strpassword.param().abi(), &mut result__).map(|| result__)
    }
    pub unsafe fn GetParentalLevel(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetParentalLevel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetParentalCountry(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetParentalCountry)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn DefaultAudioLCID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DefaultAudioLCID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetDefaultAudioLCID(&self, newval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetDefaultAudioLCID)(windows_core::Interface::as_raw(self), newval).ok()
    }
    pub unsafe fn DefaultSubpictureLCID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DefaultSubpictureLCID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetDefaultSubpictureLCID(&self, newval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetDefaultSubpictureLCID)(windows_core::Interface::as_raw(self), newval).ok()
    }
    pub unsafe fn DefaultMenuLCID(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DefaultMenuLCID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetDefaultMenuLCID(&self, newval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetDefaultMenuLCID)(windows_core::Interface::as_raw(self), newval).ok()
    }
    pub unsafe fn BookmarkOnStop(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).BookmarkOnStop)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetBookmarkOnStop<P0>(&self, newval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SetBookmarkOnStop)(windows_core::Interface::as_raw(self), newval.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidWebDVDAdm_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub ChangePassword: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>, core::mem::MaybeUninit<windows_core::BSTR>, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SaveParentalLevel: unsafe extern "system" fn(*mut core::ffi::c_void, i32, core::mem::MaybeUninit<windows_core::BSTR>, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SaveParentalCountry: unsafe extern "system" fn(*mut core::ffi::c_void, i32, core::mem::MaybeUninit<windows_core::BSTR>, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub ConfirmPassword: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>, core::mem::MaybeUninit<windows_core::BSTR>, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub GetParentalLevel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub GetParentalCountry: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub DefaultAudioLCID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetDefaultAudioLCID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub DefaultSubpictureLCID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetDefaultSubpictureLCID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub DefaultMenuLCID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetDefaultMenuLCID: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub BookmarkOnStop: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetBookmarkOnStop: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidWebDVDEvent, IMSVidWebDVDEvent_Vtbl, 0xb4f7a674_9b83_49cb_a357_c63b871be958);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidWebDVDEvent {
    type Target = IMSVidPlaybackEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidWebDVDEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidInputDeviceEvent, IMSVidPlaybackEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidWebDVDEvent {
    pub unsafe fn DVDNotify<P0, P1>(&self, leventcode: i32, lparam1: P0, lparam2: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
        P1: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).DVDNotify)(windows_core::Interface::as_raw(self), leventcode, lparam1.param().abi(), lparam2.param().abi()).ok()
    }
    pub unsafe fn PlayForwards<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).PlayForwards)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn PlayBackwards<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).PlayBackwards)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn ShowMenu<P0>(&self, menuid: DVDMenuIDConstants, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).ShowMenu)(windows_core::Interface::as_raw(self), menuid, benabled.param().abi()).ok()
    }
    pub unsafe fn Resume<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).Resume)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn SelectOrActivateButton<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).SelectOrActivateButton)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn StillOff<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).StillOff)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn PauseOn<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).PauseOn)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn ChangeCurrentAudioStream<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).ChangeCurrentAudioStream)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn ChangeCurrentSubpictureStream<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).ChangeCurrentSubpictureStream)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn ChangeCurrentAngle<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).ChangeCurrentAngle)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn PlayAtTimeInTitle<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).PlayAtTimeInTitle)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn PlayAtTime<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).PlayAtTime)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn PlayChapterInTitle<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).PlayChapterInTitle)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn PlayChapter<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).PlayChapter)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn ReplayChapter<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).ReplayChapter)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn PlayNextChapter<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).PlayNextChapter)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn Stop<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).Stop)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn ReturnFromSubmenu<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).ReturnFromSubmenu)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn PlayTitle<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).PlayTitle)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn PlayPrevChapter<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).PlayPrevChapter)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn ChangeKaraokePresMode<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).ChangeKaraokePresMode)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
    pub unsafe fn ChangeVideoPresMode<P0>(&self, benabled: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).ChangeVideoPresMode)(windows_core::Interface::as_raw(self), benabled.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidWebDVDEvent_Vtbl {
    pub base__: IMSVidPlaybackEvent_Vtbl,
    pub DVDNotify: unsafe extern "system" fn(*mut core::ffi::c_void, i32, core::mem::MaybeUninit<windows_core::VARIANT>, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    pub PlayForwards: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub PlayBackwards: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub ShowMenu: unsafe extern "system" fn(*mut core::ffi::c_void, DVDMenuIDConstants, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub Resume: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SelectOrActivateButton: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub StillOff: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub PauseOn: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub ChangeCurrentAudioStream: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub ChangeCurrentSubpictureStream: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub ChangeCurrentAngle: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub PlayAtTimeInTitle: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub PlayAtTime: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub PlayChapterInTitle: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub PlayChapter: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub ReplayChapter: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub PlayNextChapter: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub Stop: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub ReturnFromSubmenu: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub PlayTitle: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub PlayPrevChapter: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub ChangeKaraokePresMode: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub ChangeVideoPresMode: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidXDS, IMSVidXDS_Vtbl, 0x11ebc158_e712_4d1f_8bb3_01ed5274c4ce);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidXDS {
    type Target = IMSVidFeature;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidXDS, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDevice, IMSVidFeature);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidXDS {
    pub unsafe fn ChannelChangeInterface(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).ChannelChangeInterface)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidXDS_Vtbl {
    pub base__: IMSVidFeature_Vtbl,
    pub ChannelChangeInterface: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IMSVidXDSEvent, IMSVidXDSEvent_Vtbl, 0x6db2317d_3b23_41ec_ba4b_701f407eaf3a);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IMSVidXDSEvent {
    type Target = IMSVidFeatureEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IMSVidXDSEvent, windows_core::IUnknown, super::super::super::System::Com::IDispatch, IMSVidDeviceEvent, IMSVidFeatureEvent);
#[cfg(feature = "Win32_System_Com")]
impl IMSVidXDSEvent {
    pub unsafe fn RatingChange(&self, prevratingsystem: EnTvRat_System, prevlevel: EnTvRat_GenericLevel, prevattributes: BfEnTvRat_GenericAttributes, newratingsystem: EnTvRat_System, newlevel: EnTvRat_GenericLevel, newattributes: BfEnTvRat_GenericAttributes) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RatingChange)(windows_core::Interface::as_raw(self), prevratingsystem, prevlevel, prevattributes, newratingsystem, newlevel, newattributes).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IMSVidXDSEvent_Vtbl {
    pub base__: IMSVidFeatureEvent_Vtbl,
    pub RatingChange: unsafe extern "system" fn(*mut core::ffi::c_void, EnTvRat_System, EnTvRat_GenericLevel, BfEnTvRat_GenericAttributes, EnTvRat_System, EnTvRat_GenericLevel, BfEnTvRat_GenericAttributes) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IMceBurnerControl, IMceBurnerControl_Vtbl, 0x5a86b91a_e71e_46c1_88a9_9bb338710552);
impl core::ops::Deref for IMceBurnerControl {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IMceBurnerControl, windows_core::IUnknown);
impl IMceBurnerControl {
    pub unsafe fn GetBurnerNoDecryption(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetBurnerNoDecryption)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IMceBurnerControl_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetBurnerNoDecryption: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IMpeg2Data, IMpeg2Data_Vtbl, 0x9b396d40_f380_4e3c_a514_1a82bf6ebfe6);
impl core::ops::Deref for IMpeg2Data {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IMpeg2Data, windows_core::IUnknown);
impl IMpeg2Data {
    pub unsafe fn GetSection(&self, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, dwtimeout: u32) -> windows_core::Result<ISectionList> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSection)(windows_core::Interface::as_raw(self), pid, tid, pfilter, dwtimeout, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTable(&self, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, dwtimeout: u32) -> windows_core::Result<ISectionList> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTable)(windows_core::Interface::as_raw(self), pid, tid, pfilter, dwtimeout, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetStreamOfSections<P0>(&self, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, hdatareadyevent: P0) -> windows_core::Result<IMpeg2Stream>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetStreamOfSections)(windows_core::Interface::as_raw(self), pid, tid, pfilter, hdatareadyevent.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IMpeg2Data_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetSection: unsafe extern "system" fn(*mut core::ffi::c_void, u16, u8, *const MPEG2_FILTER, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTable: unsafe extern "system" fn(*mut core::ffi::c_void, u16, u8, *const MPEG2_FILTER, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetStreamOfSections: unsafe extern "system" fn(*mut core::ffi::c_void, u16, u8, *const MPEG2_FILTER, super::super::super::Foundation::HANDLE, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IMpeg2Stream, IMpeg2Stream_Vtbl, 0x400cc286_32a0_4ce4_9041_39571125a635);
impl core::ops::Deref for IMpeg2Stream {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IMpeg2Stream, windows_core::IUnknown);
impl IMpeg2Stream {
    pub unsafe fn Initialize<P0, P1>(&self, requesttype: MPEG_REQUEST_TYPE, pmpeg2data: P0, pcontext: *const MPEG_CONTEXT, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, hdatareadyevent: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMpeg2Data>,
        P1: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), requesttype, pmpeg2data.param().abi(), pcontext, pid, tid, pfilter, hdatareadyevent.param().abi()).ok()
    }
    pub unsafe fn SupplyDataBuffer(&self, pstreambuffer: *const MPEG_STREAM_BUFFER) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SupplyDataBuffer)(windows_core::Interface::as_raw(self), pstreambuffer).ok()
    }
}
#[repr(C)]
pub struct IMpeg2Stream_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, MPEG_REQUEST_TYPE, *mut core::ffi::c_void, *const MPEG_CONTEXT, u16, u8, *const MPEG2_FILTER, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub SupplyDataBuffer: unsafe extern "system" fn(*mut core::ffi::c_void, *const MPEG_STREAM_BUFFER) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IMpeg2TableFilter, IMpeg2TableFilter_Vtbl, 0xbdcdd913_9ecd_4fb2_81ae_adf747ea75a5);
impl core::ops::Deref for IMpeg2TableFilter {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IMpeg2TableFilter, windows_core::IUnknown);
impl IMpeg2TableFilter {
    pub unsafe fn AddPID(&self, p: u16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).AddPID)(windows_core::Interface::as_raw(self), p).ok()
    }
    pub unsafe fn AddTable(&self, p: u16, t: u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).AddTable)(windows_core::Interface::as_raw(self), p, t).ok()
    }
    pub unsafe fn AddExtension(&self, p: u16, t: u8, e: u16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).AddExtension)(windows_core::Interface::as_raw(self), p, t, e).ok()
    }
    pub unsafe fn RemovePID(&self, p: u16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RemovePID)(windows_core::Interface::as_raw(self), p).ok()
    }
    pub unsafe fn RemoveTable(&self, p: u16, t: u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RemoveTable)(windows_core::Interface::as_raw(self), p, t).ok()
    }
    pub unsafe fn RemoveExtension(&self, p: u16, t: u8, e: u16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).RemoveExtension)(windows_core::Interface::as_raw(self), p, t, e).ok()
    }
}
#[repr(C)]
pub struct IMpeg2TableFilter_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AddPID: unsafe extern "system" fn(*mut core::ffi::c_void, u16) -> windows_core::HRESULT,
    pub AddTable: unsafe extern "system" fn(*mut core::ffi::c_void, u16, u8) -> windows_core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u16, u8, u16) -> windows_core::HRESULT,
    pub RemovePID: unsafe extern "system" fn(*mut core::ffi::c_void, u16) -> windows_core::HRESULT,
    pub RemoveTable: unsafe extern "system" fn(*mut core::ffi::c_void, u16, u8) -> windows_core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u16, u8, u16) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IPAT, IPAT_Vtbl, 0x6623b511_4b5f_43c3_9a01_e8ff84188060);
impl core::ops::Deref for IPAT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPAT, windows_core::IUnknown);
impl IPAT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetTransportStreamId(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTransportStreamId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordProgramNumber(&self, dwindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordProgramNumber)(windows_core::Interface::as_raw(self), dwindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordProgramMapPid(&self, dwindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordProgramMapPid)(windows_core::Interface::as_raw(self), dwindex, &mut result__).map(|| result__)
    }
    pub unsafe fn FindRecordProgramMapPid(&self, wprogramnumber: u16) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).FindRecordProgramMapPid)(windows_core::Interface::as_raw(self), wprogramnumber, &mut result__).map(|| result__)
    }
    pub unsafe fn RegisterForNextTable<P0>(&self, hnexttableavailable: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForNextTable)(windows_core::Interface::as_raw(self), hnexttableavailable.param().abi()).ok()
    }
    pub unsafe fn GetNextTable(&self) -> windows_core::Result<IPAT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNextTable)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn RegisterForWhenCurrent<P0>(&self, hnexttableiscurrent: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForWhenCurrent)(windows_core::Interface::as_raw(self), hnexttableiscurrent.param().abi()).ok()
    }
    pub unsafe fn ConvertNextToCurrent(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ConvertNextToCurrent)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IPAT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTransportStreamId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordProgramNumber: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordProgramMapPid: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub FindRecordProgramMapPid: unsafe extern "system" fn(*mut core::ffi::c_void, u16, *mut u16) -> windows_core::HRESULT,
    pub RegisterForNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub GetNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForWhenCurrent: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub ConvertNextToCurrent: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IPBDAAttributesDescriptor, IPBDAAttributesDescriptor_Vtbl, 0x313b3620_3263_45a6_9533_968befbeac03);
impl core::ops::Deref for IPBDAAttributesDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPBDAAttributesDescriptor, windows_core::IUnknown);
impl IPBDAAttributesDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetAttributePayload(&self, ppbattributebuffer: *mut *mut u8, pdwattributelength: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetAttributePayload)(windows_core::Interface::as_raw(self), ppbattributebuffer, pdwattributelength).ok()
    }
}
#[repr(C)]
pub struct IPBDAAttributesDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetAttributePayload: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut u8, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IPBDAEntitlementDescriptor, IPBDAEntitlementDescriptor_Vtbl, 0x22632497_0de3_4587_aadc_d8d99017e760);
impl core::ops::Deref for IPBDAEntitlementDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPBDAEntitlementDescriptor, windows_core::IUnknown);
impl IPBDAEntitlementDescriptor {
    pub unsafe fn GetTag(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTag)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLength(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetToken(&self, ppbtokenbuffer: *mut *mut u8, pdwtokenlength: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetToken)(windows_core::Interface::as_raw(self), ppbtokenbuffer, pdwtokenlength).ok()
    }
}
#[repr(C)]
pub struct IPBDAEntitlementDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetToken: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut u8, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IPBDASiParser, IPBDASiParser_Vtbl, 0x9de49a74_aba2_4a18_93e1_21f17f95c3c3);
impl core::ops::Deref for IPBDASiParser {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPBDASiParser, windows_core::IUnknown);
impl IPBDASiParser {
    pub unsafe fn Initialize<P0>(&self, punk: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), punk.param().abi()).ok()
    }
    pub unsafe fn GetEIT(&self, dwsize: u32, pbuffer: *const u8) -> windows_core::Result<IPBDA_EIT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEIT)(windows_core::Interface::as_raw(self), dwsize, pbuffer, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetServices(&self, dwsize: u32, pbuffer: *const u8) -> windows_core::Result<IPBDA_Services> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServices)(windows_core::Interface::as_raw(self), dwsize, pbuffer, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IPBDASiParser_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetEIT: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u8, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetServices: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u8, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IPBDA_EIT, IPBDA_EIT_Vtbl, 0xa35f2dea_098f_4ebd_984c_2bd4c3c8ce0a);
impl core::ops::Deref for IPBDA_EIT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPBDA_EIT, windows_core::IUnknown);
impl IPBDA_EIT {
    pub unsafe fn Initialize(&self, pbuffer: &[u8]) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), pbuffer.len().try_into().unwrap(), core::mem::transmute(pbuffer.as_ptr())).ok()
    }
    pub unsafe fn GetTableId(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetServiceIdx(&self) -> windows_core::Result<u64> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetServiceIdx)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordEventId(&self, dwrecordindex: u32) -> windows_core::Result<u64> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordEventId)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordStartTime(&self, dwrecordindex: u32) -> windows_core::Result<MPEG_DATE_AND_TIME> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordStartTime)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDuration(&self, dwrecordindex: u32) -> windows_core::Result<MPEG_TIME> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDuration)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfDescriptors)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptorByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordDescriptorByTag)(windows_core::Interface::as_raw(self), dwrecordindex, btag, pdwcookie, core::mem::transmute(ppdescriptor)).ok()
    }
}
#[repr(C)]
pub struct IPBDA_EIT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u8) -> windows_core::HRESULT,
    pub GetTableId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetServiceIdx: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordEventId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
    pub GetRecordStartTime: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT,
    pub GetRecordDuration: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut MPEG_TIME) -> windows_core::HRESULT,
    pub GetRecordCountOfDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRecordDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IPBDA_Services, IPBDA_Services_Vtbl, 0x944eab37_eed4_4850_afd2_77e7efeb4427);
impl core::ops::Deref for IPBDA_Services {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPBDA_Services, windows_core::IUnknown);
impl IPBDA_Services {
    pub unsafe fn Initialize(&self, pbuffer: &[u8]) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), pbuffer.len().try_into().unwrap(), core::mem::transmute(pbuffer.as_ptr())).ok()
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordByIndex(&self, dwrecordindex: u32) -> windows_core::Result<u64> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IPBDA_Services_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u8) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetRecordByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IPMT, IPMT_Vtbl, 0x01f3b398_9527_4736_94db_5195878e97a8);
impl core::ops::Deref for IPMT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPMT, windows_core::IUnknown);
impl IPMT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetProgramNumber(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetProgramNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetPcrPid(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetPcrPid)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfTableDescriptors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableDescriptorByIndex)(windows_core::Interface::as_raw(self), dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptorByTag)(windows_core::Interface::as_raw(self), btag, pdwcookie, core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn GetCountOfRecords(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfRecords)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordStreamType(&self, dwrecordindex: u32) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordStreamType)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordElementaryPid(&self, dwrecordindex: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordElementaryPid)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordCountOfDescriptors)(windows_core::Interface::as_raw(self), dwrecordindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwdescindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRecordDescriptorByIndex)(windows_core::Interface::as_raw(self), dwrecordindex, dwdescindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordDescriptorByTag)(windows_core::Interface::as_raw(self), dwrecordindex, btag, pdwcookie, core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn QueryServiceGatewayInfo(&self, ppdsmcclist: *mut *mut DSMCC_ELEMENT, puicount: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).QueryServiceGatewayInfo)(windows_core::Interface::as_raw(self), ppdsmcclist, puicount).ok()
    }
    pub unsafe fn QueryMPEInfo(&self, ppmpelist: *mut *mut MPE_ELEMENT, puicount: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).QueryMPEInfo)(windows_core::Interface::as_raw(self), ppmpelist, puicount).ok()
    }
    pub unsafe fn RegisterForNextTable<P0>(&self, hnexttableavailable: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForNextTable)(windows_core::Interface::as_raw(self), hnexttableavailable.param().abi()).ok()
    }
    pub unsafe fn GetNextTable(&self) -> windows_core::Result<IPMT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNextTable)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn RegisterForWhenCurrent<P0>(&self, hnexttableiscurrent: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForWhenCurrent)(windows_core::Interface::as_raw(self), hnexttableiscurrent.param().abi()).ok()
    }
    pub unsafe fn ConvertNextToCurrent(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ConvertNextToCurrent)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IPMT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetProgramNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetPcrPid: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetCountOfTableDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTableDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTableDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCountOfRecords: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetRecordStreamType: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u8) -> windows_core::HRESULT,
    pub GetRecordElementaryPid: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetRecordCountOfDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRecordDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRecordDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub QueryServiceGatewayInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut DSMCC_ELEMENT, *mut u32) -> windows_core::HRESULT,
    pub QueryMPEInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut MPE_ELEMENT, *mut u32) -> windows_core::HRESULT,
    pub RegisterForNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub GetNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForWhenCurrent: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub ConvertNextToCurrent: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IPSITables, IPSITables_Vtbl, 0x919f24c5_7b14_42ac_a4b0_2ae08daf00ac);
impl core::ops::Deref for IPSITables {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPSITables, windows_core::IUnknown);
impl IPSITables {
    pub unsafe fn GetTable(&self, dwtsid: u32, dwtid_pid: u32, dwhashedver: u32, dwpara4: u32) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTable)(windows_core::Interface::as_raw(self), dwtsid, dwtid_pid, dwhashedver, dwpara4, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IPSITables_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTable: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IPTFilterLicenseRenewal, IPTFilterLicenseRenewal_Vtbl, 0x26d836a5_0c15_44c7_ac59_b0da8728f240);
impl core::ops::Deref for IPTFilterLicenseRenewal {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPTFilterLicenseRenewal, windows_core::IUnknown);
impl IPTFilterLicenseRenewal {
    pub unsafe fn RenewLicenses<P0, P1, P2>(&self, wszfilename: P0, wszexpiredkid: P1, dwcallersid: u32, bhighpriority: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<super::super::super::Foundation::BOOL>,
    {
        (windows_core::Interface::vtable(self).RenewLicenses)(windows_core::Interface::as_raw(self), wszfilename.param().abi(), wszexpiredkid.param().abi(), dwcallersid, bhighpriority.param().abi()).ok()
    }
    pub unsafe fn CancelLicenseRenewal(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).CancelLicenseRenewal)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IPTFilterLicenseRenewal_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub RenewLicenses: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, u32, super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub CancelLicenseRenewal: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IPersistTuneXml, IPersistTuneXml_Vtbl, 0x0754cd31_8d15_47a9_8215_d20064157244);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IPersistTuneXml {
    type Target = super::super::super::System::Com::IPersist;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IPersistTuneXml, windows_core::IUnknown, super::super::super::System::Com::IPersist);
#[cfg(feature = "Win32_System_Com")]
impl IPersistTuneXml {
    pub unsafe fn InitNew(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).InitNew)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Load<P0>(&self, varvalue: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).Load)(windows_core::Interface::as_raw(self), varvalue.param().abi()).ok()
    }
    pub unsafe fn Save(&self) -> windows_core::Result<windows_core::VARIANT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Save)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IPersistTuneXml_Vtbl {
    pub base__: super::super::super::System::Com::IPersist_Vtbl,
    pub InitNew: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Load: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    pub Save: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IPersistTuneXmlUtility, IPersistTuneXmlUtility_Vtbl, 0x990237ae_ac11_4614_be8f_dd217a4cb4cb);
impl core::ops::Deref for IPersistTuneXmlUtility {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPersistTuneXmlUtility, windows_core::IUnknown);
impl IPersistTuneXmlUtility {
    pub unsafe fn Deserialize<P0>(&self, varvalue: P0) -> windows_core::Result<windows_core::IUnknown>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Deserialize)(windows_core::Interface::as_raw(self), varvalue.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IPersistTuneXmlUtility_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Deserialize: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IPersistTuneXmlUtility2, IPersistTuneXmlUtility2_Vtbl, 0x992e165f_ea24_4b2f_9a1d_009d92120451);
impl core::ops::Deref for IPersistTuneXmlUtility2 {
    type Target = IPersistTuneXmlUtility;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPersistTuneXmlUtility2, windows_core::IUnknown, IPersistTuneXmlUtility);
impl IPersistTuneXmlUtility2 {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Serialize<P0>(&self, pitunerequest: P0) -> windows_core::Result<windows_core::BSTR>
    where
        P0: windows_core::Param<ITuneRequest>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Serialize)(windows_core::Interface::as_raw(self), pitunerequest.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IPersistTuneXmlUtility2_Vtbl {
    pub base__: IPersistTuneXmlUtility_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Serialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Serialize: usize,
}
windows_core::imp::define_interface!(IRegisterTuner, IRegisterTuner_Vtbl, 0x359b3901_572c_4854_bb49_cdef66606a25);
impl core::ops::Deref for IRegisterTuner {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IRegisterTuner, windows_core::IUnknown);
impl IRegisterTuner {
    pub unsafe fn Register<P0, P1>(&self, ptuner: P0, pgraph: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ITuner>,
        P1: windows_core::Param<super::IGraphBuilder>,
    {
        (windows_core::Interface::vtable(self).Register)(windows_core::Interface::as_raw(self), ptuner.param().abi(), pgraph.param().abi()).ok()
    }
    pub unsafe fn Unregister(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Unregister)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IRegisterTuner_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Register: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Unregister: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ISBE2Crossbar, ISBE2Crossbar_Vtbl, 0x547b6d26_3226_487e_8253_8aa168749434);
impl core::ops::Deref for ISBE2Crossbar {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ISBE2Crossbar, windows_core::IUnknown);
impl ISBE2Crossbar {
    pub unsafe fn EnableDefaultMode(&self, defaultflags: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).EnableDefaultMode)(windows_core::Interface::as_raw(self), defaultflags).ok()
    }
    pub unsafe fn GetInitialProfile(&self) -> windows_core::Result<ISBE2MediaTypeProfile> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetInitialProfile)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetOutputProfile<P0>(&self, pprofile: P0, pcoutputpins: *mut u32, ppoutputpins: *mut Option<super::IPin>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISBE2MediaTypeProfile>,
    {
        (windows_core::Interface::vtable(self).SetOutputProfile)(windows_core::Interface::as_raw(self), pprofile.param().abi(), pcoutputpins, core::mem::transmute(ppoutputpins)).ok()
    }
    pub unsafe fn EnumStreams(&self) -> windows_core::Result<ISBE2EnumStream> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EnumStreams)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct ISBE2Crossbar_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub EnableDefaultMode: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetInitialProfile: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOutputProfile: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumStreams: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ISBE2EnumStream, ISBE2EnumStream_Vtbl, 0xf7611092_9fbc_46ec_a7c7_548ea78b71a4);
impl core::ops::Deref for ISBE2EnumStream {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ISBE2EnumStream, windows_core::IUnknown);
impl ISBE2EnumStream {
    pub unsafe fn Next(&self, pstreamdesc: &mut [SBE2_STREAM_DESC], pcreceived: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), pstreamdesc.len().try_into().unwrap(), core::mem::transmute(pstreamdesc.as_ptr()), pcreceived).ok()
    }
    pub unsafe fn Skip(&self, crecords: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), crecords).ok()
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<ISBE2EnumStream> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct ISBE2EnumStream_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut SBE2_STREAM_DESC, *mut u32) -> windows_core::HRESULT,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ISBE2FileScan, ISBE2FileScan_Vtbl, 0x3e2bf5a5_4f96_4899_a1a3_75e8be9a5ac0);
impl core::ops::Deref for ISBE2FileScan {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ISBE2FileScan, windows_core::IUnknown);
impl ISBE2FileScan {
    pub unsafe fn RepairFile<P0>(&self, filename: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        (windows_core::Interface::vtable(self).RepairFile)(windows_core::Interface::as_raw(self), filename.param().abi()).ok()
    }
}
#[repr(C)]
pub struct ISBE2FileScan_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub RepairFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ISBE2GlobalEvent, ISBE2GlobalEvent_Vtbl, 0xcaede759_b6b1_11db_a578_0018f3fa24c6);
impl core::ops::Deref for ISBE2GlobalEvent {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ISBE2GlobalEvent, windows_core::IUnknown);
impl ISBE2GlobalEvent {
    pub unsafe fn GetEvent(&self, idevt: *const windows_core::GUID, param1: u32, param2: u32, param3: u32, param4: u32, pspanning: *mut super::super::super::Foundation::BOOL, pcb: *mut u32, pb: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetEvent)(windows_core::Interface::as_raw(self), idevt, param1, param2, param3, param4, pspanning, pcb, pb).ok()
    }
}
#[repr(C)]
pub struct ISBE2GlobalEvent_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetEvent: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, u32, u32, u32, u32, *mut super::super::super::Foundation::BOOL, *mut u32, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ISBE2GlobalEvent2, ISBE2GlobalEvent2_Vtbl, 0x6d8309bf_00fe_4506_8b03_f8c65b5c9b39);
impl core::ops::Deref for ISBE2GlobalEvent2 {
    type Target = ISBE2GlobalEvent;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ISBE2GlobalEvent2, windows_core::IUnknown, ISBE2GlobalEvent);
impl ISBE2GlobalEvent2 {
    pub unsafe fn GetEventEx(&self, idevt: *const windows_core::GUID, param1: u32, param2: u32, param3: u32, param4: u32, pspanning: *mut super::super::super::Foundation::BOOL, pcb: *mut u32, pb: *mut u8, pstreamtime: *mut i64) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetEventEx)(windows_core::Interface::as_raw(self), idevt, param1, param2, param3, param4, pspanning, pcb, pb, pstreamtime).ok()
    }
}
#[repr(C)]
pub struct ISBE2GlobalEvent2_Vtbl {
    pub base__: ISBE2GlobalEvent_Vtbl,
    pub GetEventEx: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, u32, u32, u32, u32, *mut super::super::super::Foundation::BOOL, *mut u32, *mut u8, *mut i64) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ISBE2MediaTypeProfile, ISBE2MediaTypeProfile_Vtbl, 0xf238267d_4671_40d7_997e_25dc32cfed2a);
impl core::ops::Deref for ISBE2MediaTypeProfile {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ISBE2MediaTypeProfile, windows_core::IUnknown);
impl ISBE2MediaTypeProfile {
    pub unsafe fn GetStreamCount(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetStreamCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_Media_MediaFoundation")]
    pub unsafe fn GetStream(&self, index: u32) -> windows_core::Result<*mut super::super::MediaFoundation::AM_MEDIA_TYPE> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetStream)(windows_core::Interface::as_raw(self), index, &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_Media_MediaFoundation")]
    pub unsafe fn AddStream(&self, pmediatype: *const super::super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).AddStream)(windows_core::Interface::as_raw(self), pmediatype).ok()
    }
    pub unsafe fn DeleteStream(&self, index: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).DeleteStream)(windows_core::Interface::as_raw(self), index).ok()
    }
}
#[repr(C)]
pub struct ISBE2MediaTypeProfile_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetStreamCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_Media_MediaFoundation")]
    pub GetStream: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut super::super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Media_MediaFoundation"))]
    GetStream: usize,
    #[cfg(feature = "Win32_Media_MediaFoundation")]
    pub AddStream: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Media_MediaFoundation"))]
    AddStream: usize,
    pub DeleteStream: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ISBE2SpanningEvent, ISBE2SpanningEvent_Vtbl, 0xcaede760_b6b1_11db_a578_0018f3fa24c6);
impl core::ops::Deref for ISBE2SpanningEvent {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ISBE2SpanningEvent, windows_core::IUnknown);
impl ISBE2SpanningEvent {
    pub unsafe fn GetEvent(&self, idevt: *const windows_core::GUID, streamid: u32, pcb: *mut u32, pb: *mut u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetEvent)(windows_core::Interface::as_raw(self), idevt, streamid, pcb, pb).ok()
    }
}
#[repr(C)]
pub struct ISBE2SpanningEvent_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetEvent: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, u32, *mut u32, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ISBE2StreamMap, ISBE2StreamMap_Vtbl, 0x667c7745_85b1_4c55_ae55_4e25056159fc);
impl core::ops::Deref for ISBE2StreamMap {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ISBE2StreamMap, windows_core::IUnknown);
impl ISBE2StreamMap {
    pub unsafe fn MapStream(&self, stream: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).MapStream)(windows_core::Interface::as_raw(self), stream).ok()
    }
    pub unsafe fn UnmapStream(&self, stream: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).UnmapStream)(windows_core::Interface::as_raw(self), stream).ok()
    }
    pub unsafe fn EnumMappedStreams(&self) -> windows_core::Result<ISBE2EnumStream> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EnumMappedStreams)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct ISBE2StreamMap_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub MapStream: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub UnmapStream: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub EnumMappedStreams: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ISCTE_EAS, ISCTE_EAS_Vtbl, 0x1ff544d6_161d_4fae_9faa_4f9f492ae999);
impl core::ops::Deref for ISCTE_EAS {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ISCTE_EAS, windows_core::IUnknown);
impl ISCTE_EAS {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSequencyNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSequencyNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetProtocolVersion(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetProtocolVersion)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetEASEventID(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEASEventID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetOriginatorCode(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetOriginatorCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetEASEventCodeLen(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEASEventCodeLen)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetEASEventCode(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetEASEventCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRawNatureOfActivationTextLen(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRawNatureOfActivationTextLen)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRawNatureOfActivationText(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRawNatureOfActivationText)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetNatureOfActivationText<P0>(&self, bstris0639code: P0) -> windows_core::Result<windows_core::BSTR>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNatureOfActivationText)(windows_core::Interface::as_raw(self), bstris0639code.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTimeRemaining(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTimeRemaining)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetStartTime(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetStartTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDuration(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDuration)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetAlertPriority(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetAlertPriority)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDetailsOOBSourceID(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDetailsOOBSourceID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDetailsMajor(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDetailsMajor)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDetailsMinor(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDetailsMinor)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetDetailsAudioOOBSourceID(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDetailsAudioOOBSourceID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetAlertText<P0>(&self, bstris0639code: P0) -> windows_core::Result<windows_core::BSTR>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetAlertText)(windows_core::Interface::as_raw(self), bstris0639code.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetRawAlertTextLen(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRawAlertTextLen)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetRawAlertText(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetRawAlertText)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLocationCount(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetLocationCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetLocationCodes(&self, bindex: u8, pbstate: *mut u8, pbcountysubdivision: *mut u8, pwcounty: *mut u16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetLocationCodes)(windows_core::Interface::as_raw(self), bindex, pbstate, pbcountysubdivision, pwcounty).ok()
    }
    pub unsafe fn GetExceptionCount(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetExceptionCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetExceptionService(&self, bindex: u8, pbibref: *mut u8, pwfirst: *mut u16, pwsecond: *mut u16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetExceptionService)(windows_core::Interface::as_raw(self), bindex, pbibref, pwfirst, pwsecond).ok()
    }
    pub unsafe fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfTableDescriptors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableDescriptorByIndex)(windows_core::Interface::as_raw(self), dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptorByTag)(windows_core::Interface::as_raw(self), btag, pdwcookie, core::mem::transmute(ppdescriptor)).ok()
    }
}
#[repr(C)]
pub struct ISCTE_EAS_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetSequencyNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetProtocolVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetEASEventID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetOriginatorCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetEASEventCodeLen: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetEASEventCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRawNatureOfActivationTextLen: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetRawNatureOfActivationText: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetNatureOfActivationText: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub GetTimeRemaining: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetStartTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDuration: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetAlertPriority: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetDetailsOOBSourceID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetDetailsMajor: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetDetailsMinor: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetDetailsAudioOOBSourceID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetAlertText: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub GetRawAlertTextLen: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetRawAlertText: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLocationCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetLocationCodes: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8, *mut u8, *mut u16) -> windows_core::HRESULT,
    pub GetExceptionCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetExceptionService: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8, *mut u16, *mut u16) -> windows_core::HRESULT,
    pub GetCountOfTableDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTableDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTableDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ISIInbandEPG, ISIInbandEPG_Vtbl, 0xf90ad9d0_b854_4b68_9cc1_b2cc96119d85);
impl core::ops::Deref for ISIInbandEPG {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ISIInbandEPG, windows_core::IUnknown);
impl ISIInbandEPG {
    pub unsafe fn StartSIEPGScan(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).StartSIEPGScan)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn StopSIEPGScan(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).StopSIEPGScan)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn IsSIEPGScanRunning(&self) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).IsSIEPGScanRunning)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct ISIInbandEPG_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub StartSIEPGScan: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StopSIEPGScan: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsSIEPGScanRunning: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ISIInbandEPGEvent, ISIInbandEPGEvent_Vtbl, 0x7e47913a_5a89_423d_9a2b_e15168858934);
impl core::ops::Deref for ISIInbandEPGEvent {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ISIInbandEPGEvent, windows_core::IUnknown);
impl ISIInbandEPGEvent {
    pub unsafe fn SIObjectEvent<P0>(&self, pidvb_eit: P0, dwtable_id: u32, dwservice_id: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDVB_EIT2>,
    {
        (windows_core::Interface::vtable(self).SIObjectEvent)(windows_core::Interface::as_raw(self), pidvb_eit.param().abi(), dwtable_id, dwservice_id).ok()
    }
}
#[repr(C)]
pub struct ISIInbandEPGEvent_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SIObjectEvent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IScanningTuner, IScanningTuner_Vtbl, 0x1dfd0a5c_0284_11d3_9d8e_00c04f72d980);
impl core::ops::Deref for IScanningTuner {
    type Target = ITuner;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IScanningTuner, windows_core::IUnknown, ITuner);
impl IScanningTuner {
    pub unsafe fn SeekUp(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SeekUp)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn SeekDown(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SeekDown)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ScanUp(&self, millisecondspause: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ScanUp)(windows_core::Interface::as_raw(self), millisecondspause).ok()
    }
    pub unsafe fn ScanDown(&self, millisecondspause: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ScanDown)(windows_core::Interface::as_raw(self), millisecondspause).ok()
    }
    pub unsafe fn AutoProgram(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).AutoProgram)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IScanningTuner_Vtbl {
    pub base__: ITuner_Vtbl,
    pub SeekUp: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SeekDown: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ScanUp: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub ScanDown: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub AutoProgram: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IScanningTunerEx, IScanningTunerEx_Vtbl, 0x04bbd195_0e2d_4593_9bd5_4f908bc33cf5);
impl core::ops::Deref for IScanningTunerEx {
    type Target = IScanningTuner;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IScanningTunerEx, windows_core::IUnknown, ITuner, IScanningTuner);
impl IScanningTunerEx {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetCurrentLocator(&self, pilocator: *const Option<ILocator>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetCurrentLocator)(windows_core::Interface::as_raw(self), core::mem::transmute(pilocator)).ok()
    }
    pub unsafe fn PerformExhaustiveScan<P0>(&self, dwlowerfreq: i32, dwhigherfreq: i32, bfinetune: P0, hevent: usize) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::VARIANT_BOOL>,
    {
        (windows_core::Interface::vtable(self).PerformExhaustiveScan)(windows_core::Interface::as_raw(self), dwlowerfreq, dwhigherfreq, bfinetune.param().abi(), hevent).ok()
    }
    pub unsafe fn TerminateCurrentScan(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TerminateCurrentScan)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn ResumeCurrentScan(&self, hevent: usize) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ResumeCurrentScan)(windows_core::Interface::as_raw(self), hevent).ok()
    }
    pub unsafe fn GetTunerScanningCapability(&self, hardwareassistedscanning: *mut i32, numstandardssupported: *mut i32, broadcaststandards: *mut windows_core::GUID) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTunerScanningCapability)(windows_core::Interface::as_raw(self), hardwareassistedscanning, numstandardssupported, broadcaststandards).ok()
    }
    pub unsafe fn GetTunerStatus(&self, secondsleft: *mut i32, currentlocktype: *mut i32, autodetect: *mut i32, currentfreq: *mut i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTunerStatus)(windows_core::Interface::as_raw(self), secondsleft, currentlocktype, autodetect, currentfreq).ok()
    }
    pub unsafe fn GetCurrentTunerStandardCapability(&self, currentbroadcaststandard: windows_core::GUID, settlingtime: *mut i32, tvstandardssupported: *mut i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetCurrentTunerStandardCapability)(windows_core::Interface::as_raw(self), core::mem::transmute(currentbroadcaststandard), settlingtime, tvstandardssupported).ok()
    }
    pub unsafe fn SetScanSignalTypeFilter(&self, scanmodulationtypes: i32, analogvideostandard: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetScanSignalTypeFilter)(windows_core::Interface::as_raw(self), scanmodulationtypes, analogvideostandard).ok()
    }
}
#[repr(C)]
pub struct IScanningTunerEx_Vtbl {
    pub base__: IScanningTuner_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub GetCurrentLocator: unsafe extern "system" fn(*mut core::ffi::c_void, *const *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetCurrentLocator: usize,
    pub PerformExhaustiveScan: unsafe extern "system" fn(*mut core::ffi::c_void, i32, i32, super::super::super::Foundation::VARIANT_BOOL, usize) -> windows_core::HRESULT,
    pub TerminateCurrentScan: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub ResumeCurrentScan: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
    pub GetTunerScanningCapability: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32, *mut i32, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub GetTunerStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32, *mut i32, *mut i32, *mut i32) -> windows_core::HRESULT,
    pub GetCurrentTunerStandardCapability: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::GUID, *mut i32, *mut i32) -> windows_core::HRESULT,
    pub SetScanSignalTypeFilter: unsafe extern "system" fn(*mut core::ffi::c_void, i32, i32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ISectionList, ISectionList_Vtbl, 0xafec1eb5_2a64_46c6_bf4b_ae3ccb6afdb0);
impl core::ops::Deref for ISectionList {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ISectionList, windows_core::IUnknown);
impl ISectionList {
    pub unsafe fn Initialize<P0, P1>(&self, requesttype: MPEG_REQUEST_TYPE, pmpeg2data: P0, pcontext: *const MPEG_CONTEXT, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, timeout: u32, hdoneevent: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMpeg2Data>,
        P1: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), requesttype, pmpeg2data.param().abi(), pcontext, pid, tid, pfilter, timeout, hdoneevent.param().abi()).ok()
    }
    pub unsafe fn InitializeWithRawSections(&self, pmplsections: *const MPEG_PACKET_LIST) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).InitializeWithRawSections)(windows_core::Interface::as_raw(self), pmplsections).ok()
    }
    pub unsafe fn CancelPendingRequest(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).CancelPendingRequest)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn GetNumberOfSections(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNumberOfSections)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetSectionData(&self, sectionnumber: u16, pdwrawpacketlength: *mut u32, ppsection: *mut *mut SECTION) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetSectionData)(windows_core::Interface::as_raw(self), sectionnumber, pdwrawpacketlength, ppsection).ok()
    }
    pub unsafe fn GetProgramIdentifier(&self, ppid: *const u16) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetProgramIdentifier)(windows_core::Interface::as_raw(self), ppid).ok()
    }
    pub unsafe fn GetTableIdentifier(&self, ptableid: *const u8) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableIdentifier)(windows_core::Interface::as_raw(self), ptableid).ok()
    }
}
#[repr(C)]
pub struct ISectionList_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, MPEG_REQUEST_TYPE, *mut core::ffi::c_void, *const MPEG_CONTEXT, u16, u8, *const MPEG2_FILTER, u32, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub InitializeWithRawSections: unsafe extern "system" fn(*mut core::ffi::c_void, *const MPEG_PACKET_LIST) -> windows_core::HRESULT,
    pub CancelPendingRequest: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetNumberOfSections: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetSectionData: unsafe extern "system" fn(*mut core::ffi::c_void, u16, *mut u32, *mut *mut SECTION) -> windows_core::HRESULT,
    pub GetProgramIdentifier: unsafe extern "system" fn(*mut core::ffi::c_void, *const u16) -> windows_core::HRESULT,
    pub GetTableIdentifier: unsafe extern "system" fn(*mut core::ffi::c_void, *const u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IServiceLocationDescriptor, IServiceLocationDescriptor_Vtbl, 0x58c3c827_9d91_4215_bff3_820a49f0904c);
impl core::ops::Deref for IServiceLocationDescriptor {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IServiceLocationDescriptor, windows_core::IUnknown);
impl IServiceLocationDescriptor {
    pub unsafe fn GetPCR_PID(&self) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetPCR_PID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetNumberOfElements(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNumberOfElements)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetElementStreamType(&self, bindex: u8) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetElementStreamType)(windows_core::Interface::as_raw(self), bindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetElementPID(&self, bindex: u8) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetElementPID)(windows_core::Interface::as_raw(self), bindex, &mut result__).map(|| result__)
    }
    pub unsafe fn GetElementLanguageCode(&self, bindex: u8, langcode: &mut [u8; 3]) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetElementLanguageCode)(windows_core::Interface::as_raw(self), bindex, core::mem::transmute(langcode.as_ptr())).ok()
    }
}
#[repr(C)]
pub struct IServiceLocationDescriptor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetPCR_PID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub GetNumberOfElements: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetElementStreamType: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
    pub GetElementPID: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u16) -> windows_core::HRESULT,
    pub GetElementLanguageCode: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u8) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IStreamBufferConfigure, IStreamBufferConfigure_Vtbl, 0xce14dfae_4098_4af7_bbf7_d6511f835414);
impl core::ops::Deref for IStreamBufferConfigure {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IStreamBufferConfigure, windows_core::IUnknown);
impl IStreamBufferConfigure {
    pub unsafe fn SetDirectory<P0>(&self, pszdirectoryname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        (windows_core::Interface::vtable(self).SetDirectory)(windows_core::Interface::as_raw(self), pszdirectoryname.param().abi()).ok()
    }
    pub unsafe fn GetDirectory(&self) -> windows_core::Result<windows_core::PWSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetDirectory)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetBackingFileCount(&self, dwmin: u32, dwmax: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetBackingFileCount)(windows_core::Interface::as_raw(self), dwmin, dwmax).ok()
    }
    pub unsafe fn GetBackingFileCount(&self, pdwmin: *mut u32, pdwmax: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetBackingFileCount)(windows_core::Interface::as_raw(self), pdwmin, pdwmax).ok()
    }
    pub unsafe fn SetBackingFileDuration(&self, dwseconds: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetBackingFileDuration)(windows_core::Interface::as_raw(self), dwseconds).ok()
    }
    pub unsafe fn GetBackingFileDuration(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetBackingFileDuration)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IStreamBufferConfigure_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetDirectory: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetDirectory: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub SetBackingFileCount: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetBackingFileCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub SetBackingFileDuration: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetBackingFileDuration: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IStreamBufferConfigure2, IStreamBufferConfigure2_Vtbl, 0x53e037bf_3992_4282_ae34_2487b4dae06b);
impl core::ops::Deref for IStreamBufferConfigure2 {
    type Target = IStreamBufferConfigure;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IStreamBufferConfigure2, windows_core::IUnknown, IStreamBufferConfigure);
impl IStreamBufferConfigure2 {
    pub unsafe fn SetMultiplexedPacketSize(&self, cbbytesperpacket: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMultiplexedPacketSize)(windows_core::Interface::as_raw(self), cbbytesperpacket).ok()
    }
    pub unsafe fn GetMultiplexedPacketSize(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetMultiplexedPacketSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetFFTransitionRates(&self, dwmaxfullframerate: u32, dwmaxnonskippingrate: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetFFTransitionRates)(windows_core::Interface::as_raw(self), dwmaxfullframerate, dwmaxnonskippingrate).ok()
    }
    pub unsafe fn GetFFTransitionRates(&self, pdwmaxfullframerate: *mut u32, pdwmaxnonskippingrate: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetFFTransitionRates)(windows_core::Interface::as_raw(self), pdwmaxfullframerate, pdwmaxnonskippingrate).ok()
    }
}
#[repr(C)]
pub struct IStreamBufferConfigure2_Vtbl {
    pub base__: IStreamBufferConfigure_Vtbl,
    pub SetMultiplexedPacketSize: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetMultiplexedPacketSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetFFTransitionRates: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetFFTransitionRates: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IStreamBufferConfigure3, IStreamBufferConfigure3_Vtbl, 0x7e2d2a1e_7192_4bd7_80c1_061fd1d10402);
impl core::ops::Deref for IStreamBufferConfigure3 {
    type Target = IStreamBufferConfigure2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IStreamBufferConfigure3, windows_core::IUnknown, IStreamBufferConfigure, IStreamBufferConfigure2);
impl IStreamBufferConfigure3 {
    pub unsafe fn SetStartRecConfig<P0>(&self, fstartstopscur: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::BOOL>,
    {
        (windows_core::Interface::vtable(self).SetStartRecConfig)(windows_core::Interface::as_raw(self), fstartstopscur.param().abi()).ok()
    }
    pub unsafe fn GetStartRecConfig(&self) -> windows_core::Result<super::super::super::Foundation::BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetStartRecConfig)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetNamespace<P0>(&self, psznamespace: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        (windows_core::Interface::vtable(self).SetNamespace)(windows_core::Interface::as_raw(self), psznamespace.param().abi()).ok()
    }
    pub unsafe fn GetNamespace(&self) -> windows_core::Result<windows_core::PWSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNamespace)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct IStreamBufferConfigure3_Vtbl {
    pub base__: IStreamBufferConfigure2_Vtbl,
    pub SetStartRecConfig: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub GetStartRecConfig: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
    pub SetNamespace: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetNamespace: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IStreamBufferDataCounters, IStreamBufferDataCounters_Vtbl, 0x9d2a2563_31ab_402e_9a6b_adb903489440);
impl core::ops::Deref for IStreamBufferDataCounters {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IStreamBufferDataCounters, windows_core::IUnknown);
impl IStreamBufferDataCounters {
    pub unsafe fn GetData(&self, ppindata: *mut SBE_PIN_DATA) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetData)(windows_core::Interface::as_raw(self), ppindata).ok()
    }
    pub unsafe fn ResetData(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ResetData)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IStreamBufferDataCounters_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SBE_PIN_DATA) -> windows_core::HRESULT,
    pub ResetData: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IStreamBufferInitialize, IStreamBufferInitialize_Vtbl, 0x9ce50f2d_6ba7_40fb_a034_50b1a674ec78);
impl core::ops::Deref for IStreamBufferInitialize {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IStreamBufferInitialize, windows_core::IUnknown);
impl IStreamBufferInitialize {
    #[cfg(feature = "Win32_System_Registry")]
    pub unsafe fn SetHKEY<P0>(&self, hkeyroot: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::System::Registry::HKEY>,
    {
        (windows_core::Interface::vtable(self).SetHKEY)(windows_core::Interface::as_raw(self), hkeyroot.param().abi()).ok()
    }
    #[cfg(feature = "Win32_Security")]
    pub unsafe fn SetSIDs(&self, csids: u32, ppsid: *mut super::super::super::Security::PSID) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetSIDs)(windows_core::Interface::as_raw(self), csids, ppsid).ok()
    }
}
#[repr(C)]
pub struct IStreamBufferInitialize_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Registry")]
    pub SetHKEY: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::System::Registry::HKEY) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Registry"))]
    SetHKEY: usize,
    #[cfg(feature = "Win32_Security")]
    pub SetSIDs: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::super::Security::PSID) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Security"))]
    SetSIDs: usize,
}
windows_core::imp::define_interface!(IStreamBufferMediaSeeking, IStreamBufferMediaSeeking_Vtbl, 0xf61f5c26_863d_4afa_b0ba_2f81dc978596);
impl core::ops::Deref for IStreamBufferMediaSeeking {
    type Target = super::IMediaSeeking;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IStreamBufferMediaSeeking, windows_core::IUnknown, super::IMediaSeeking);
impl IStreamBufferMediaSeeking {}
#[repr(C)]
pub struct IStreamBufferMediaSeeking_Vtbl {
    pub base__: super::IMediaSeeking_Vtbl,
}
windows_core::imp::define_interface!(IStreamBufferMediaSeeking2, IStreamBufferMediaSeeking2_Vtbl, 0x3a439ab0_155f_470a_86a6_9ea54afd6eaf);
impl core::ops::Deref for IStreamBufferMediaSeeking2 {
    type Target = IStreamBufferMediaSeeking;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IStreamBufferMediaSeeking2, windows_core::IUnknown, super::IMediaSeeking, IStreamBufferMediaSeeking);
impl IStreamBufferMediaSeeking2 {
    pub unsafe fn SetRateEx(&self, drate: f64, dwframespersec: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetRateEx)(windows_core::Interface::as_raw(self), drate, dwframespersec).ok()
    }
}
#[repr(C)]
pub struct IStreamBufferMediaSeeking2_Vtbl {
    pub base__: IStreamBufferMediaSeeking_Vtbl,
    pub SetRateEx: unsafe extern "system" fn(*mut core::ffi::c_void, f64, u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IStreamBufferRecComp, IStreamBufferRecComp_Vtbl, 0x9e259a9b_8815_42ae_b09f_221970b154fd);
impl core::ops::Deref for IStreamBufferRecComp {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IStreamBufferRecComp, windows_core::IUnknown);
impl IStreamBufferRecComp {
    pub unsafe fn Initialize<P0, P1>(&self, psztargetfilename: P0, pszsbrecprofileref: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psztargetfilename.param().abi(), pszsbrecprofileref.param().abi()).ok()
    }
    pub unsafe fn Append<P0>(&self, pszsbrecording: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        (windows_core::Interface::vtable(self).Append)(windows_core::Interface::as_raw(self), pszsbrecording.param().abi()).ok()
    }
    pub unsafe fn AppendEx<P0>(&self, pszsbrecording: P0, rtstart: i64, rtstop: i64) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        (windows_core::Interface::vtable(self).AppendEx)(windows_core::Interface::as_raw(self), pszsbrecording.param().abi(), rtstart, rtstop).ok()
    }
    pub unsafe fn GetCurrentLength(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCurrentLength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn Close(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Close)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn Cancel(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Cancel)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IStreamBufferRecComp_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub Append: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AppendEx: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, i64, i64) -> windows_core::HRESULT,
    pub GetCurrentLength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Close: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Cancel: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IStreamBufferRecordControl, IStreamBufferRecordControl_Vtbl, 0xba9b6c99_f3c7_4ff2_92db_cfdd4851bf31);
impl core::ops::Deref for IStreamBufferRecordControl {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IStreamBufferRecordControl, windows_core::IUnknown);
impl IStreamBufferRecordControl {
    pub unsafe fn Start(&self, prtstart: *mut i64) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Start)(windows_core::Interface::as_raw(self), prtstart).ok()
    }
    pub unsafe fn Stop(&self, rtstop: i64) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Stop)(windows_core::Interface::as_raw(self), rtstop).ok()
    }
    pub unsafe fn GetRecordingStatus(&self, phresult: *mut windows_core::HRESULT, pbstarted: *mut super::super::super::Foundation::BOOL, pbstopped: *mut super::super::super::Foundation::BOOL) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetRecordingStatus)(windows_core::Interface::as_raw(self), phresult, pbstarted, pbstopped).ok()
    }
}
#[repr(C)]
pub struct IStreamBufferRecordControl_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Start: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i64) -> windows_core::HRESULT,
    pub Stop: unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
    pub GetRecordingStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::HRESULT, *mut super::super::super::Foundation::BOOL, *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IStreamBufferRecordingAttribute, IStreamBufferRecordingAttribute_Vtbl, 0x16ca4e03_fe69_4705_bd41_5b7dfc0c95f3);
impl core::ops::Deref for IStreamBufferRecordingAttribute {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IStreamBufferRecordingAttribute, windows_core::IUnknown);
impl IStreamBufferRecordingAttribute {
    pub unsafe fn SetAttribute<P0>(&self, ulreserved: u32, pszattributename: P0, streambufferattributetype: STREAMBUFFER_ATTR_DATATYPE, pbattribute: &[u8]) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        (windows_core::Interface::vtable(self).SetAttribute)(windows_core::Interface::as_raw(self), ulreserved, pszattributename.param().abi(), streambufferattributetype, core::mem::transmute(pbattribute.as_ptr()), pbattribute.len().try_into().unwrap()).ok()
    }
    pub unsafe fn GetAttributeCount(&self, ulreserved: u32) -> windows_core::Result<u16> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetAttributeCount)(windows_core::Interface::as_raw(self), ulreserved, &mut result__).map(|| result__)
    }
    pub unsafe fn GetAttributeByName<P0>(&self, pszattributename: P0, pulreserved: *const u32, pstreambufferattributetype: *mut STREAMBUFFER_ATTR_DATATYPE, pbattribute: *mut u8, pcblength: *mut u16) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        (windows_core::Interface::vtable(self).GetAttributeByName)(windows_core::Interface::as_raw(self), pszattributename.param().abi(), pulreserved, pstreambufferattributetype, pbattribute, pcblength).ok()
    }
    pub unsafe 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<()> {
        (windows_core::Interface::vtable(self).GetAttributeByIndex)(windows_core::Interface::as_raw(self), windex, pulreserved, core::mem::transmute(pszattributename), pcchnamelength, pstreambufferattributetype, pbattribute, pcblength).ok()
    }
    pub unsafe fn EnumAttributes(&self) -> windows_core::Result<IEnumStreamBufferRecordingAttrib> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EnumAttributes)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct IStreamBufferRecordingAttribute_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetAttribute: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, STREAMBUFFER_ATTR_DATATYPE, *const u8, u16) -> windows_core::HRESULT,
    pub GetAttributeCount: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u16) -> windows_core::HRESULT,
    pub GetAttributeByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *const u32, *mut STREAMBUFFER_ATTR_DATATYPE, *mut u8, *mut u16) -> windows_core::HRESULT,
    pub GetAttributeByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u16, *const u32, windows_core::PWSTR, *mut u16, *mut STREAMBUFFER_ATTR_DATATYPE, *mut u8, *mut u16) -> windows_core::HRESULT,
    pub EnumAttributes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IStreamBufferSink, IStreamBufferSink_Vtbl, 0xafd1f242_7efd_45ee_ba4e_407a25c9a77a);
impl core::ops::Deref for IStreamBufferSink {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IStreamBufferSink, windows_core::IUnknown);
impl IStreamBufferSink {
    pub unsafe fn LockProfile<P0>(&self, pszstreambufferfilename: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        (windows_core::Interface::vtable(self).LockProfile)(windows_core::Interface::as_raw(self), pszstreambufferfilename.param().abi()).ok()
    }
    pub unsafe fn CreateRecorder<P0>(&self, pszfilename: P0, dwrecordtype: u32) -> windows_core::Result<windows_core::IUnknown>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CreateRecorder)(windows_core::Interface::as_raw(self), pszfilename.param().abi(), dwrecordtype, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn IsProfileLocked(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).IsProfileLocked)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IStreamBufferSink_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub LockProfile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub CreateRecorder: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsProfileLocked: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IStreamBufferSink2, IStreamBufferSink2_Vtbl, 0xdb94a660_f4fb_4bfa_bcc6_fe159a4eea93);
impl core::ops::Deref for IStreamBufferSink2 {
    type Target = IStreamBufferSink;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IStreamBufferSink2, windows_core::IUnknown, IStreamBufferSink);
impl IStreamBufferSink2 {
    pub unsafe fn UnlockProfile(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).UnlockProfile)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IStreamBufferSink2_Vtbl {
    pub base__: IStreamBufferSink_Vtbl,
    pub UnlockProfile: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IStreamBufferSink3, IStreamBufferSink3_Vtbl, 0x974723f2_887a_4452_9366_2cff3057bc8f);
impl core::ops::Deref for IStreamBufferSink3 {
    type Target = IStreamBufferSink2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IStreamBufferSink3, windows_core::IUnknown, IStreamBufferSink, IStreamBufferSink2);
impl IStreamBufferSink3 {
    pub unsafe fn SetAvailableFilter(&self, prtmin: *mut i64) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetAvailableFilter)(windows_core::Interface::as_raw(self), prtmin).ok()
    }
}
#[repr(C)]
pub struct IStreamBufferSink3_Vtbl {
    pub base__: IStreamBufferSink2_Vtbl,
    pub SetAvailableFilter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i64) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IStreamBufferSource, IStreamBufferSource_Vtbl, 0x1c5bd776_6ced_4f44_8164_5eab0e98db12);
impl core::ops::Deref for IStreamBufferSource {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IStreamBufferSource, windows_core::IUnknown);
impl IStreamBufferSource {
    pub unsafe fn SetStreamSink<P0>(&self, pistreambuffersink: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IStreamBufferSink>,
    {
        (windows_core::Interface::vtable(self).SetStreamSink)(windows_core::Interface::as_raw(self), pistreambuffersink.param().abi()).ok()
    }
}
#[repr(C)]
pub struct IStreamBufferSource_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetStreamSink: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ITSDT, ITSDT_Vtbl, 0xd19bdb43_405b_4a7c_a791_c89110c33165);
impl core::ops::Deref for ITSDT {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ITSDT, windows_core::IUnknown);
impl ITSDT {
    pub unsafe fn Initialize<P0, P1>(&self, psectionlist: P0, pmpegdata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISectionList>,
        P1: windows_core::Param<IMpeg2Data>,
    {
        (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psectionlist.param().abi(), pmpegdata.param().abi()).ok()
    }
    pub unsafe fn GetVersionNumber(&self) -> windows_core::Result<u8> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetVersionNumber)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCountOfTableDescriptors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetTableDescriptorByIndex)(windows_core::Interface::as_raw(self), dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetTableDescriptorByTag)(windows_core::Interface::as_raw(self), btag, pdwcookie, core::mem::transmute(ppdescriptor)).ok()
    }
    pub unsafe fn RegisterForNextTable<P0>(&self, hnexttableavailable: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForNextTable)(windows_core::Interface::as_raw(self), hnexttableavailable.param().abi()).ok()
    }
    pub unsafe fn GetNextTable(&self) -> windows_core::Result<ITSDT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNextTable)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn RegisterForWhenCurrent<P0>(&self, hnexttableiscurrent: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Foundation::HANDLE>,
    {
        (windows_core::Interface::vtable(self).RegisterForWhenCurrent)(windows_core::Interface::as_raw(self), hnexttableiscurrent.param().abi()).ok()
    }
    pub unsafe fn ConvertNextToCurrent(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ConvertNextToCurrent)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct ITSDT_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVersionNumber: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
    pub GetCountOfTableDescriptors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTableDescriptorByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTableDescriptorByTag: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub GetNextTable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterForWhenCurrent: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub ConvertNextToCurrent: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(ITuneRequest, ITuneRequest_Vtbl, 0x07ddc146_fc3d_11d2_9d8c_00c04f72d980);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for ITuneRequest {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(ITuneRequest, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ITuneRequest {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TuningSpace(&self) -> windows_core::Result<ITuningSpace> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TuningSpace)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Components(&self) -> windows_core::Result<IComponents> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Components)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Clone(&self) -> windows_core::Result<ITuneRequest> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Locator(&self) -> windows_core::Result<ILocator> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Locator)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetLocator<P0>(&self, locator: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ILocator>,
    {
        (windows_core::Interface::vtable(self).SetLocator)(windows_core::Interface::as_raw(self), locator.param().abi()).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct ITuneRequest_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub TuningSpace: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    TuningSpace: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Components: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Components: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Clone: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Locator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Locator: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetLocator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetLocator: usize,
}
windows_core::imp::define_interface!(ITuneRequestInfo, ITuneRequestInfo_Vtbl, 0xa3b152df_7a90_4218_ac54_9830bee8c0b6);
impl core::ops::Deref for ITuneRequestInfo {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ITuneRequestInfo, windows_core::IUnknown);
impl ITuneRequestInfo {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetLocatorData<P0>(&self, request: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ITuneRequest>,
    {
        (windows_core::Interface::vtable(self).GetLocatorData)(windows_core::Interface::as_raw(self), request.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetComponentData<P0>(&self, currentrequest: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ITuneRequest>,
    {
        (windows_core::Interface::vtable(self).GetComponentData)(windows_core::Interface::as_raw(self), currentrequest.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CreateComponentList<P0>(&self, currentrequest: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ITuneRequest>,
    {
        (windows_core::Interface::vtable(self).CreateComponentList)(windows_core::Interface::as_raw(self), currentrequest.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetNextProgram<P0>(&self, currentrequest: P0) -> windows_core::Result<ITuneRequest>
    where
        P0: windows_core::Param<ITuneRequest>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNextProgram)(windows_core::Interface::as_raw(self), currentrequest.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetPreviousProgram<P0>(&self, currentrequest: P0) -> windows_core::Result<ITuneRequest>
    where
        P0: windows_core::Param<ITuneRequest>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetPreviousProgram)(windows_core::Interface::as_raw(self), currentrequest.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetNextLocator<P0>(&self, currentrequest: P0) -> windows_core::Result<ITuneRequest>
    where
        P0: windows_core::Param<ITuneRequest>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetNextLocator)(windows_core::Interface::as_raw(self), currentrequest.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetPreviousLocator<P0>(&self, currentrequest: P0) -> windows_core::Result<ITuneRequest>
    where
        P0: windows_core::Param<ITuneRequest>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetPreviousLocator)(windows_core::Interface::as_raw(self), currentrequest.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct ITuneRequestInfo_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub GetLocatorData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetLocatorData: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetComponentData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetComponentData: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub CreateComponentList: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CreateComponentList: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetNextProgram: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetNextProgram: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetPreviousProgram: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetPreviousProgram: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetNextLocator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetNextLocator: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetPreviousLocator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetPreviousLocator: usize,
}
windows_core::imp::define_interface!(ITuneRequestInfoEx, ITuneRequestInfoEx_Vtbl, 0xee957c52_b0d0_4e78_8dd1_b87a08bfd893);
impl core::ops::Deref for ITuneRequestInfoEx {
    type Target = ITuneRequestInfo;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ITuneRequestInfoEx, windows_core::IUnknown, ITuneRequestInfo);
impl ITuneRequestInfoEx {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CreateComponentListEx<P0>(&self, currentrequest: P0) -> windows_core::Result<windows_core::IUnknown>
    where
        P0: windows_core::Param<ITuneRequest>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CreateComponentListEx)(windows_core::Interface::as_raw(self), currentrequest.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[repr(C)]
pub struct ITuneRequestInfoEx_Vtbl {
    pub base__: ITuneRequestInfo_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub CreateComponentListEx: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CreateComponentListEx: usize,
}
windows_core::imp::define_interface!(ITuner, ITuner_Vtbl, 0x28c52640_018a_11d3_9d8e_00c04f72d980);
impl core::ops::Deref for ITuner {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ITuner, windows_core::IUnknown);
impl ITuner {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TuningSpace(&self) -> windows_core::Result<ITuningSpace> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TuningSpace)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetTuningSpace<P0>(&self, tuningspace: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ITuningSpace>,
    {
        (windows_core::Interface::vtable(self).SetTuningSpace)(windows_core::Interface::as_raw(self), tuningspace.param().abi()).ok()
    }
    pub unsafe fn EnumTuningSpaces(&self) -> windows_core::Result<IEnumTuningSpaces> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EnumTuningSpaces)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TuneRequest(&self) -> windows_core::Result<ITuneRequest> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TuneRequest)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetTuneRequest<P0>(&self, tunerequest: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ITuneRequest>,
    {
        (windows_core::Interface::vtable(self).SetTuneRequest)(windows_core::Interface::as_raw(self), tunerequest.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Validate<P0>(&self, tunerequest: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ITuneRequest>,
    {
        (windows_core::Interface::vtable(self).Validate)(windows_core::Interface::as_raw(self), tunerequest.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn PreferredComponentTypes(&self) -> windows_core::Result<IComponentTypes> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).PreferredComponentTypes)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetPreferredComponentTypes<P0>(&self, componenttypes: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IComponentTypes>,
    {
        (windows_core::Interface::vtable(self).SetPreferredComponentTypes)(windows_core::Interface::as_raw(self), componenttypes.param().abi()).ok()
    }
    pub unsafe fn SignalStrength(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).SignalStrength)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn TriggerSignalEvents(&self, interval: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).TriggerSignalEvents)(windows_core::Interface::as_raw(self), interval).ok()
    }
}
#[repr(C)]
pub struct ITuner_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub TuningSpace: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    TuningSpace: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetTuningSpace: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetTuningSpace: usize,
    pub EnumTuningSpaces: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub TuneRequest: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    TuneRequest: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetTuneRequest: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetTuneRequest: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Validate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Validate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub PreferredComponentTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    PreferredComponentTypes: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetPreferredComponentTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetPreferredComponentTypes: usize,
    pub SignalStrength: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub TriggerSignalEvents: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ITunerCap, ITunerCap_Vtbl, 0xe60dfa45_8d56_4e65_a8ab_d6be9412c249);
impl core::ops::Deref for ITunerCap {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ITunerCap, windows_core::IUnknown);
impl ITunerCap {
    pub unsafe fn get_SupportedNetworkTypes(&self, ulcnetworktypesmax: u32, pulcnetworktypes: *mut u32, pguidnetworktypes: *mut windows_core::GUID) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).get_SupportedNetworkTypes)(windows_core::Interface::as_raw(self), ulcnetworktypesmax, pulcnetworktypes, pguidnetworktypes).ok()
    }
    pub unsafe fn get_SupportedVideoFormats(&self, pulamtunermodetype: *mut u32, pulanalogvideostandard: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).get_SupportedVideoFormats)(windows_core::Interface::as_raw(self), pulamtunermodetype, pulanalogvideostandard).ok()
    }
    pub unsafe fn get_AuxInputCount(&self, pulcompositecount: *mut u32, pulsvideocount: *mut u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).get_AuxInputCount)(windows_core::Interface::as_raw(self), pulcompositecount, pulsvideocount).ok()
    }
}
#[repr(C)]
pub struct ITunerCap_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub get_SupportedNetworkTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub get_SupportedVideoFormats: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub get_AuxInputCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(ITunerCapEx, ITunerCapEx_Vtbl, 0xed3e0c66_18c8_4ea6_9300_f6841fdd35dc);
impl core::ops::Deref for ITunerCapEx {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ITunerCapEx, windows_core::IUnknown);
impl ITunerCapEx {
    pub unsafe fn Has608_708Caption(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Has608_708Caption)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
}
#[repr(C)]
pub struct ITunerCapEx_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Has608_708Caption: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(ITuningSpace, ITuningSpace_Vtbl, 0x061c6e30_e622_11d2_9493_00c04f72d980);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for ITuningSpace {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(ITuningSpace, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ITuningSpace {
    pub unsafe fn UniqueName(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).UniqueName)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetUniqueName<P0>(&self, name: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetUniqueName)(windows_core::Interface::as_raw(self), name.param().abi()).ok()
    }
    pub unsafe fn FriendlyName(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).FriendlyName)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetFriendlyName<P0>(&self, name: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetFriendlyName)(windows_core::Interface::as_raw(self), name.param().abi()).ok()
    }
    pub unsafe fn CLSID(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CLSID)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn NetworkType(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).NetworkType)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetNetworkType<P0>(&self, networktypeguid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetNetworkType)(windows_core::Interface::as_raw(self), networktypeguid.param().abi()).ok()
    }
    pub unsafe fn _NetworkType(&self) -> windows_core::Result<windows_core::GUID> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._NetworkType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn Set_NetworkType(&self, networktypeguid: *const windows_core::GUID) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Set_NetworkType)(windows_core::Interface::as_raw(self), networktypeguid).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CreateTuneRequest(&self) -> windows_core::Result<ITuneRequest> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CreateTuneRequest)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EnumCategoryGUIDs(&self) -> windows_core::Result<super::super::super::System::Com::IEnumGUID> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EnumCategoryGUIDs)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EnumDeviceMonikers(&self) -> windows_core::Result<super::super::super::System::Com::IEnumMoniker> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EnumDeviceMonikers)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn DefaultPreferredComponentTypes(&self) -> windows_core::Result<IComponentTypes> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DefaultPreferredComponentTypes)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetDefaultPreferredComponentTypes<P0>(&self, newcomponenttypes: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IComponentTypes>,
    {
        (windows_core::Interface::vtable(self).SetDefaultPreferredComponentTypes)(windows_core::Interface::as_raw(self), newcomponenttypes.param().abi()).ok()
    }
    pub unsafe fn FrequencyMapping(&self) -> windows_core::Result<windows_core::BSTR> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).FrequencyMapping)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetFrequencyMapping<P0>(&self, mapping: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        (windows_core::Interface::vtable(self).SetFrequencyMapping)(windows_core::Interface::as_raw(self), mapping.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn DefaultLocator(&self) -> windows_core::Result<ILocator> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).DefaultLocator)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetDefaultLocator<P0>(&self, locatorval: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ILocator>,
    {
        (windows_core::Interface::vtable(self).SetDefaultLocator)(windows_core::Interface::as_raw(self), locatorval.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Clone(&self) -> windows_core::Result<ITuningSpace> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct ITuningSpace_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub UniqueName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SetUniqueName: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub FriendlyName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SetFriendlyName: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub CLSID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub NetworkType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SetNetworkType: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub _NetworkType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub Set_NetworkType: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub CreateTuneRequest: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CreateTuneRequest: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub EnumCategoryGUIDs: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    EnumCategoryGUIDs: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub EnumDeviceMonikers: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    EnumDeviceMonikers: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub DefaultPreferredComponentTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    DefaultPreferredComponentTypes: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetDefaultPreferredComponentTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetDefaultPreferredComponentTypes: usize,
    pub FrequencyMapping: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    pub SetFrequencyMapping: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub DefaultLocator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    DefaultLocator: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetDefaultLocator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetDefaultLocator: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Clone: usize,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(ITuningSpaceContainer, ITuningSpaceContainer_Vtbl, 0x5b692e84_e2f1_11d2_9493_00c04f72d980);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for ITuningSpaceContainer {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(ITuningSpaceContainer, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ITuningSpaceContainer {
    pub unsafe fn Count(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Count)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._NewEnum)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_Item<P0>(&self, varindex: P0) -> windows_core::Result<ITuningSpace>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_Item)(windows_core::Interface::as_raw(self), varindex.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn put_Item<P0, P1>(&self, varindex: P0, tuningspace: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
        P1: windows_core::Param<ITuningSpace>,
    {
        (windows_core::Interface::vtable(self).put_Item)(windows_core::Interface::as_raw(self), varindex.param().abi(), tuningspace.param().abi()).ok()
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TuningSpacesForCLSID<P0>(&self, spaceclsid: P0) -> windows_core::Result<ITuningSpaces>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TuningSpacesForCLSID)(windows_core::Interface::as_raw(self), spaceclsid.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn _TuningSpacesForCLSID2(&self, spaceclsid: *const windows_core::GUID) -> windows_core::Result<ITuningSpaces> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._TuningSpacesForCLSID2)(windows_core::Interface::as_raw(self), spaceclsid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TuningSpacesForName<P0>(&self, name: P0) -> windows_core::Result<ITuningSpaces>
    where
        P0: windows_core::Param<windows_core::BSTR>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).TuningSpacesForName)(windows_core::Interface::as_raw(self), name.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn FindID<P0>(&self, tuningspace: P0) -> windows_core::Result<i32>
    where
        P0: windows_core::Param<ITuningSpace>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).FindID)(windows_core::Interface::as_raw(self), tuningspace.param().abi(), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Add<P0>(&self, tuningspace: P0) -> windows_core::Result<windows_core::VARIANT>
    where
        P0: windows_core::Param<ITuningSpace>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Add)(windows_core::Interface::as_raw(self), tuningspace.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn EnumTuningSpaces(&self) -> windows_core::Result<IEnumTuningSpaces> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EnumTuningSpaces)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn Remove<P0>(&self, index: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        (windows_core::Interface::vtable(self).Remove)(windows_core::Interface::as_raw(self), index.param().abi()).ok()
    }
    pub unsafe fn MaxCount(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).MaxCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetMaxCount(&self, maxcount: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetMaxCount)(windows_core::Interface::as_raw(self), maxcount).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct ITuningSpaceContainer_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub _NewEnum: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    _NewEnum: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get_Item: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_Item: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub put_Item: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    put_Item: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub TuningSpacesForCLSID: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    TuningSpacesForCLSID: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub _TuningSpacesForCLSID2: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    _TuningSpacesForCLSID2: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub TuningSpacesForName: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::BSTR>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    TuningSpacesForName: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub FindID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    FindID: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub Add: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Add: usize,
    pub EnumTuningSpaces: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Remove: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT,
    pub MaxCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetMaxCount: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(ITuningSpaces, ITuningSpaces_Vtbl, 0x901284e4_33fe_4b69_8d63_634a596f3756);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for ITuningSpaces {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(ITuningSpaces, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl ITuningSpaces {
    pub unsafe fn Count(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).Count)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self)._NewEnum)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn get_Item<P0>(&self, varindex: P0) -> windows_core::Result<ITuningSpace>
    where
        P0: windows_core::Param<windows_core::VARIANT>,
    {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).get_Item)(windows_core::Interface::as_raw(self), varindex.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn EnumTuningSpaces(&self) -> windows_core::Result<IEnumTuningSpaces> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).EnumTuningSpaces)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct ITuningSpaces_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub _NewEnum: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    _NewEnum: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub get_Item: unsafe extern "system" fn(*mut core::ffi::c_void, core::mem::MaybeUninit<windows_core::VARIANT>, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    get_Item: usize,
    pub EnumTuningSpaces: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IXDSCodec, IXDSCodec_Vtbl, 0xc4c4c4b3_0049_4e2b_98fb_9537f6ce516d);
impl core::ops::Deref for IXDSCodec {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IXDSCodec, windows_core::IUnknown);
impl IXDSCodec {
    pub unsafe fn XDSToRatObjOK(&self) -> windows_core::Result<windows_core::HRESULT> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).XDSToRatObjOK)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn SetCCSubstreamService(&self, substreammask: i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetCCSubstreamService)(windows_core::Interface::as_raw(self), substreammask).ok()
    }
    pub unsafe fn CCSubstreamService(&self) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).CCSubstreamService)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
    }
    pub unsafe fn GetContentAdvisoryRating(&self, prat: *mut i32, ppktseqid: *mut i32, pcallseqid: *mut i32, ptimestart: *mut i64, ptimeend: *mut i64) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetContentAdvisoryRating)(windows_core::Interface::as_raw(self), prat, ppktseqid, pcallseqid, ptimestart, ptimeend).ok()
    }
    pub unsafe 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<()> {
        (windows_core::Interface::vtable(self).GetXDSPacket)(windows_core::Interface::as_raw(self), pxdsclasspkt, pxdstypepkt, core::mem::transmute(pbstrxdspkt), ppktseqid, pcallseqid, ptimestart, ptimeend).ok()
    }
    pub unsafe fn GetCurrLicenseExpDate(&self, prottype: *const ProtType) -> windows_core::Result<i32> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetCurrLicenseExpDate)(windows_core::Interface::as_raw(self), prottype, &mut result__).map(|| result__)
    }
    pub unsafe fn GetLastErrorCode(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).GetLastErrorCode)(windows_core::Interface::as_raw(self)).ok()
    }
}
#[repr(C)]
pub struct IXDSCodec_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub XDSToRatObjOK: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::HRESULT) -> windows_core::HRESULT,
    pub SetCCSubstreamService: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub CCSubstreamService: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub GetContentAdvisoryRating: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32, *mut i32, *mut i32, *mut i64, *mut i64) -> windows_core::HRESULT,
    pub GetXDSPacket: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32, *mut i32, *mut core::mem::MaybeUninit<windows_core::BSTR>, *mut i32, *mut i32, *mut i64, *mut i64) -> windows_core::HRESULT,
    pub GetCurrLicenseExpDate: unsafe extern "system" fn(*mut core::ffi::c_void, *const ProtType, *mut i32) -> windows_core::HRESULT,
    pub GetLastErrorCode: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(IXDSCodecConfig, IXDSCodecConfig_Vtbl, 0xc4c4c4d3_0049_4e2b_98fb_9537f6ce516d);
impl core::ops::Deref for IXDSCodecConfig {
    type Target = windows_core::IUnknown;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IXDSCodecConfig, windows_core::IUnknown);
impl IXDSCodecConfig {
    pub unsafe fn GetSecureChannelObject(&self) -> windows_core::Result<windows_core::IUnknown> {
        let mut result__ = core::mem::zeroed();
        (windows_core::Interface::vtable(self).GetSecureChannelObject)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
    pub unsafe fn SetPauseBufferTime(&self, dwpausebuffertime: u32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).SetPauseBufferTime)(windows_core::Interface::as_raw(self), dwpausebuffertime).ok()
    }
}
#[repr(C)]
pub struct IXDSCodecConfig_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetSecureChannelObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetPauseBufferTime: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IXDSCodecEvents, IXDSCodecEvents_Vtbl, 0xc4c4c4c3_0049_4e2b_98fb_9537f6ce516d);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IXDSCodecEvents {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IXDSCodecEvents, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IXDSCodecEvents {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IXDSCodecEvents_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IXDSToRat, IXDSToRat_Vtbl, 0xc5c5c5b0_3abc_11d6_b25b_00c04fa0c026);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IXDSToRat {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IXDSToRat, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IXDSToRat {
    pub unsafe fn Init(&self) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).Init)(windows_core::Interface::as_raw(self)).ok()
    }
    pub unsafe fn ParseXDSBytePair(&self, byte1: u8, byte2: u8, pensystem: *mut EnTvRat_System, penlevel: *mut EnTvRat_GenericLevel, plbfenattributes: *mut i32) -> windows_core::Result<()> {
        (windows_core::Interface::vtable(self).ParseXDSBytePair)(windows_core::Interface::as_raw(self), byte1, byte2, pensystem, penlevel, plbfenattributes).ok()
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct IXDSToRat_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
    pub Init: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ParseXDSBytePair: unsafe extern "system" fn(*mut core::ffi::c_void, u8, u8, *mut EnTvRat_System, *mut EnTvRat_GenericLevel, *mut i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(_IMSVidCtlEvents, _IMSVidCtlEvents_Vtbl, 0xb0edf164_910a_11d2_b632_00c04f79498e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for _IMSVidCtlEvents {
    type Target = super::super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(_IMSVidCtlEvents, windows_core::IUnknown, super::super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl _IMSVidCtlEvents {}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
pub struct _IMSVidCtlEvents_Vtbl {
    pub base__: super::super::super::System::Com::IDispatch_Vtbl,
}
pub const ATSC_EIT_TID: u32 = 203u32;
pub const ATSC_ETM_LOCATION_IN_PTC_FOR_EVENT: u32 = 2u32;
pub const ATSC_ETM_LOCATION_IN_PTC_FOR_PSIP: u32 = 1u32;
pub const ATSC_ETM_LOCATION_NOT_PRESENT: u32 = 0u32;
pub const ATSC_ETM_LOCATION_RESERVED: u32 = 3u32;
pub const ATSC_ETT_TID: u32 = 204u32;
pub const ATSC_MGT_PID: u32 = 8187u32;
pub const ATSC_MGT_TID: u32 = 199u32;
pub const ATSC_PIT_TID: u32 = 208u32;
pub const ATSC_RRT_PID: u32 = 8187u32;
pub const ATSC_RRT_TID: u32 = 202u32;
pub const ATSC_STT_PID: u32 = 8187u32;
pub const ATSC_STT_TID: u32 = 205u32;
pub const ATSC_VCT_CABL_TID: u32 = 201u32;
pub const ATSC_VCT_PID: u32 = 8187u32;
pub const ATSC_VCT_TERR_TID: u32 = 200u32;
pub const AgeBased: EnTvRat_System = EnTvRat_System(9i32);
pub const AudioType_Commentary: u32 = 5u32;
pub const AudioType_Dialogue: u32 = 4u32;
pub const AudioType_Emergency: u32 = 6u32;
pub const AudioType_Hearing_Impaired: u32 = 3u32;
pub const AudioType_Music_And_Effects: u32 = 1u32;
pub const AudioType_Reserved: i32 = -1i32;
pub const AudioType_Standard: u32 = 0u32;
pub const AudioType_Visually_Impaired: u32 = 2u32;
pub const AudioType_Voiceover: u32 = 7u32;
pub const Bda_DigitalStandard_ATSC: BDA_DigitalSignalStandard = BDA_DigitalSignalStandard(8i32);
pub const Bda_DigitalStandard_DVB_C: BDA_DigitalSignalStandard = BDA_DigitalSignalStandard(4i32);
pub const Bda_DigitalStandard_DVB_S: BDA_DigitalSignalStandard = BDA_DigitalSignalStandard(2i32);
pub const Bda_DigitalStandard_DVB_T: BDA_DigitalSignalStandard = BDA_DigitalSignalStandard(1i32);
pub const Bda_DigitalStandard_ISDB_C: BDA_DigitalSignalStandard = BDA_DigitalSignalStandard(64i32);
pub const Bda_DigitalStandard_ISDB_S: BDA_DigitalSignalStandard = BDA_DigitalSignalStandard(32i32);
pub const Bda_DigitalStandard_ISDB_T: BDA_DigitalSignalStandard = BDA_DigitalSignalStandard(16i32);
pub const Bda_DigitalStandard_None: BDA_DigitalSignalStandard = BDA_DigitalSignalStandard(0i32);
pub const Bda_LockType_Complete: BDA_LockType = BDA_LockType(128i32);
pub const Bda_LockType_DecoderDemod: BDA_LockType = BDA_LockType(2i32);
pub const Bda_LockType_None: BDA_LockType = BDA_LockType(0i32);
pub const Bda_LockType_PLL: BDA_LockType = BDA_LockType(1i32);
pub const Bda_SignalType_Analog: BDA_SignalType = BDA_SignalType(1i32);
pub const Bda_SignalType_Digital: BDA_SignalType = BDA_SignalType(2i32);
pub const Bda_SignalType_Unknown: BDA_SignalType = BDA_SignalType(0i32);
pub const BfAttrNone: BfEnTvRat_GenericAttributes = BfEnTvRat_GenericAttributes(0i32);
pub const BfIsAttr_1: BfEnTvRat_GenericAttributes = BfEnTvRat_GenericAttributes(2i32);
pub const BfIsAttr_2: BfEnTvRat_GenericAttributes = BfEnTvRat_GenericAttributes(4i32);
pub const BfIsAttr_3: BfEnTvRat_GenericAttributes = BfEnTvRat_GenericAttributes(8i32);
pub const BfIsAttr_4: BfEnTvRat_GenericAttributes = BfEnTvRat_GenericAttributes(16i32);
pub const BfIsAttr_5: BfEnTvRat_GenericAttributes = BfEnTvRat_GenericAttributes(32i32);
pub const BfIsAttr_6: BfEnTvRat_GenericAttributes = BfEnTvRat_GenericAttributes(64i32);
pub const BfIsAttr_7: BfEnTvRat_GenericAttributes = BfEnTvRat_GenericAttributes(128i32);
pub const BfIsBlocked: BfEnTvRat_GenericAttributes = BfEnTvRat_GenericAttributes(1i32);
pub const BfValidAttrSubmask: BfEnTvRat_GenericAttributes = BfEnTvRat_GenericAttributes(255i32);
pub const CAE_IsBlocked: BfEnTvRat_Attributes_CAE_TV = BfEnTvRat_Attributes_CAE_TV(1i32);
pub const CAE_TV_14: EnTvRat_CAE_TV = EnTvRat_CAE_TV(5i32);
pub const CAE_TV_18: EnTvRat_CAE_TV = EnTvRat_CAE_TV(6i32);
pub const CAE_TV_C: EnTvRat_CAE_TV = EnTvRat_CAE_TV(1i32);
pub const CAE_TV_C8: EnTvRat_CAE_TV = EnTvRat_CAE_TV(2i32);
pub const CAE_TV_Exempt: EnTvRat_CAE_TV = EnTvRat_CAE_TV(0i32);
pub const CAE_TV_G: EnTvRat_CAE_TV = EnTvRat_CAE_TV(3i32);
pub const CAE_TV_PG: EnTvRat_CAE_TV = EnTvRat_CAE_TV(4i32);
pub const CAE_TV_Reserved: EnTvRat_CAE_TV = EnTvRat_CAE_TV(7i32);
pub const CAE_ValidAttrSubmask: BfEnTvRat_Attributes_CAE_TV = BfEnTvRat_Attributes_CAE_TV(1i32);
pub const CAF_IsBlocked: BfEnTvRat_Attributes_CAF_TV = BfEnTvRat_Attributes_CAF_TV(1i32);
pub const CAF_TV_13: EnTvRat_CAF_TV = EnTvRat_CAF_TV(3i32);
pub const CAF_TV_16: EnTvRat_CAF_TV = EnTvRat_CAF_TV(4i32);
pub const CAF_TV_18: EnTvRat_CAF_TV = EnTvRat_CAF_TV(5i32);
pub const CAF_TV_8: EnTvRat_CAF_TV = EnTvRat_CAF_TV(2i32);
pub const CAF_TV_Exempt: EnTvRat_CAF_TV = EnTvRat_CAF_TV(0i32);
pub const CAF_TV_G: EnTvRat_CAF_TV = EnTvRat_CAF_TV(1i32);
pub const CAF_TV_Reserved: EnTvRat_CAF_TV = EnTvRat_CAF_TV(7i32);
pub const CAF_TV_Reserved6: EnTvRat_CAF_TV = EnTvRat_CAF_TV(6i32);
pub const CAF_ValidAttrSubmask: BfEnTvRat_Attributes_CAF_TV = BfEnTvRat_Attributes_CAF_TV(1i32);
pub const CLSID_CPCAFiltersCategory: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4fc_0049_4e2b_98fb_9537f6ce516d);
pub const CLSID_DTFilterEncProperties: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c482_0049_4e2b_98fb_9537f6ce516d);
pub const CLSID_DTFilterTagProperties: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c492_0049_4e2b_98fb_9537f6ce516d);
pub const CLSID_ETFilterEncProperties: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c481_0049_4e2b_98fb_9537f6ce516d);
pub const CLSID_ETFilterTagProperties: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c491_0049_4e2b_98fb_9537f6ce516d);
pub const CLSID_Mpeg2TableFilter: windows_core::GUID = windows_core::GUID::from_u128(0x752845f1_758f_4c83_a043_4270c593308e);
pub const CLSID_PTFilter: windows_core::GUID = windows_core::GUID::from_u128(0x9cd31617_b303_4f96_8330_2eb173ea4dc6);
pub const CLSID_XDSCodecProperties: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c483_0049_4e2b_98fb_9537f6ce516d);
pub const CLSID_XDSCodecTagProperties: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c493_0049_4e2b_98fb_9537f6ce516d);
pub const COMPONENT_TAG_CAPTION_MAX: u32 = 55u32;
pub const COMPONENT_TAG_CAPTION_MIN: u32 = 48u32;
pub const COMPONENT_TAG_SUPERIMPOSE_MAX: u32 = 63u32;
pub const COMPONENT_TAG_SUPERIMPOSE_MIN: u32 = 56u32;
pub const CONTENT: RecordingType = RecordingType(0i32);
pub const COPP_Activate: COPPEventBlockReason = COPPEventBlockReason(8i32);
pub const COPP_AeroGlassOff: COPPEventBlockReason = COPPEventBlockReason(5i32);
pub const COPP_BadCertificate: COPPEventBlockReason = COPPEventBlockReason(3i32);
pub const COPP_BadDriver: COPPEventBlockReason = COPPEventBlockReason(0i32);
pub const COPP_DigitalAudioUnprotected: COPPEventBlockReason = COPPEventBlockReason(9i32);
pub const COPP_ForbiddenVideo: COPPEventBlockReason = COPPEventBlockReason(7i32);
pub const COPP_InvalidBusProtection: COPPEventBlockReason = COPPEventBlockReason(4i32);
pub const COPP_NoCardHDCPSupport: COPPEventBlockReason = COPPEventBlockReason(1i32);
pub const COPP_NoMonitorHDCPSupport: COPPEventBlockReason = COPPEventBlockReason(2i32);
pub const COPP_RogueApp: COPPEventBlockReason = COPPEventBlockReason(6i32);
pub const COPP_Unknown: COPPEventBlockReason = COPPEventBlockReason(-1i32);
pub const CPEVENT_BITSHIFT_COPP: CPEventBitShift = CPEventBitShift(1i32);
pub const CPEVENT_BITSHIFT_DOWNRES: CPEventBitShift = CPEventBitShift(5i32);
pub const CPEVENT_BITSHIFT_LICENSE: CPEventBitShift = CPEventBitShift(2i32);
pub const CPEVENT_BITSHIFT_NO_PLAYREADY: CPEventBitShift = CPEventBitShift(9i32);
pub const CPEVENT_BITSHIFT_PENDING_CERTIFICATE: CPEventBitShift = CPEventBitShift(8i32);
pub const CPEVENT_BITSHIFT_RATINGS: CPEventBitShift = CPEventBitShift(0i32);
pub const CPEVENT_BITSHIFT_ROLLBACK: CPEventBitShift = CPEventBitShift(3i32);
pub const CPEVENT_BITSHIFT_SAC: CPEventBitShift = CPEventBitShift(4i32);
pub const CPEVENT_BITSHIFT_STUBLIB: CPEventBitShift = CPEventBitShift(6i32);
pub const CPEVENT_BITSHIFT_UNTRUSTEDGRAPH: CPEventBitShift = CPEventBitShift(7i32);
pub const CPEVENT_COPP: CPEvents = CPEvents(2i32);
pub const CPEVENT_DOWNRES: CPEvents = CPEvents(6i32);
pub const CPEVENT_LICENSE: CPEvents = CPEvents(3i32);
pub const CPEVENT_NONE: CPEvents = CPEvents(0i32);
pub const CPEVENT_PROTECTWINDOWED: CPEvents = CPEvents(9i32);
pub const CPEVENT_RATINGS: CPEvents = CPEvents(1i32);
pub const CPEVENT_ROLLBACK: CPEvents = CPEvents(4i32);
pub const CPEVENT_SAC: CPEvents = CPEvents(5i32);
pub const CPEVENT_STUBLIB: CPEvents = CPEvents(7i32);
pub const CPEVENT_UNTRUSTEDGRAPH: CPEvents = CPEvents(8i32);
pub const CRID_LOCATION_DVB_RESERVED1: CRID_LOCATION = CRID_LOCATION(2i32);
pub const CRID_LOCATION_DVB_RESERVED2: CRID_LOCATION = CRID_LOCATION(3i32);
pub const CRID_LOCATION_IN_CIT: CRID_LOCATION = CRID_LOCATION(1i32);
pub const CRID_LOCATION_IN_DESCRIPTOR: CRID_LOCATION = CRID_LOCATION(0i32);
pub const Canadian_English: EnTvRat_System = EnTvRat_System(2i32);
pub const Canadian_French: EnTvRat_System = EnTvRat_System(3i32);
pub const ChannelChangeSpanningEvent_End: ChannelChangeSpanningEvent_State = ChannelChangeSpanningEvent_State(2i32);
pub const ChannelChangeSpanningEvent_Start: ChannelChangeSpanningEvent_State = ChannelChangeSpanningEvent_State(0i32);
pub const ChannelTypeAudio: ChannelType = ChannelType(4i32);
pub const ChannelTypeCaptions: ChannelType = ChannelType(32i32);
pub const ChannelTypeData: ChannelType = ChannelType(128i32);
pub const ChannelTypeNone: ChannelType = ChannelType(0i32);
pub const ChannelTypeOther: ChannelType = ChannelType(1i32);
pub const ChannelTypeSubtitles: ChannelType = ChannelType(16i32);
pub const ChannelTypeSuperimpose: ChannelType = ChannelType(64i32);
pub const ChannelTypeText: ChannelType = ChannelType(8i32);
pub const ChannelTypeVideo: ChannelType = ChannelType(2i32);
pub const DEF_MODE_PROFILE: CROSSBAR_DEFAULT_FLAGS = CROSSBAR_DEFAULT_FLAGS(1i32);
pub const DEF_MODE_STREAMS: CROSSBAR_DEFAULT_FLAGS = CROSSBAR_DEFAULT_FLAGS(2i32);
pub const DESC_LINKAGE_CA_REPLACEMENT: DESC_LINKAGE_TYPE = DESC_LINKAGE_TYPE(3i32);
pub const DESC_LINKAGE_COMPLETE_NET_BOUQUET_SI: DESC_LINKAGE_TYPE = DESC_LINKAGE_TYPE(4i32);
pub const DESC_LINKAGE_DATA: DESC_LINKAGE_TYPE = DESC_LINKAGE_TYPE(6i32);
pub const DESC_LINKAGE_EPG: DESC_LINKAGE_TYPE = DESC_LINKAGE_TYPE(2i32);
pub const DESC_LINKAGE_INFORMATION: DESC_LINKAGE_TYPE = DESC_LINKAGE_TYPE(1i32);
pub const DESC_LINKAGE_REPLACEMENT: DESC_LINKAGE_TYPE = DESC_LINKAGE_TYPE(5i32);
pub const DESC_LINKAGE_RESERVED0: DESC_LINKAGE_TYPE = DESC_LINKAGE_TYPE(0i32);
pub const DESC_LINKAGE_RESERVED1: DESC_LINKAGE_TYPE = DESC_LINKAGE_TYPE(7i32);
pub const DESC_LINKAGE_RESERVED2: DESC_LINKAGE_TYPE = DESC_LINKAGE_TYPE(255i32);
pub const DESC_LINKAGE_USER: DESC_LINKAGE_TYPE = DESC_LINKAGE_TYPE(8i32);
pub const DISPID_CHTUNER_ACTR_MINOR_CHANNEL: DISPID_TUNER = DISPID_TUNER(201i32);
pub const DISPID_CHTUNER_ATVAC_CHANNEL: DISPID_TUNER = DISPID_TUNER(101i32);
pub const DISPID_CHTUNER_ATVDC_CONTENT: DISPID_TUNER = DISPID_TUNER(102i32);
pub const DISPID_CHTUNER_ATVDC_SYSTEM: DISPID_TUNER = DISPID_TUNER(101i32);
pub const DISPID_CHTUNER_CIDTR_CHANNELID: DISPID_TUNER = DISPID_TUNER(101i32);
pub const DISPID_CHTUNER_CTR_CHANNEL: DISPID_TUNER = DISPID_TUNER(101i32);
pub const DISPID_CHTUNER_DCTR_MAJOR_CHANNEL: DISPID_TUNER = DISPID_TUNER(301i32);
pub const DISPID_CHTUNER_DCTR_SRCID: DISPID_TUNER = DISPID_TUNER(302i32);
pub const DISPID_DVBTUNER_DVBC_ATTRIBUTESVALID: DISPID_TUNER = DISPID_TUNER(101i32);
pub const DISPID_DVBTUNER_DVBC_COMPONENTTYPE: DISPID_TUNER = DISPID_TUNER(104i32);
pub const DISPID_DVBTUNER_DVBC_PID: DISPID_TUNER = DISPID_TUNER(102i32);
pub const DISPID_DVBTUNER_DVBC_TAG: DISPID_TUNER = DISPID_TUNER(103i32);
pub const DISPID_DVBTUNER_ONID: DISPID_TUNER = DISPID_TUNER(101i32);
pub const DISPID_DVBTUNER_SID: DISPID_TUNER = DISPID_TUNER(103i32);
pub const DISPID_DVBTUNER_TSID: DISPID_TUNER = DISPID_TUNER(102i32);
pub const DISPID_MP2TUNERFACTORY_CREATETUNEREQUEST: DISPID_TUNER = DISPID_TUNER(1i32);
pub const DISPID_MP2TUNER_PROGNO: DISPID_TUNER = DISPID_TUNER(102i32);
pub const DISPID_MP2TUNER_TSID: DISPID_TUNER = DISPID_TUNER(101i32);
pub const DISPID_TUNER_ATSCCT_FLAGS: DISPID_TUNER = DISPID_TUNER(300i32);
pub const DISPID_TUNER_CT_CATEGORY: DISPID_TUNER = DISPID_TUNER(1i32);
pub const DISPID_TUNER_CT_CLONE: DISPID_TUNER = DISPID_TUNER(9i32);
pub const DISPID_TUNER_CT_MEDIAFORMATTYPE: DISPID_TUNER = DISPID_TUNER(6i32);
pub const DISPID_TUNER_CT_MEDIAMAJORTYPE: DISPID_TUNER = DISPID_TUNER(2i32);
pub const DISPID_TUNER_CT_MEDIASUBTYPE: DISPID_TUNER = DISPID_TUNER(4i32);
pub const DISPID_TUNER_CT_MEDIATYPE: DISPID_TUNER = DISPID_TUNER(8i32);
pub const DISPID_TUNER_CT__MEDIAFORMATTYPE: DISPID_TUNER = DISPID_TUNER(7i32);
pub const DISPID_TUNER_CT__MEDIAMAJORTYPE: DISPID_TUNER = DISPID_TUNER(3i32);
pub const DISPID_TUNER_CT__MEDIASUBTYPE: DISPID_TUNER = DISPID_TUNER(5i32);
pub const DISPID_TUNER_C_ANALOG_AUDIO: DISPID_TUNER = DISPID_TUNER(201i32);
pub const DISPID_TUNER_C_CLONE: DISPID_TUNER = DISPID_TUNER(5i32);
pub const DISPID_TUNER_C_DESCRIPTION: DISPID_TUNER = DISPID_TUNER(4i32);
pub const DISPID_TUNER_C_LANGID: DISPID_TUNER = DISPID_TUNER(3i32);
pub const DISPID_TUNER_C_MP2_PCRPID: DISPID_TUNER = DISPID_TUNER(102i32);
pub const DISPID_TUNER_C_MP2_PID: DISPID_TUNER = DISPID_TUNER(101i32);
pub const DISPID_TUNER_C_MP2_PROGNO: DISPID_TUNER = DISPID_TUNER(103i32);
pub const DISPID_TUNER_C_STATUS: DISPID_TUNER = DISPID_TUNER(2i32);
pub const DISPID_TUNER_C_TYPE: DISPID_TUNER = DISPID_TUNER(1i32);
pub const DISPID_TUNER_LCT_LANGID: DISPID_TUNER = DISPID_TUNER(100i32);
pub const DISPID_TUNER_L_ANALOG_STANDARD: DISPID_TUNER = DISPID_TUNER(601i32);
pub const DISPID_TUNER_L_ATSC_MP2_PROGNO: DISPID_TUNER = DISPID_TUNER(203i32);
pub const DISPID_TUNER_L_ATSC_PHYS_CHANNEL: DISPID_TUNER = DISPID_TUNER(201i32);
pub const DISPID_TUNER_L_ATSC_TSID: DISPID_TUNER = DISPID_TUNER(202i32);
pub const DISPID_TUNER_L_CARRFREQ: DISPID_TUNER = DISPID_TUNER(1i32);
pub const DISPID_TUNER_L_CLONE: DISPID_TUNER = DISPID_TUNER(8i32);
pub const DISPID_TUNER_L_DTV_O_MAJOR_CHANNEL: DISPID_TUNER = DISPID_TUNER(701i32);
pub const DISPID_TUNER_L_DVBS2_DISEQ_LNB_SOURCE: DISPID_TUNER = DISPID_TUNER(406i32);
pub const DISPID_TUNER_L_DVBS2_PILOT: DISPID_TUNER = DISPID_TUNER(412i32);
pub const DISPID_TUNER_L_DVBS2_ROLLOFF: DISPID_TUNER = DISPID_TUNER(411i32);
pub const DISPID_TUNER_L_DVBS_AZIMUTH: DISPID_TUNER = DISPID_TUNER(404i32);
pub const DISPID_TUNER_L_DVBS_ELEVATION: DISPID_TUNER = DISPID_TUNER(405i32);
pub const DISPID_TUNER_L_DVBS_ORBITAL: DISPID_TUNER = DISPID_TUNER(403i32);
pub const DISPID_TUNER_L_DVBS_POLARISATION: DISPID_TUNER = DISPID_TUNER(401i32);
pub const DISPID_TUNER_L_DVBS_WEST: DISPID_TUNER = DISPID_TUNER(402i32);
pub const DISPID_TUNER_L_DVBT2_PHYSICALLAYERPIPEID: DISPID_TUNER = DISPID_TUNER(351i32);
pub const DISPID_TUNER_L_DVBT_BANDWIDTH: DISPID_TUNER = DISPID_TUNER(301i32);
pub const DISPID_TUNER_L_DVBT_GUARDINTERVAL: DISPID_TUNER = DISPID_TUNER(304i32);
pub const DISPID_TUNER_L_DVBT_HALPHA: DISPID_TUNER = DISPID_TUNER(305i32);
pub const DISPID_TUNER_L_DVBT_INUSE: DISPID_TUNER = DISPID_TUNER(307i32);
pub const DISPID_TUNER_L_DVBT_LPINNERFECMETHOD: DISPID_TUNER = DISPID_TUNER(302i32);
pub const DISPID_TUNER_L_DVBT_LPINNERFECRATE: DISPID_TUNER = DISPID_TUNER(303i32);
pub const DISPID_TUNER_L_DVBT_TRANSMISSIONMODE: DISPID_TUNER = DISPID_TUNER(306i32);
pub const DISPID_TUNER_L_INNERFECMETHOD: DISPID_TUNER = DISPID_TUNER(2i32);
pub const DISPID_TUNER_L_INNERFECRATE: DISPID_TUNER = DISPID_TUNER(3i32);
pub const DISPID_TUNER_L_MOD: DISPID_TUNER = DISPID_TUNER(6i32);
pub const DISPID_TUNER_L_OUTERFECMETHOD: DISPID_TUNER = DISPID_TUNER(4i32);
pub const DISPID_TUNER_L_OUTERFECRATE: DISPID_TUNER = DISPID_TUNER(5i32);
pub const DISPID_TUNER_L_SYMRATE: DISPID_TUNER = DISPID_TUNER(7i32);
pub const DISPID_TUNER_MP2CT_TYPE: DISPID_TUNER = DISPID_TUNER(200i32);
pub const DISPID_TUNER_TR_CLONE: DISPID_TUNER = DISPID_TUNER(3i32);
pub const DISPID_TUNER_TR_COMPONENTS: DISPID_TUNER = DISPID_TUNER(2i32);
pub const DISPID_TUNER_TR_LOCATOR: DISPID_TUNER = DISPID_TUNER(4i32);
pub const DISPID_TUNER_TR_TUNINGSPACE: DISPID_TUNER = DISPID_TUNER(1i32);
pub const DISPID_TUNER_TS_AR_COUNTRYCODE: DISPID_TUNER = DISPID_TUNER(104i32);
pub const DISPID_TUNER_TS_AR_MAXFREQUENCY: DISPID_TUNER = DISPID_TUNER(102i32);
pub const DISPID_TUNER_TS_AR_MINFREQUENCY: DISPID_TUNER = DISPID_TUNER(101i32);
pub const DISPID_TUNER_TS_AR_STEP: DISPID_TUNER = DISPID_TUNER(103i32);
pub const DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL: DISPID_TUNER = DISPID_TUNER(202i32);
pub const DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL: DISPID_TUNER = DISPID_TUNER(204i32);
pub const DISPID_TUNER_TS_ATSC_MINMINORCHANNEL: DISPID_TUNER = DISPID_TUNER(201i32);
pub const DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL: DISPID_TUNER = DISPID_TUNER(203i32);
pub const DISPID_TUNER_TS_ATV_COUNTRYCODE: DISPID_TUNER = DISPID_TUNER(104i32);
pub const DISPID_TUNER_TS_ATV_INPUTTYPE: DISPID_TUNER = DISPID_TUNER(103i32);
pub const DISPID_TUNER_TS_ATV_MAXCHANNEL: DISPID_TUNER = DISPID_TUNER(102i32);
pub const DISPID_TUNER_TS_ATV_MINCHANNEL: DISPID_TUNER = DISPID_TUNER(101i32);
pub const DISPID_TUNER_TS_AUX_COUNTRYCODE: DISPID_TUNER = DISPID_TUNER(101i32);
pub const DISPID_TUNER_TS_CLONE: DISPID_TUNER = DISPID_TUNER(12i32);
pub const DISPID_TUNER_TS_CLSID: DISPID_TUNER = DISPID_TUNER(3i32);
pub const DISPID_TUNER_TS_CREATETUNEREQUEST: DISPID_TUNER = DISPID_TUNER(6i32);
pub const DISPID_TUNER_TS_DC_MAXMAJORCHANNEL: DISPID_TUNER = DISPID_TUNER(302i32);
pub const DISPID_TUNER_TS_DC_MAXSOURCEID: DISPID_TUNER = DISPID_TUNER(304i32);
pub const DISPID_TUNER_TS_DC_MINMAJORCHANNEL: DISPID_TUNER = DISPID_TUNER(301i32);
pub const DISPID_TUNER_TS_DC_MINSOURCEID: DISPID_TUNER = DISPID_TUNER(303i32);
pub const DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES: DISPID_TUNER = DISPID_TUNER(9i32);
pub const DISPID_TUNER_TS_DEFLOCATOR: DISPID_TUNER = DISPID_TUNER(11i32);
pub const DISPID_TUNER_TS_DVB2_NETWORK_ID: DISPID_TUNER = DISPID_TUNER(102i32);
pub const DISPID_TUNER_TS_DVBS2_HI_OSC_FREQ_OVERRIDE: DISPID_TUNER = DISPID_TUNER(408i32);
pub const DISPID_TUNER_TS_DVBS2_LNB_SWITCH_FREQ_OVERRIDE: DISPID_TUNER = DISPID_TUNER(409i32);
pub const DISPID_TUNER_TS_DVBS2_LOW_OSC_FREQ_OVERRIDE: DISPID_TUNER = DISPID_TUNER(407i32);
pub const DISPID_TUNER_TS_DVBS2_SPECTRAL_INVERSION_OVERRIDE: DISPID_TUNER = DISPID_TUNER(410i32);
pub const DISPID_TUNER_TS_DVBS_HI_OSC_FREQ: DISPID_TUNER = DISPID_TUNER(1002i32);
pub const DISPID_TUNER_TS_DVBS_INPUT_RANGE: DISPID_TUNER = DISPID_TUNER(1004i32);
pub const DISPID_TUNER_TS_DVBS_LNB_SWITCH_FREQ: DISPID_TUNER = DISPID_TUNER(1003i32);
pub const DISPID_TUNER_TS_DVBS_LOW_OSC_FREQ: DISPID_TUNER = DISPID_TUNER(1001i32);
pub const DISPID_TUNER_TS_DVBS_SPECTRAL_INVERSION: DISPID_TUNER = DISPID_TUNER(1005i32);
pub const DISPID_TUNER_TS_DVB_SYSTEMTYPE: DISPID_TUNER = DISPID_TUNER(101i32);
pub const DISPID_TUNER_TS_ENUMCATEGORYGUIDS: DISPID_TUNER = DISPID_TUNER(7i32);
pub const DISPID_TUNER_TS_ENUMDEVICEMONIKERS: DISPID_TUNER = DISPID_TUNER(8i32);
pub const DISPID_TUNER_TS_FREQMAP: DISPID_TUNER = DISPID_TUNER(10i32);
pub const DISPID_TUNER_TS_FRIENDLYNAME: DISPID_TUNER = DISPID_TUNER(2i32);
pub const DISPID_TUNER_TS_NETWORKTYPE: DISPID_TUNER = DISPID_TUNER(4i32);
pub const DISPID_TUNER_TS_UNIQUENAME: DISPID_TUNER = DISPID_TUNER(1i32);
pub const DISPID_TUNER_TS__NETWORKTYPE: DISPID_TUNER = DISPID_TUNER(5i32);
pub const DOWNRES_Always: DownResEventParam = DownResEventParam(0i32);
pub const DOWNRES_InWindowOnly: DownResEventParam = DownResEventParam(1i32);
pub const DOWNRES_Undefined: DownResEventParam = DownResEventParam(2i32);
pub const DSATTRIB_BadSampleInfo: windows_core::GUID = windows_core::GUID::from_u128(0xe4846dda_5838_42b4_b897_6f7e5faa2f2f);
pub const DSATTRIB_WMDRMProtectionInfo: windows_core::GUID = windows_core::GUID::from_u128(0x40749583_6b9d_4eec_b43c_67a1801e1a9b);
pub const DTV_CardStatus_Error: u32 = 2u32;
pub const DTV_CardStatus_FirmwareDownload: u32 = 3u32;
pub const DTV_CardStatus_Inserted: u32 = 0u32;
pub const DTV_CardStatus_Removed: u32 = 1u32;
pub const DTV_Entitlement_CanDecrypt: u32 = 0u32;
pub const DTV_Entitlement_NotEntitled: u32 = 1u32;
pub const DTV_Entitlement_TechnicalFailure: u32 = 2u32;
pub const DTV_MMIMessage_Close: u32 = 1u32;
pub const DTV_MMIMessage_Open: u32 = 0u32;
pub const DVBS_SCAN_TABLE_MAX_SIZE: u32 = 400u32;
pub const DVB_BAT_PID: u32 = 17u32;
pub const DVB_BAT_TID: u32 = 74u32;
pub const DVB_DIT_PID: u32 = 30u32;
pub const DVB_DIT_TID: u32 = 126u32;
pub const DVB_EIT_ACTUAL_TID: u32 = 78u32;
pub const DVB_EIT_OTHER_TID: u32 = 79u32;
pub const DVB_EIT_PID: u32 = 18u32;
pub const DVB_NIT_ACTUAL_TID: u32 = 64u32;
pub const DVB_NIT_OTHER_TID: u32 = 65u32;
pub const DVB_NIT_PID: u32 = 16u32;
pub const DVB_RST_PID: u32 = 19u32;
pub const DVB_RST_TID: u32 = 113u32;
pub const DVB_SDT_ACTUAL_TID: u32 = 66u32;
pub const DVB_SDT_OTHER_TID: u32 = 70u32;
pub const DVB_SDT_PID: u32 = 17u32;
pub const DVB_SIT_PID: u32 = 31u32;
pub const DVB_SIT_TID: u32 = 127u32;
pub const DVB_ST_PID_16: u32 = 16u32;
pub const DVB_ST_PID_17: u32 = 17u32;
pub const DVB_ST_PID_18: u32 = 18u32;
pub const DVB_ST_PID_19: u32 = 19u32;
pub const DVB_ST_PID_20: u32 = 20u32;
pub const DVB_ST_TID: u32 = 114u32;
pub const DVB_TDT_PID: u32 = 20u32;
pub const DVB_TDT_TID: u32 = 112u32;
pub const DVB_TOT_PID: u32 = 20u32;
pub const DVB_TOT_TID: u32 = 115u32;
pub const ENCDEC_CPEVENT: EncDecEvents = EncDecEvents(0i32);
pub const ENCDEC_RECORDING_STATUS: EncDecEvents = EncDecEvents(1i32);
pub const EVENTID_DTFilterCOPPBlock: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4ea_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_DTFilterCOPPUnblock: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4e8_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_DTFilterDataFormatFailure: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4ed_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_DTFilterDataFormatOK: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4ec_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_DTFilterRatingChange: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4e2_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_DTFilterRatingsBlock: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4e3_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_DTFilterRatingsUnblock: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4e4_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_DTFilterXDSPacket: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4e5_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_DemultiplexerFilterDiscontinuity: windows_core::GUID = windows_core::GUID::from_u128(0x16155770_aed5_475c_bb98_95a33070df0c);
pub const EVENTID_ETDTFilterLicenseFailure: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4ef_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_ETDTFilterLicenseOK: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4ee_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_ETFilterCopyNever: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4f0_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_ETFilterCopyOnce: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4eb_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_ETFilterEncryptionOff: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4e7_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_ETFilterEncryptionOn: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4e6_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_EncDecFilterError: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4e9_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_EncDecFilterEvent: windows_core::GUID = windows_core::GUID::from_u128(0x4a1b465b_0fb9_4159_afbd_e33006a0f9f4);
pub const EVENTID_FormatNotSupportedEvent: windows_core::GUID = windows_core::GUID::from_u128(0x24b2280a_b2aa_4777_bf65_63f35e7b024a);
pub const EVENTID_SBE2RecControlStarted: windows_core::GUID = windows_core::GUID::from_u128(0x8966a89e_f83e_4c0e_bc3b_bfa7649e04cb);
pub const EVENTID_SBE2RecControlStopped: windows_core::GUID = windows_core::GUID::from_u128(0x454b1ec8_0c9b_4caa_b1a1_1e7a2666f6c3);
pub const EVENTID_XDSCodecDuplicateXDSRating: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4df_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_XDSCodecNewXDSPacket: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4e1_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_XDSCodecNewXDSRating: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4e0_0049_4e2b_98fb_9537f6ce516d);
pub const EnTag_Once: EnTag_Mode = EnTag_Mode(1i32);
pub const EnTag_Remove: EnTag_Mode = EnTag_Mode(0i32);
pub const EnTag_Repeat: EnTag_Mode = EnTag_Mode(2i32);
pub const FORMATNOTSUPPORTED_CLEAR: FormatNotSupportedEvents = FormatNotSupportedEvents(0i32);
pub const FORMATNOTSUPPORTED_NOTSUPPORTED: FormatNotSupportedEvents = FormatNotSupportedEvents(1i32);
pub const FORMATTYPE_CPFilters_Processed: windows_core::GUID = windows_core::GUID::from_u128(0x6739b36f_1d5f_4ac2_8192_28bb0e73d16a);
pub const FORMATTYPE_ETDTFilter_Tagged: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4d1_0049_4e2b_98fb_9537f6ce516d);
pub const FrameMode: PositionModeList = PositionModeList(0i32);
pub const ISDB_BIT_PID: u32 = 36u32;
pub const ISDB_BIT_TID: u32 = 196u32;
pub const ISDB_CDT_PID: u32 = 41u32;
pub const ISDB_CDT_TID: u32 = 200u32;
pub const ISDB_EMM_TID: u32 = 133u32;
pub const ISDB_LDT_PID: u32 = 37u32;
pub const ISDB_LDT_TID: u32 = 199u32;
pub const ISDB_NBIT_MSG_TID: u32 = 197u32;
pub const ISDB_NBIT_PID: u32 = 37u32;
pub const ISDB_NBIT_REF_TID: u32 = 198u32;
pub const ISDB_SDTT_ALT_PID: u32 = 40u32;
pub const ISDB_SDTT_PID: u32 = 35u32;
pub const ISDB_SDTT_TID: u32 = 195u32;
pub const ISDB_ST_TID: u32 = 114u32;
pub const KSEVENT_BDA_CA_MODULE_STATUS_CHANGED: KSPROPERTY_BDA_CA_EVENT = KSPROPERTY_BDA_CA_EVENT(1i32);
pub const KSEVENT_BDA_CA_MODULE_UI_REQUESTED: KSPROPERTY_BDA_CA_EVENT = KSPROPERTY_BDA_CA_EVENT(3i32);
pub const KSEVENT_BDA_CA_SMART_CARD_STATUS_CHANGED: KSPROPERTY_BDA_CA_EVENT = KSPROPERTY_BDA_CA_EVENT(2i32);
pub const KSEVENT_BDA_DISEQC_DATA_RECEIVED: KSPROPERTY_BDA_DISEQC_EVENT = KSPROPERTY_BDA_DISEQC_EVENT(0i32);
pub const KSEVENT_BDA_EVENT_PENDINGEVENT: KSEVENT_BDA_EVENT_TYPE = KSEVENT_BDA_EVENT_TYPE(0i32);
pub const KSEVENT_BDA_PIN_CONNECTED: KSPROPERTY_BDA_PIN_EVENT = KSPROPERTY_BDA_PIN_EVENT(0i32);
pub const KSEVENT_BDA_PIN_DISCONNECTED: KSPROPERTY_BDA_PIN_EVENT = KSPROPERTY_BDA_PIN_EVENT(1i32);
pub const KSEVENT_BDA_PROGRAM_FLOW_STATUS_CHANGED: KSPROPERTY_BDA_CA_EVENT = KSPROPERTY_BDA_CA_EVENT(0i32);
pub const KSEVENT_BDA_TUNER_SCAN: KSEVENT_BDA_TUNER = KSEVENT_BDA_TUNER(0i32);
pub const KSMETHOD_BDA_CAS_CHECKENTITLEMENTTOKEN: KSMETHOD_BDA_CAS_SERVICE = KSMETHOD_BDA_CAS_SERVICE(0i32);
pub const KSMETHOD_BDA_CAS_CLOSEMMIDIALOG: KSMETHOD_BDA_CAS_SERVICE = KSMETHOD_BDA_CAS_SERVICE(3i32);
pub const KSMETHOD_BDA_CAS_OPENBROADCASTMMI: KSMETHOD_BDA_CAS_SERVICE = KSMETHOD_BDA_CAS_SERVICE(2i32);
pub const KSMETHOD_BDA_CAS_SETCAPTURETOKEN: KSMETHOD_BDA_CAS_SERVICE = KSMETHOD_BDA_CAS_SERVICE(1i32);
pub const KSMETHOD_BDA_CHECK_CHANGES: KSMETHOD_BDA_CHANGE_SYNC = KSMETHOD_BDA_CHANGE_SYNC(1i32);
pub const KSMETHOD_BDA_COMMIT_CHANGES: KSMETHOD_BDA_CHANGE_SYNC = KSMETHOD_BDA_CHANGE_SYNC(2i32);
pub const KSMETHOD_BDA_CREATE_PIN_FACTORY: KSMETHOD_BDA_DEVICE_CONFIGURATION = KSMETHOD_BDA_DEVICE_CONFIGURATION(0i32);
pub const KSMETHOD_BDA_CREATE_TOPOLOGY: KSMETHOD_BDA_DEVICE_CONFIGURATION = KSMETHOD_BDA_DEVICE_CONFIGURATION(2i32);
pub const KSMETHOD_BDA_DEBUG_DATA: KSMETHOD_BDA_DEBUG_SERVICE = KSMETHOD_BDA_DEBUG_SERVICE(1i32);
pub const KSMETHOD_BDA_DEBUG_LEVEL: KSMETHOD_BDA_DEBUG_SERVICE = KSMETHOD_BDA_DEBUG_SERVICE(0i32);
pub const KSMETHOD_BDA_DELETE_PIN_FACTORY: KSMETHOD_BDA_DEVICE_CONFIGURATION = KSMETHOD_BDA_DEVICE_CONFIGURATION(1i32);
pub const KSMETHOD_BDA_DRM_CURRENT: KSMETHOD_BDA_DRM = KSMETHOD_BDA_DRM(0i32);
pub const KSMETHOD_BDA_DRM_DRMSTATUS: KSMETHOD_BDA_DRM = KSMETHOD_BDA_DRM(1i32);
pub const KSMETHOD_BDA_EVENT_COMPLETE: KSMETHOD_BDA_EVENTING_SERVICE = KSMETHOD_BDA_EVENTING_SERVICE(1i32);
pub const KSMETHOD_BDA_EVENT_DATA: KSMETHOD_BDA_EVENTING_SERVICE = KSMETHOD_BDA_EVENTING_SERVICE(0i32);
pub const KSMETHOD_BDA_GDDS_DATA: KSMETHOD_BDA_GDDS_SERVICE = KSMETHOD_BDA_GDDS_SERVICE(1i32);
pub const KSMETHOD_BDA_GDDS_DATATYPE: KSMETHOD_BDA_GDDS_SERVICE = KSMETHOD_BDA_GDDS_SERVICE(0i32);
pub const KSMETHOD_BDA_GDDS_DATAUPDATE: KSMETHOD_BDA_GDDS_SERVICE = KSMETHOD_BDA_GDDS_SERVICE(5i32);
pub const KSMETHOD_BDA_GDDS_GETSERVICES: KSMETHOD_BDA_GDDS_SERVICE = KSMETHOD_BDA_GDDS_SERVICE(3i32);
pub const KSMETHOD_BDA_GDDS_SERVICEFROMTUNEXML: KSMETHOD_BDA_GDDS_SERVICE = KSMETHOD_BDA_GDDS_SERVICE(4i32);
pub const KSMETHOD_BDA_GDDS_TUNEXMLFROMIDX: KSMETHOD_BDA_GDDS_SERVICE = KSMETHOD_BDA_GDDS_SERVICE(2i32);
pub const KSMETHOD_BDA_GET_CHANGE_STATE: KSMETHOD_BDA_CHANGE_SYNC = KSMETHOD_BDA_CHANGE_SYNC(3i32);
pub const KSMETHOD_BDA_GPNV_GETVALUE: KSMETHOD_BDA_GPNV_SERVICE = KSMETHOD_BDA_GPNV_SERVICE(0i32);
pub const KSMETHOD_BDA_GPNV_GETVALUEUPDATENAME: KSMETHOD_BDA_GPNV_SERVICE = KSMETHOD_BDA_GPNV_SERVICE(3i32);
pub const KSMETHOD_BDA_GPNV_NAMEFROMINDEX: KSMETHOD_BDA_GPNV_SERVICE = KSMETHOD_BDA_GPNV_SERVICE(2i32);
pub const KSMETHOD_BDA_GPNV_SETVALUE: KSMETHOD_BDA_GPNV_SERVICE = KSMETHOD_BDA_GPNV_SERVICE(1i32);
pub const KSMETHOD_BDA_ISDBCAS_RESPONSEDATA: KSMETHOD_BDA_ISDB_CAS = KSMETHOD_BDA_ISDB_CAS(1i32);
pub const KSMETHOD_BDA_ISDBCAS_SETREQUEST: KSMETHOD_BDA_ISDB_CAS = KSMETHOD_BDA_ISDB_CAS(0i32);
pub const KSMETHOD_BDA_MUX_GETPIDLIST: KSMETHOD_BDA_MUX_SERVICE = KSMETHOD_BDA_MUX_SERVICE(0i32);
pub const KSMETHOD_BDA_MUX_SETPIDLIST: KSMETHOD_BDA_MUX_SERVICE = KSMETHOD_BDA_MUX_SERVICE(1i32);
pub const KSMETHOD_BDA_SCANNING_STATE: KSMETHOD_BDA_SCAN_SERVICE = KSMETHOD_BDA_SCAN_SERVICE(1i32);
pub const KSMETHOD_BDA_SCAN_CAPABILTIES: KSMETHOD_BDA_SCAN_SERVICE = KSMETHOD_BDA_SCAN_SERVICE(0i32);
pub const KSMETHOD_BDA_SCAN_FILTER: KSMETHOD_BDA_SCAN_SERVICE = KSMETHOD_BDA_SCAN_SERVICE(2i32);
pub const KSMETHOD_BDA_SCAN_RESUME: KSMETHOD_BDA_SCAN_SERVICE = KSMETHOD_BDA_SCAN_SERVICE(4i32);
pub const KSMETHOD_BDA_SCAN_START: KSMETHOD_BDA_SCAN_SERVICE = KSMETHOD_BDA_SCAN_SERVICE(3i32);
pub const KSMETHOD_BDA_SCAN_STOP: KSMETHOD_BDA_SCAN_SERVICE = KSMETHOD_BDA_SCAN_SERVICE(5i32);
pub const KSMETHOD_BDA_START_CHANGES: KSMETHOD_BDA_CHANGE_SYNC = KSMETHOD_BDA_CHANGE_SYNC(0i32);
pub const KSMETHOD_BDA_TS_SELECTOR_GETTSINFORMATION: KSMETHOD_BDA_TS_SELECTOR = KSMETHOD_BDA_TS_SELECTOR(1i32);
pub const KSMETHOD_BDA_TS_SELECTOR_SETTSID: KSMETHOD_BDA_TS_SELECTOR = KSMETHOD_BDA_TS_SELECTOR(0i32);
pub const KSMETHOD_BDA_TUNER_GETTUNERSTATE: KSMETHOD_BDA_TUNER_SERVICE = KSMETHOD_BDA_TUNER_SERVICE(1i32);
pub const KSMETHOD_BDA_TUNER_SETTUNER: KSMETHOD_BDA_TUNER_SERVICE = KSMETHOD_BDA_TUNER_SERVICE(0i32);
pub const KSMETHOD_BDA_TUNER_SIGNALNOISERATIO: KSMETHOD_BDA_TUNER_SERVICE = KSMETHOD_BDA_TUNER_SERVICE(2i32);
pub const KSMETHOD_BDA_USERACTIVITY_DETECTED: KSMETHOD_BDA_USERACTIVITY_SERVICE = KSMETHOD_BDA_USERACTIVITY_SERVICE(2i32);
pub const KSMETHOD_BDA_USERACTIVITY_INTERVAL: KSMETHOD_BDA_USERACTIVITY_SERVICE = KSMETHOD_BDA_USERACTIVITY_SERVICE(1i32);
pub const KSMETHOD_BDA_USERACTIVITY_USEREASON: KSMETHOD_BDA_USERACTIVITY_SERVICE = KSMETHOD_BDA_USERACTIVITY_SERVICE(0i32);
pub const KSMETHOD_BDA_WMDRMTUNER_CANCELCAPTURETOKEN: KSMETHOD_BDA_WMDRM_TUNER = KSMETHOD_BDA_WMDRM_TUNER(0i32);
pub const KSMETHOD_BDA_WMDRMTUNER_GETPIDPROTECTION: KSMETHOD_BDA_WMDRM_TUNER = KSMETHOD_BDA_WMDRM_TUNER(2i32);
pub const KSMETHOD_BDA_WMDRMTUNER_PURCHASE_ENTITLEMENT: KSMETHOD_BDA_WMDRM_TUNER = KSMETHOD_BDA_WMDRM_TUNER(5i32);
pub const KSMETHOD_BDA_WMDRMTUNER_SETPIDPROTECTION: KSMETHOD_BDA_WMDRM_TUNER = KSMETHOD_BDA_WMDRM_TUNER(1i32);
pub const KSMETHOD_BDA_WMDRMTUNER_SETSYNCVALUE: KSMETHOD_BDA_WMDRM_TUNER = KSMETHOD_BDA_WMDRM_TUNER(3i32);
pub const KSMETHOD_BDA_WMDRMTUNER_STARTCODEPROFILE: KSMETHOD_BDA_WMDRM_TUNER = KSMETHOD_BDA_WMDRM_TUNER(4i32);
pub const KSMETHOD_BDA_WMDRM_CRL: KSMETHOD_BDA_WMDRM = KSMETHOD_BDA_WMDRM(2i32);
pub const KSMETHOD_BDA_WMDRM_KEYINFO: KSMETHOD_BDA_WMDRM = KSMETHOD_BDA_WMDRM(7i32);
pub const KSMETHOD_BDA_WMDRM_LICENSE: KSMETHOD_BDA_WMDRM = KSMETHOD_BDA_WMDRM(6i32);
pub const KSMETHOD_BDA_WMDRM_MESSAGE: KSMETHOD_BDA_WMDRM = KSMETHOD_BDA_WMDRM(3i32);
pub const KSMETHOD_BDA_WMDRM_REISSUELICENSE: KSMETHOD_BDA_WMDRM = KSMETHOD_BDA_WMDRM(4i32);
pub const KSMETHOD_BDA_WMDRM_RENEWLICENSE: KSMETHOD_BDA_WMDRM = KSMETHOD_BDA_WMDRM(5i32);
pub const KSMETHOD_BDA_WMDRM_REVINFO: KSMETHOD_BDA_WMDRM = KSMETHOD_BDA_WMDRM(1i32);
pub const KSMETHOD_BDA_WMDRM_STATUS: KSMETHOD_BDA_WMDRM = KSMETHOD_BDA_WMDRM(0i32);
pub const KSPROPERTY_BDA_AUTODEMODULATE_START: KSPROPERTY_BDA_AUTODEMODULATE = KSPROPERTY_BDA_AUTODEMODULATE(0i32);
pub const KSPROPERTY_BDA_AUTODEMODULATE_STOP: KSPROPERTY_BDA_AUTODEMODULATE = KSPROPERTY_BDA_AUTODEMODULATE(1i32);
pub const KSPROPERTY_BDA_CA_MODULE_STATUS: KSPROPERTY_BDA_CA = KSPROPERTY_BDA_CA(1i32);
pub const KSPROPERTY_BDA_CA_MODULE_UI: KSPROPERTY_BDA_CA = KSPROPERTY_BDA_CA(3i32);
pub const KSPROPERTY_BDA_CA_REMOVE_PROGRAM: KSPROPERTY_BDA_CA = KSPROPERTY_BDA_CA(5i32);
pub const KSPROPERTY_BDA_CA_SET_PROGRAM_PIDS: KSPROPERTY_BDA_CA = KSPROPERTY_BDA_CA(4i32);
pub const KSPROPERTY_BDA_CA_SMART_CARD_STATUS: KSPROPERTY_BDA_CA = KSPROPERTY_BDA_CA(2i32);
pub const KSPROPERTY_BDA_CONTROLLING_PIN_ID: KSPROPERTY_BDA_TOPOLOGY = KSPROPERTY_BDA_TOPOLOGY(6i32);
pub const KSPROPERTY_BDA_DISEQC_ENABLE: KSPROPERTY_BDA_DISEQC_COMMAND = KSPROPERTY_BDA_DISEQC_COMMAND(0i32);
pub const KSPROPERTY_BDA_DISEQC_LNB_SOURCE: KSPROPERTY_BDA_DISEQC_COMMAND = KSPROPERTY_BDA_DISEQC_COMMAND(1i32);
pub const KSPROPERTY_BDA_DISEQC_REPEATS: KSPROPERTY_BDA_DISEQC_COMMAND = KSPROPERTY_BDA_DISEQC_COMMAND(3i32);
pub const KSPROPERTY_BDA_DISEQC_RESPONSE: KSPROPERTY_BDA_DISEQC_COMMAND = KSPROPERTY_BDA_DISEQC_COMMAND(5i32);
pub const KSPROPERTY_BDA_DISEQC_SEND: KSPROPERTY_BDA_DISEQC_COMMAND = KSPROPERTY_BDA_DISEQC_COMMAND(4i32);
pub const KSPROPERTY_BDA_DISEQC_USETONEBURST: KSPROPERTY_BDA_DISEQC_COMMAND = KSPROPERTY_BDA_DISEQC_COMMAND(2i32);
pub const KSPROPERTY_BDA_ECM_MAP_STATUS: KSPROPERTY_BDA_CA = KSPROPERTY_BDA_CA(0i32);
pub const KSPROPERTY_BDA_ETHERNET_FILTER_MULTICAST_LIST: KSPROPERTY_BDA_ETHERNET_FILTER = KSPROPERTY_BDA_ETHERNET_FILTER(1i32);
pub const KSPROPERTY_BDA_ETHERNET_FILTER_MULTICAST_LIST_SIZE: KSPROPERTY_BDA_ETHERNET_FILTER = KSPROPERTY_BDA_ETHERNET_FILTER(0i32);
pub const KSPROPERTY_BDA_ETHERNET_FILTER_MULTICAST_MODE: KSPROPERTY_BDA_ETHERNET_FILTER = KSPROPERTY_BDA_ETHERNET_FILTER(2i32);
pub const KSPROPERTY_BDA_GUARD_INTERVAL: KSPROPERTY_BDA_DIGITAL_DEMODULATOR = KSPROPERTY_BDA_DIGITAL_DEMODULATOR(7i32);
pub const KSPROPERTY_BDA_INNER_FEC_RATE: KSPROPERTY_BDA_DIGITAL_DEMODULATOR = KSPROPERTY_BDA_DIGITAL_DEMODULATOR(2i32);
pub const KSPROPERTY_BDA_INNER_FEC_TYPE: KSPROPERTY_BDA_DIGITAL_DEMODULATOR = KSPROPERTY_BDA_DIGITAL_DEMODULATOR(1i32);
pub const KSPROPERTY_BDA_IPv4_FILTER_MULTICAST_LIST: KSPROPERTY_BDA_IPv4_FILTER = KSPROPERTY_BDA_IPv4_FILTER(1i32);
pub const KSPROPERTY_BDA_IPv4_FILTER_MULTICAST_LIST_SIZE: KSPROPERTY_BDA_IPv4_FILTER = KSPROPERTY_BDA_IPv4_FILTER(0i32);
pub const KSPROPERTY_BDA_IPv4_FILTER_MULTICAST_MODE: KSPROPERTY_BDA_IPv4_FILTER = KSPROPERTY_BDA_IPv4_FILTER(2i32);
pub const KSPROPERTY_BDA_IPv6_FILTER_MULTICAST_LIST: KSPROPERTY_BDA_IPv6_FILTER = KSPROPERTY_BDA_IPv6_FILTER(1i32);
pub const KSPROPERTY_BDA_IPv6_FILTER_MULTICAST_LIST_SIZE: KSPROPERTY_BDA_IPv6_FILTER = KSPROPERTY_BDA_IPv6_FILTER(0i32);
pub const KSPROPERTY_BDA_IPv6_FILTER_MULTICAST_MODE: KSPROPERTY_BDA_IPv6_FILTER = KSPROPERTY_BDA_IPv6_FILTER(2i32);
pub const KSPROPERTY_BDA_LNB_LOF_HIGH_BAND: KSPROPERTY_BDA_LNB_INFO = KSPROPERTY_BDA_LNB_INFO(1i32);
pub const KSPROPERTY_BDA_LNB_LOF_LOW_BAND: KSPROPERTY_BDA_LNB_INFO = KSPROPERTY_BDA_LNB_INFO(0i32);
pub const KSPROPERTY_BDA_LNB_SWITCH_FREQUENCY: KSPROPERTY_BDA_LNB_INFO = KSPROPERTY_BDA_LNB_INFO(2i32);
pub const KSPROPERTY_BDA_MODULATION_TYPE: KSPROPERTY_BDA_DIGITAL_DEMODULATOR = KSPROPERTY_BDA_DIGITAL_DEMODULATOR(0i32);
pub const KSPROPERTY_BDA_NODE_DESCRIPTORS: KSPROPERTY_BDA_TOPOLOGY = KSPROPERTY_BDA_TOPOLOGY(7i32);
pub const KSPROPERTY_BDA_NODE_EVENTS: KSPROPERTY_BDA_TOPOLOGY = KSPROPERTY_BDA_TOPOLOGY(5i32);
pub const KSPROPERTY_BDA_NODE_METHODS: KSPROPERTY_BDA_TOPOLOGY = KSPROPERTY_BDA_TOPOLOGY(3i32);
pub const KSPROPERTY_BDA_NODE_PROPERTIES: KSPROPERTY_BDA_TOPOLOGY = KSPROPERTY_BDA_TOPOLOGY(4i32);
pub const KSPROPERTY_BDA_NODE_TYPES: KSPROPERTY_BDA_TOPOLOGY = KSPROPERTY_BDA_TOPOLOGY(0i32);
pub const KSPROPERTY_BDA_NULL_TRANSFORM_START: KSPROPERTY_BDA_NULL_TRANSFORM = KSPROPERTY_BDA_NULL_TRANSFORM(0i32);
pub const KSPROPERTY_BDA_NULL_TRANSFORM_STOP: KSPROPERTY_BDA_NULL_TRANSFORM = KSPROPERTY_BDA_NULL_TRANSFORM(1i32);
pub const KSPROPERTY_BDA_OUTER_FEC_RATE: KSPROPERTY_BDA_DIGITAL_DEMODULATOR = KSPROPERTY_BDA_DIGITAL_DEMODULATOR(4i32);
pub const KSPROPERTY_BDA_OUTER_FEC_TYPE: KSPROPERTY_BDA_DIGITAL_DEMODULATOR = KSPROPERTY_BDA_DIGITAL_DEMODULATOR(3i32);
pub const KSPROPERTY_BDA_PIDFILTER_LIST_PIDS: KSPROPERTY_BDA_PIDFILTER = KSPROPERTY_BDA_PIDFILTER(2i32);
pub const KSPROPERTY_BDA_PIDFILTER_MAP_PIDS: KSPROPERTY_BDA_PIDFILTER = KSPROPERTY_BDA_PIDFILTER(0i32);
pub const KSPROPERTY_BDA_PIDFILTER_UNMAP_PIDS: KSPROPERTY_BDA_PIDFILTER = KSPROPERTY_BDA_PIDFILTER(1i32);
pub const KSPROPERTY_BDA_PILOT: KSPROPERTY_BDA_DIGITAL_DEMODULATOR = KSPROPERTY_BDA_DIGITAL_DEMODULATOR(10i32);
pub const KSPROPERTY_BDA_PIN_ID: KSPROPERTY_BDA_PIN_CONTROL = KSPROPERTY_BDA_PIN_CONTROL(0i32);
pub const KSPROPERTY_BDA_PIN_TYPE: KSPROPERTY_BDA_PIN_CONTROL = KSPROPERTY_BDA_PIN_CONTROL(1i32);
pub const KSPROPERTY_BDA_PIN_TYPES: KSPROPERTY_BDA_TOPOLOGY = KSPROPERTY_BDA_TOPOLOGY(1i32);
pub const KSPROPERTY_BDA_PLP_NUMBER: KSPROPERTY_BDA_DIGITAL_DEMODULATOR = KSPROPERTY_BDA_DIGITAL_DEMODULATOR(12i32);
pub const KSPROPERTY_BDA_RF_TUNER_BANDWIDTH: KSPROPERTY_BDA_FREQUENCY_FILTER = KSPROPERTY_BDA_FREQUENCY_FILTER(4i32);
pub const KSPROPERTY_BDA_RF_TUNER_CAPS: KSPROPERTY_BDA_FREQUENCY_FILTER = KSPROPERTY_BDA_FREQUENCY_FILTER(6i32);
pub const KSPROPERTY_BDA_RF_TUNER_FREQUENCY: KSPROPERTY_BDA_FREQUENCY_FILTER = KSPROPERTY_BDA_FREQUENCY_FILTER(0i32);
pub const KSPROPERTY_BDA_RF_TUNER_FREQUENCY_MULTIPLIER: KSPROPERTY_BDA_FREQUENCY_FILTER = KSPROPERTY_BDA_FREQUENCY_FILTER(5i32);
pub const KSPROPERTY_BDA_RF_TUNER_POLARITY: KSPROPERTY_BDA_FREQUENCY_FILTER = KSPROPERTY_BDA_FREQUENCY_FILTER(1i32);
pub const KSPROPERTY_BDA_RF_TUNER_RANGE: KSPROPERTY_BDA_FREQUENCY_FILTER = KSPROPERTY_BDA_FREQUENCY_FILTER(2i32);
pub const KSPROPERTY_BDA_RF_TUNER_SCAN_STATUS: KSPROPERTY_BDA_FREQUENCY_FILTER = KSPROPERTY_BDA_FREQUENCY_FILTER(7i32);
pub const KSPROPERTY_BDA_RF_TUNER_STANDARD: KSPROPERTY_BDA_FREQUENCY_FILTER = KSPROPERTY_BDA_FREQUENCY_FILTER(8i32);
pub const KSPROPERTY_BDA_RF_TUNER_STANDARD_MODE: KSPROPERTY_BDA_FREQUENCY_FILTER = KSPROPERTY_BDA_FREQUENCY_FILTER(9i32);
pub const KSPROPERTY_BDA_RF_TUNER_TRANSPONDER: KSPROPERTY_BDA_FREQUENCY_FILTER = KSPROPERTY_BDA_FREQUENCY_FILTER(3i32);
pub const KSPROPERTY_BDA_ROLL_OFF: KSPROPERTY_BDA_DIGITAL_DEMODULATOR = KSPROPERTY_BDA_DIGITAL_DEMODULATOR(9i32);
pub const KSPROPERTY_BDA_SAMPLE_TIME: KSPROPERTY_BDA_SIGNAL_STATS = KSPROPERTY_BDA_SIGNAL_STATS(4i32);
pub const KSPROPERTY_BDA_SIGNALTIMEOUTS: KSPROPERTY_BDA_DIGITAL_DEMODULATOR = KSPROPERTY_BDA_DIGITAL_DEMODULATOR(11i32);
pub const KSPROPERTY_BDA_SIGNAL_LOCKED: KSPROPERTY_BDA_SIGNAL_STATS = KSPROPERTY_BDA_SIGNAL_STATS(3i32);
pub const KSPROPERTY_BDA_SIGNAL_LOCK_CAPS: KSPROPERTY_BDA_SIGNAL_STATS = KSPROPERTY_BDA_SIGNAL_STATS(5i32);
pub const KSPROPERTY_BDA_SIGNAL_LOCK_TYPE: KSPROPERTY_BDA_SIGNAL_STATS = KSPROPERTY_BDA_SIGNAL_STATS(6i32);
pub const KSPROPERTY_BDA_SIGNAL_PRESENT: KSPROPERTY_BDA_SIGNAL_STATS = KSPROPERTY_BDA_SIGNAL_STATS(2i32);
pub const KSPROPERTY_BDA_SIGNAL_QUALITY: KSPROPERTY_BDA_SIGNAL_STATS = KSPROPERTY_BDA_SIGNAL_STATS(1i32);
pub const KSPROPERTY_BDA_SIGNAL_STRENGTH: KSPROPERTY_BDA_SIGNAL_STATS = KSPROPERTY_BDA_SIGNAL_STATS(0i32);
pub const KSPROPERTY_BDA_SPECTRAL_INVERSION: KSPROPERTY_BDA_DIGITAL_DEMODULATOR = KSPROPERTY_BDA_DIGITAL_DEMODULATOR(6i32);
pub const KSPROPERTY_BDA_SYMBOL_RATE: KSPROPERTY_BDA_DIGITAL_DEMODULATOR = KSPROPERTY_BDA_DIGITAL_DEMODULATOR(5i32);
pub const KSPROPERTY_BDA_TABLE_SECTION: KSPROPERTY_IDS_BDA_TABLE = KSPROPERTY_IDS_BDA_TABLE(0i32);
pub const KSPROPERTY_BDA_TEMPLATE_CONNECTIONS: KSPROPERTY_BDA_TOPOLOGY = KSPROPERTY_BDA_TOPOLOGY(2i32);
pub const KSPROPERTY_BDA_TRANSMISSION_MODE: KSPROPERTY_BDA_DIGITAL_DEMODULATOR = KSPROPERTY_BDA_DIGITAL_DEMODULATOR(8i32);
pub const KSPROPERTY_BDA_VOID_TRANSFORM_START: KSPROPERTY_BDA_VOID_TRANSFORM = KSPROPERTY_BDA_VOID_TRANSFORM(0i32);
pub const KSPROPERTY_BDA_VOID_TRANSFORM_STOP: KSPROPERTY_BDA_VOID_TRANSFORM = KSPROPERTY_BDA_VOID_TRANSFORM(1i32);
pub const LIC_BadLicense: LicenseEventBlockReason = LicenseEventBlockReason(0i32);
pub const LIC_Expired: LicenseEventBlockReason = LicenseEventBlockReason(2i32);
pub const LIC_ExtenderBlocked: LicenseEventBlockReason = LicenseEventBlockReason(4i32);
pub const LIC_NeedActivation: LicenseEventBlockReason = LicenseEventBlockReason(3i32);
pub const LIC_NeedIndiv: LicenseEventBlockReason = LicenseEventBlockReason(1i32);
pub const LastReservedDeviceDispid: SegDispidList = SegDispidList(16383i32);
pub const LastReservedDeviceEvent: SegEventidList = SegEventidList(16383i32);
pub const MAX_COUNTRY_CODE_STRING: u32 = 3u32;
pub const MEDIASUBTYPE_CPFilters_Processed: windows_core::GUID = windows_core::GUID::from_u128(0x46adbd28_6fd0_4796_93b2_155c51dc048d);
pub const MEDIASUBTYPE_ETDTFilter_Tagged: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4d0_0049_4e2b_98fb_9537f6ce516d);
pub const MPAA: EnTvRat_System = EnTvRat_System(0i32);
pub const MPAA_G: EnTvRat_MPAA = EnTvRat_MPAA(1i32);
pub const MPAA_IsBlocked: BfEnTvRat_Attributes_MPAA = BfEnTvRat_Attributes_MPAA(1i32);
pub const MPAA_NC17: EnTvRat_MPAA = EnTvRat_MPAA(5i32);
pub const MPAA_NotApplicable: EnTvRat_MPAA = EnTvRat_MPAA(0i32);
pub const MPAA_NotRated: EnTvRat_MPAA = EnTvRat_MPAA(7i32);
pub const MPAA_PG: EnTvRat_MPAA = EnTvRat_MPAA(2i32);
pub const MPAA_PG13: EnTvRat_MPAA = EnTvRat_MPAA(3i32);
pub const MPAA_R: EnTvRat_MPAA = EnTvRat_MPAA(4i32);
pub const MPAA_ValidAttrSubmask: BfEnTvRat_Attributes_MPAA = BfEnTvRat_Attributes_MPAA(1i32);
pub const MPAA_X: EnTvRat_MPAA = EnTvRat_MPAA(6i32);
pub const MPEG2_FILTER_VERSION_1_SIZE: u32 = 124u32;
pub const MPEG2_FILTER_VERSION_2_SIZE: u32 = 133u32;
pub const MPEG_CAT_PID: u32 = 1u32;
pub const MPEG_CAT_TID: u32 = 1u32;
pub const MPEG_CONTEXT_BCS_DEMUX: MPEG_CONTEXT_TYPE = MPEG_CONTEXT_TYPE(0i32);
pub const MPEG_CONTEXT_WINSOCK: MPEG_CONTEXT_TYPE = MPEG_CONTEXT_TYPE(1i32);
pub const MPEG_PAT_PID: u32 = 0u32;
pub const MPEG_PAT_TID: u32 = 0u32;
pub const MPEG_PMT_TID: u32 = 2u32;
pub const MPEG_RQST_GET_PES_STREAM: MPEG_REQUEST_TYPE = MPEG_REQUEST_TYPE(6i32);
pub const MPEG_RQST_GET_SECTION: MPEG_REQUEST_TYPE = MPEG_REQUEST_TYPE(1i32);
pub const MPEG_RQST_GET_SECTIONS_STREAM: MPEG_REQUEST_TYPE = MPEG_REQUEST_TYPE(5i32);
pub const MPEG_RQST_GET_SECTION_ASYNC: MPEG_REQUEST_TYPE = MPEG_REQUEST_TYPE(2i32);
pub const MPEG_RQST_GET_TABLE: MPEG_REQUEST_TYPE = MPEG_REQUEST_TYPE(3i32);
pub const MPEG_RQST_GET_TABLE_ASYNC: MPEG_REQUEST_TYPE = MPEG_REQUEST_TYPE(4i32);
pub const MPEG_RQST_GET_TS_STREAM: MPEG_REQUEST_TYPE = MPEG_REQUEST_TYPE(7i32);
pub const MPEG_RQST_START_MPE_STREAM: MPEG_REQUEST_TYPE = MPEG_REQUEST_TYPE(8i32);
pub const MPEG_RQST_UNKNOWN: MPEG_REQUEST_TYPE = MPEG_REQUEST_TYPE(0i32);
pub const MPEG_SECTION_IS_CURRENT: MPEG_CURRENT_NEXT_BIT = MPEG_CURRENT_NEXT_BIT(1i32);
pub const MPEG_SECTION_IS_NEXT: MPEG_CURRENT_NEXT_BIT = MPEG_CURRENT_NEXT_BIT(0i32);
pub const MPEG_TSDT_PID: u32 = 2u32;
pub const MPEG_TSDT_TID: u32 = 3u32;
pub const MSVIDCTL_ALT: MSVidCtlButtonstate = MSVidCtlButtonstate(4i32);
pub const MSVIDCTL_CTRL: MSVidCtlButtonstate = MSVidCtlButtonstate(2i32);
pub const MSVIDCTL_LEFT_BUTTON: MSVidCtlButtonstate = MSVidCtlButtonstate(1i32);
pub const MSVIDCTL_MIDDLE_BUTTON: MSVidCtlButtonstate = MSVidCtlButtonstate(4i32);
pub const MSVIDCTL_RIGHT_BUTTON: MSVidCtlButtonstate = MSVidCtlButtonstate(2i32);
pub const MSVIDCTL_SHIFT: MSVidCtlButtonstate = MSVidCtlButtonstate(1i32);
pub const MSVIDCTL_X_BUTTON1: MSVidCtlButtonstate = MSVidCtlButtonstate(8i32);
pub const MSVIDCTL_X_BUTTON2: MSVidCtlButtonstate = MSVidCtlButtonstate(16i32);
pub const MSVidSEG_DEST: MSVidSegmentType = MSVidSegmentType(2i32);
pub const MSVidSEG_SOURCE: MSVidSegmentType = MSVidSegmentType(0i32);
pub const MSVidSEG_XFORM: MSVidSegmentType = MSVidSegmentType(1i32);
pub const MSVidSink_Audio: MSVidSinkStreams = MSVidSinkStreams(2i32);
pub const MSVidSink_Other: MSVidSinkStreams = MSVidSinkStreams(4i32);
pub const MSVidSink_Video: MSVidSinkStreams = MSVidSinkStreams(1i32);
pub const OCUR_PAIRING_PROTOCOL_VERSION: u32 = 2u32;
pub const PARENTAL_CONTROL_ATTRIB_DIALOGUE: u32 = 515u32;
pub const PARENTAL_CONTROL_ATTRIB_FANTASY: u32 = 516u32;
pub const PARENTAL_CONTROL_ATTRIB_LANGUAGE: u32 = 513u32;
pub const PARENTAL_CONTROL_ATTRIB_SEXUAL: u32 = 514u32;
pub const PARENTAL_CONTROL_ATTRIB_VIOLENCE: u32 = 512u32;
pub const PARENTAL_CONTROL_CONTENT_RATING: u32 = 256u32;
pub const PARENTAL_CONTROL_TIME_RANGE: u32 = 1u32;
pub const PARENTAL_CONTROL_VALUE_UNDEFINED: u32 = 0u32;
pub const PBDA: EnTvRat_System = EnTvRat_System(8i32);
pub const PBDA_PAIRING_PROTOCOL_VERSION: u32 = 3u32;
pub const PROT_COPY_BF: ProtType = ProtType(7i32);
pub const PROT_COPY_CN_RECORDING_STOP: ProtType = ProtType(8i32);
pub const PROT_COPY_FREE: ProtType = ProtType(1i32);
pub const PROT_COPY_FREE_CIT: ProtType = ProtType(6i32);
pub const PROT_COPY_FREE_SECURE: ProtType = ProtType(9i32);
pub const PROT_COPY_INVALID: ProtType = ProtType(50i32);
pub const PROT_COPY_NEVER: ProtType = ProtType(3i32);
pub const PROT_COPY_NEVER_REALLY: ProtType = ProtType(4i32);
pub const PROT_COPY_NO_MORE: ProtType = ProtType(5i32);
pub const PROT_COPY_ONCE: ProtType = ProtType(2i32);
pub const RECORDING_STARTED: CPRecordingStatus = CPRecordingStatus(1i32);
pub const RECORDING_STOPPED: CPRecordingStatus = CPRecordingStatus(0i32);
pub const RECORDING_TYPE_CONTENT: RECORDING_TYPE = RECORDING_TYPE(0i32);
pub const RECORDING_TYPE_REFERENCE: RECORDING_TYPE = RECORDING_TYPE(1i32);
pub const REFERENCE: RecordingType = RecordingType(1i32);
pub const REQUIRED_PARENTAL_CONTROL_TIME_RANGE: u32 = 2u32;
pub const REVOKED_APP_STUB: RevokedComponent = RevokedComponent(2i32);
pub const REVOKED_COPP: RevokedComponent = RevokedComponent(0i32);
pub const REVOKED_MAX_TYPES: RevokedComponent = RevokedComponent(4i32);
pub const REVOKED_SAC: RevokedComponent = RevokedComponent(1i32);
pub const REVOKED_SECURE_PIPELINE: RevokedComponent = RevokedComponent(3i32);
pub const Reserved4: EnTvRat_System = EnTvRat_System(4i32);
pub const Reserved7: EnTvRat_System = EnTvRat_System(7i32);
pub const SAMPLE_SEQ_CONTENT_B_FRAME: u32 = 3u32;
pub const SAMPLE_SEQ_CONTENT_I_FRAME: u32 = 1u32;
pub const SAMPLE_SEQ_CONTENT_NONREF_FRAME: u32 = 3u32;
pub const SAMPLE_SEQ_CONTENT_P_FRAME: u32 = 2u32;
pub const SAMPLE_SEQ_CONTENT_REF_FRAME: u32 = 2u32;
pub const SAMPLE_SEQ_CONTENT_STANDALONE_FRAME: u32 = 1u32;
pub const SAMPLE_SEQ_CONTENT_UNKNOWN: u32 = 0u32;
pub const SAMPLE_SEQ_FRAME_START: u32 = 3u32;
pub const SAMPLE_SEQ_GOP_HEADER: u32 = 2u32;
pub const SAMPLE_SEQ_PICTURE_HEADER: u32 = 3u32;
pub const SAMPLE_SEQ_SEEK_POINT: u32 = 2u32;
pub const SAMPLE_SEQ_SEQUENCE_HEADER: u32 = 1u32;
pub const SAMPLE_SEQ_SEQUENCE_START: u32 = 1u32;
pub const SBE2_STREAM_DESC_EVENT: windows_core::GUID = windows_core::GUID::from_u128(0x2313a4ed_bf2d_454f_ad8a_d95ba7f91fee);
pub const SBE2_STREAM_DESC_VERSION: u32 = 1u32;
pub const SBE2_V1_STREAMS_CREATION_EVENT: windows_core::GUID = windows_core::GUID::from_u128(0x000fcf09_97f5_46ac_9769_7a83b35384fb);
pub const SBE2_V2_STREAMS_CREATION_EVENT: windows_core::GUID = windows_core::GUID::from_u128(0xa72530a3_0344_4cab_a2d0_fe937dbdcab3);
pub const SCTE_EAS_IB_PID: u32 = 8187u32;
pub const SCTE_EAS_OOB_PID: u32 = 8188u32;
pub const SCTE_EAS_TID: u32 = 216u32;
pub const SID_DRMSecureServiceChannel: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4c4_0049_4e2b_98fb_9537f6ce516d);
pub const SID_MSVidCtl_CurrentAudioEndpoint: windows_core::GUID = windows_core::GUID::from_u128(0xcf9a88f4_abcf_4ed8_9b74_7db33445459e);
pub const STATE_PAUSE: MSVidCtlStateList = MSVidCtlStateList(1i32);
pub const STATE_PLAY: MSVidCtlStateList = MSVidCtlStateList(2i32);
pub const STATE_STOP: MSVidCtlStateList = MSVidCtlStateList(0i32);
pub const STATE_UNBUILT: MSVidCtlStateList = MSVidCtlStateList(-1i32);
pub const STRCONV_MODE_DVB: DVB_STRCONV_MODE = DVB_STRCONV_MODE(0i32);
pub const STRCONV_MODE_DVB_EMPHASIS: DVB_STRCONV_MODE = DVB_STRCONV_MODE(1i32);
pub const STRCONV_MODE_DVB_WITHOUT_EMPHASIS: DVB_STRCONV_MODE = DVB_STRCONV_MODE(2i32);
pub const STRCONV_MODE_ISDB: DVB_STRCONV_MODE = DVB_STRCONV_MODE(3i32);
pub const STREAMBUFFER_EC_BASE: u32 = 806u32;
pub const STREAMBUFFER_EC_CONTENT_BECOMING_STALE: i32 = 809i32;
pub const STREAMBUFFER_EC_PRIMARY_AUDIO: i32 = 814i32;
pub const STREAMBUFFER_EC_RATE_CHANGED: i32 = 813i32;
pub const STREAMBUFFER_EC_RATE_CHANGING_FOR_SETPOSITIONS: i32 = 815i32;
pub const STREAMBUFFER_EC_READ_FAILURE: i32 = 812i32;
pub const STREAMBUFFER_EC_SETPOSITIONS_EVENTS_DONE: i32 = 816i32;
pub const STREAMBUFFER_EC_STALE_DATA_READ: i32 = 807i32;
pub const STREAMBUFFER_EC_STALE_FILE_DELETED: i32 = 808i32;
pub const STREAMBUFFER_EC_TIMEHOLE: i32 = 806i32;
pub const STREAMBUFFER_EC_WRITE_FAILURE: i32 = 810i32;
pub const STREAMBUFFER_EC_WRITE_FAILURE_CLEAR: i32 = 811i32;
pub const STREAMBUFFER_TYPE_BINARY: STREAMBUFFER_ATTR_DATATYPE = STREAMBUFFER_ATTR_DATATYPE(2i32);
pub const STREAMBUFFER_TYPE_BOOL: STREAMBUFFER_ATTR_DATATYPE = STREAMBUFFER_ATTR_DATATYPE(3i32);
pub const STREAMBUFFER_TYPE_DWORD: STREAMBUFFER_ATTR_DATATYPE = STREAMBUFFER_ATTR_DATATYPE(0i32);
pub const STREAMBUFFER_TYPE_GUID: STREAMBUFFER_ATTR_DATATYPE = STREAMBUFFER_ATTR_DATATYPE(6i32);
pub const STREAMBUFFER_TYPE_QWORD: STREAMBUFFER_ATTR_DATATYPE = STREAMBUFFER_ATTR_DATATYPE(4i32);
pub const STREAMBUFFER_TYPE_STRING: STREAMBUFFER_ATTR_DATATYPE = STREAMBUFFER_ATTR_DATATYPE(1i32);
pub const STREAMBUFFER_TYPE_WORD: STREAMBUFFER_ATTR_DATATYPE = STREAMBUFFER_ATTR_DATATYPE(5i32);
pub const SignalAndServiceStatusSpanningEvent_AllAVScrambled: SignalAndServiceStatusSpanningEvent_State = SignalAndServiceStatusSpanningEvent_State(5i32);
pub const SignalAndServiceStatusSpanningEvent_Clear: SignalAndServiceStatusSpanningEvent_State = SignalAndServiceStatusSpanningEvent_State(0i32);
pub const SignalAndServiceStatusSpanningEvent_NoSubscription: SignalAndServiceStatusSpanningEvent_State = SignalAndServiceStatusSpanningEvent_State(4i32);
pub const SignalAndServiceStatusSpanningEvent_NoTVSignal: SignalAndServiceStatusSpanningEvent_State = SignalAndServiceStatusSpanningEvent_State(1i32);
pub const SignalAndServiceStatusSpanningEvent_None: SignalAndServiceStatusSpanningEvent_State = SignalAndServiceStatusSpanningEvent_State(-1i32);
pub const SignalAndServiceStatusSpanningEvent_ServiceOffAir: SignalAndServiceStatusSpanningEvent_State = SignalAndServiceStatusSpanningEvent_State(2i32);
pub const SignalAndServiceStatusSpanningEvent_WeakTVSignal: SignalAndServiceStatusSpanningEvent_State = SignalAndServiceStatusSpanningEvent_State(3i32);
pub const System5: EnTvRat_System = EnTvRat_System(5i32);
pub const System6: EnTvRat_System = EnTvRat_System(6i32);
pub const TenthsSecondsMode: PositionModeList = PositionModeList(1i32);
pub const TvRat_0: EnTvRat_GenericLevel = EnTvRat_GenericLevel(0i32);
pub const TvRat_1: EnTvRat_GenericLevel = EnTvRat_GenericLevel(1i32);
pub const TvRat_10: EnTvRat_GenericLevel = EnTvRat_GenericLevel(10i32);
pub const TvRat_11: EnTvRat_GenericLevel = EnTvRat_GenericLevel(11i32);
pub const TvRat_12: EnTvRat_GenericLevel = EnTvRat_GenericLevel(12i32);
pub const TvRat_13: EnTvRat_GenericLevel = EnTvRat_GenericLevel(13i32);
pub const TvRat_14: EnTvRat_GenericLevel = EnTvRat_GenericLevel(14i32);
pub const TvRat_15: EnTvRat_GenericLevel = EnTvRat_GenericLevel(15i32);
pub const TvRat_16: EnTvRat_GenericLevel = EnTvRat_GenericLevel(16i32);
pub const TvRat_17: EnTvRat_GenericLevel = EnTvRat_GenericLevel(17i32);
pub const TvRat_18: EnTvRat_GenericLevel = EnTvRat_GenericLevel(18i32);
pub const TvRat_19: EnTvRat_GenericLevel = EnTvRat_GenericLevel(19i32);
pub const TvRat_2: EnTvRat_GenericLevel = EnTvRat_GenericLevel(2i32);
pub const TvRat_20: EnTvRat_GenericLevel = EnTvRat_GenericLevel(20i32);
pub const TvRat_21: EnTvRat_GenericLevel = EnTvRat_GenericLevel(21i32);
pub const TvRat_3: EnTvRat_GenericLevel = EnTvRat_GenericLevel(3i32);
pub const TvRat_4: EnTvRat_GenericLevel = EnTvRat_GenericLevel(4i32);
pub const TvRat_5: EnTvRat_GenericLevel = EnTvRat_GenericLevel(5i32);
pub const TvRat_6: EnTvRat_GenericLevel = EnTvRat_GenericLevel(6i32);
pub const TvRat_7: EnTvRat_GenericLevel = EnTvRat_GenericLevel(7i32);
pub const TvRat_8: EnTvRat_GenericLevel = EnTvRat_GenericLevel(8i32);
pub const TvRat_9: EnTvRat_GenericLevel = EnTvRat_GenericLevel(9i32);
pub const TvRat_LevelDontKnow: EnTvRat_GenericLevel = EnTvRat_GenericLevel(255i32);
pub const TvRat_SystemDontKnow: EnTvRat_System = EnTvRat_System(255i32);
pub const TvRat_Unblock: EnTvRat_GenericLevel = EnTvRat_GenericLevel(-1i32);
pub const TvRat_kLevels: EnTvRat_GenericLevel = EnTvRat_GenericLevel(22i32);
pub const TvRat_kSystems: EnTvRat_System = EnTvRat_System(10i32);
pub const US_TV: EnTvRat_System = EnTvRat_System(1i32);
pub const US_TV_14: EnTvRat_US_TV = EnTvRat_US_TV(5i32);
pub const US_TV_G: EnTvRat_US_TV = EnTvRat_US_TV(3i32);
pub const US_TV_IsAdultLanguage: BfEnTvRat_Attributes_US_TV = BfEnTvRat_Attributes_US_TV(8i32);
pub const US_TV_IsBlocked: BfEnTvRat_Attributes_US_TV = BfEnTvRat_Attributes_US_TV(1i32);
pub const US_TV_IsSexualSituation: BfEnTvRat_Attributes_US_TV = BfEnTvRat_Attributes_US_TV(4i32);
pub const US_TV_IsSexuallySuggestiveDialog: BfEnTvRat_Attributes_US_TV = BfEnTvRat_Attributes_US_TV(16i32);
pub const US_TV_IsViolent: BfEnTvRat_Attributes_US_TV = BfEnTvRat_Attributes_US_TV(2i32);
pub const US_TV_MA: EnTvRat_US_TV = EnTvRat_US_TV(6i32);
pub const US_TV_None: EnTvRat_US_TV = EnTvRat_US_TV(0i32);
pub const US_TV_None7: EnTvRat_US_TV = EnTvRat_US_TV(7i32);
pub const US_TV_PG: EnTvRat_US_TV = EnTvRat_US_TV(4i32);
pub const US_TV_ValidAttrSubmask: BfEnTvRat_Attributes_US_TV = BfEnTvRat_Attributes_US_TV(31i32);
pub const US_TV_Y: EnTvRat_US_TV = EnTvRat_US_TV(1i32);
pub const US_TV_Y7: EnTvRat_US_TV = EnTvRat_US_TV(2i32);
pub const VA_MATRIX_COEFF_FCC: VA_MATRIX_COEFFICIENTS = VA_MATRIX_COEFFICIENTS(4i32);
pub const VA_MATRIX_COEFF_H264_RGB: VA_MATRIX_COEFFICIENTS = VA_MATRIX_COEFFICIENTS(0i32);
pub const VA_MATRIX_COEFF_H264_YCgCo: VA_MATRIX_COEFFICIENTS = VA_MATRIX_COEFFICIENTS(8i32);
pub const VA_MATRIX_COEFF_ITU_R_BT_470_SYSTEM_B_G: VA_MATRIX_COEFFICIENTS = VA_MATRIX_COEFFICIENTS(5i32);
pub const VA_MATRIX_COEFF_ITU_R_BT_709: VA_MATRIX_COEFFICIENTS = VA_MATRIX_COEFFICIENTS(1i32);
pub const VA_MATRIX_COEFF_SMPTE_170M: VA_MATRIX_COEFFICIENTS = VA_MATRIX_COEFFICIENTS(6i32);
pub const VA_MATRIX_COEFF_SMPTE_240M: VA_MATRIX_COEFFICIENTS = VA_MATRIX_COEFFICIENTS(7i32);
pub const VA_MATRIX_COEFF_UNSPECIFIED: VA_MATRIX_COEFFICIENTS = VA_MATRIX_COEFFICIENTS(2i32);
pub const VA_PRIMARIES_H264_GENERIC_FILM: VA_COLOR_PRIMARIES = VA_COLOR_PRIMARIES(8i32);
pub const VA_PRIMARIES_ITU_R_BT_470_SYSTEM_B_G: VA_COLOR_PRIMARIES = VA_COLOR_PRIMARIES(5i32);
pub const VA_PRIMARIES_ITU_R_BT_470_SYSTEM_M: VA_COLOR_PRIMARIES = VA_COLOR_PRIMARIES(4i32);
pub const VA_PRIMARIES_ITU_R_BT_709: VA_COLOR_PRIMARIES = VA_COLOR_PRIMARIES(1i32);
pub const VA_PRIMARIES_SMPTE_170M: VA_COLOR_PRIMARIES = VA_COLOR_PRIMARIES(6i32);
pub const VA_PRIMARIES_SMPTE_240M: VA_COLOR_PRIMARIES = VA_COLOR_PRIMARIES(7i32);
pub const VA_PRIMARIES_UNSPECIFIED: VA_COLOR_PRIMARIES = VA_COLOR_PRIMARIES(2i32);
pub const VA_TRANSFER_CHARACTERISTICS_H264_LOG_100_TO_1: VA_TRANSFER_CHARACTERISTICS = VA_TRANSFER_CHARACTERISTICS(9i32);
pub const VA_TRANSFER_CHARACTERISTICS_H264_LOG_316_TO_1: VA_TRANSFER_CHARACTERISTICS = VA_TRANSFER_CHARACTERISTICS(10i32);
pub const VA_TRANSFER_CHARACTERISTICS_ITU_R_BT_470_SYSTEM_B_G: VA_TRANSFER_CHARACTERISTICS = VA_TRANSFER_CHARACTERISTICS(5i32);
pub const VA_TRANSFER_CHARACTERISTICS_ITU_R_BT_470_SYSTEM_M: VA_TRANSFER_CHARACTERISTICS = VA_TRANSFER_CHARACTERISTICS(4i32);
pub const VA_TRANSFER_CHARACTERISTICS_ITU_R_BT_709: VA_TRANSFER_CHARACTERISTICS = VA_TRANSFER_CHARACTERISTICS(1i32);
pub const VA_TRANSFER_CHARACTERISTICS_LINEAR: VA_TRANSFER_CHARACTERISTICS = VA_TRANSFER_CHARACTERISTICS(8i32);
pub const VA_TRANSFER_CHARACTERISTICS_SMPTE_170M: VA_TRANSFER_CHARACTERISTICS = VA_TRANSFER_CHARACTERISTICS(6i32);
pub const VA_TRANSFER_CHARACTERISTICS_SMPTE_240M: VA_TRANSFER_CHARACTERISTICS = VA_TRANSFER_CHARACTERISTICS(7i32);
pub const VA_TRANSFER_CHARACTERISTICS_UNSPECIFIED: VA_TRANSFER_CHARACTERISTICS = VA_TRANSFER_CHARACTERISTICS(2i32);
pub const VA_VIDEO_COMPONENT: VA_VIDEO_FORMAT = VA_VIDEO_FORMAT(0i32);
pub const VA_VIDEO_MAC: VA_VIDEO_FORMAT = VA_VIDEO_FORMAT(4i32);
pub const VA_VIDEO_NTSC: VA_VIDEO_FORMAT = VA_VIDEO_FORMAT(2i32);
pub const VA_VIDEO_PAL: VA_VIDEO_FORMAT = VA_VIDEO_FORMAT(1i32);
pub const VA_VIDEO_SECAM: VA_VIDEO_FORMAT = VA_VIDEO_FORMAT(3i32);
pub const VA_VIDEO_UNSPECIFIED: VA_VIDEO_FORMAT = VA_VIDEO_FORMAT(5i32);
pub const dispidAVAudioChannelConfigEvent: SegEventidList = SegEventidList(51i32);
pub const dispidAVAudioChannelCountEvent: SegEventidList = SegEventidList(52i32);
pub const dispidAVAudioSampleRateEvent: SegEventidList = SegEventidList(50i32);
pub const dispidAVDDSurroundModeEvent: SegEventidList = SegEventidList(54i32);
pub const dispidAVDecAudioDualMonoEvent: SegEventidList = SegEventidList(49i32);
pub const dispidAVDecCommonInputFormatEvent: SegEventidList = SegEventidList(55i32);
pub const dispidAVDecCommonMeanBitRateEvent: SegEventidList = SegEventidList(53i32);
pub const dispidAVDecCommonOutputFormatEvent: SegEventidList = SegEventidList(56i32);
pub const dispidAllocPresentID: SegDispidList = SegDispidList(165i32);
pub const dispidAlloctor: SegDispidList = SegDispidList(163i32);
pub const dispidAudioRenderer: MSViddispidList = MSViddispidList(10i32);
pub const dispidAudioRenderers: MSViddispidList = MSViddispidList(5i32);
pub const dispidAuxInputs: SegDispidList = SegDispidList(195i32);
pub const dispidAvailableSourceRect: SegDispidList = SegDispidList(33i32);
pub const dispidBookmarkOnStop: SegDispidList = SegDispidList(158i32);
pub const dispidBuild: MSViddispidList = MSViddispidList(13i32);
pub const dispidCCEnable: SegDispidList = SegDispidList(38i32);
pub const dispidCLSID: SegDispidList = SegDispidList(24i32);
pub const dispidCapture: SegDispidList = SegDispidList(161i32);
pub const dispidChangePassword: SegDispidList = SegDispidList(149i32);
pub const dispidChannelAvailable: SegDispidList = SegDispidList(13i32);
pub const dispidClip: SegDispidList = SegDispidList(30i32);
pub const dispidClippedSourceRect: SegDispidList = SegDispidList(32i32);
pub const dispidColorKey: MSViddispidList = MSViddispidList(20i32);
pub const dispidConfirmPassword: SegDispidList = SegDispidList(152i32);
pub const dispidCount: SegDispidList = SegDispidList(16i32);
pub const dispidCustomCompositorClass: SegDispidList = SegDispidList(134i32);
pub const dispidDecompose: MSViddispidList = MSViddispidList(17i32);
pub const dispidDefaultAudioLCID: SegDispidList = SegDispidList(155i32);
pub const dispidDefaultMenuLCID: SegDispidList = SegDispidList(157i32);
pub const dispidDefaultSubpictureLCID: SegDispidList = SegDispidList(156i32);
pub const dispidDevAudioFrequency: SegDispidList = SegDispidList(15i32);
pub const dispidDevAudioSubchannel: SegDispidList = SegDispidList(12i32);
pub const dispidDevBalance: SegDispidList = SegDispidList(8i32);
pub const dispidDevCanStep: SegDispidList = SegDispidList(40i32);
pub const dispidDevCountryCode: SegDispidList = SegDispidList(4i32);
pub const dispidDevFileName: SegDispidList = SegDispidList(17i32);
pub const dispidDevImageSourceHeight: SegDispidList = SegDispidList(3i32);
pub const dispidDevImageSourceWidth: SegDispidList = SegDispidList(2i32);
pub const dispidDevOverScan: SegDispidList = SegDispidList(5i32);
pub const dispidDevPause: SegDispidList = SegDispidList(36i32);
pub const dispidDevPower: SegDispidList = SegDispidList(9i32);
pub const dispidDevRun: SegDispidList = SegDispidList(35i32);
pub const dispidDevSAP: SegDispidList = SegDispidList(29i32);
pub const dispidDevStep: SegDispidList = SegDispidList(39i32);
pub const dispidDevStop: SegDispidList = SegDispidList(37i32);
pub const dispidDevVideoFrequency: SegDispidList = SegDispidList(14i32);
pub const dispidDevVideoSubchannel: SegDispidList = SegDispidList(11i32);
pub const dispidDevView: SegDispidList = SegDispidList(22i32);
pub const dispidDevVolume: SegDispidList = SegDispidList(7i32);
pub const dispidDevicePath: SegDispidList = SegDispidList(217i32);
pub const dispidDisableAudio: MSViddispidList = MSViddispidList(26i32);
pub const dispidDisableVideo: MSViddispidList = MSViddispidList(25i32);
pub const dispidDisplayChange: SegDispidList = SegDispidList(142i32);
pub const dispidDisplaySize: MSViddispidList = MSViddispidList(18i32);
pub const dispidFeatures: MSViddispidList = MSViddispidList(6i32);
pub const dispidGetParentalCountry: SegDispidList = SegDispidList(154i32);
pub const dispidGetParentalLevel: SegDispidList = SegDispidList(153i32);
pub const dispidInput: MSViddispidList = MSViddispidList(7i32);
pub const dispidInputs: MSViddispidList = MSViddispidList(0i32);
pub const dispidKSCat: SegDispidList = SegDispidList(23i32);
pub const dispidMaintainAspectRatio: MSViddispidList = MSViddispidList(19i32);
pub const dispidMaxVidRect: SegDispidList = SegDispidList(159i32);
pub const dispidMediaPosition: SegDispidList = SegDispidList(34i32);
pub const dispidMessageDrain: SegDispidList = SegDispidList(20i32);
pub const dispidMinVidRect: SegDispidList = SegDispidList(160i32);
pub const dispidMixerBitmap: SegDispidList = SegDispidList(136i32);
pub const dispidMixerBitmapOpacity: SegDispidList = SegDispidList(138i32);
pub const dispidMixerBitmapRect: SegDispidList = SegDispidList(139i32);
pub const dispidModes: SegDispidList = SegDispidList(194i32);
pub const dispidName: SegDispidList = SegDispidList(0i32);
pub const dispidNameSetLock: SegDispidList = SegDispidList(176i32);
pub const dispidOutput: MSViddispidList = MSViddispidList(8i32);
pub const dispidOutputs: MSViddispidList = MSViddispidList(1i32);
pub const dispidOwner: SegDispidList = SegDispidList(19i32);
pub const dispidPause: MSViddispidList = MSViddispidList(14i32);
pub const dispidRateEx: SegDispidList = SegDispidList(201i32);
pub const dispidRePaint: SegDispidList = SegDispidList(143i32);
pub const dispidRecordingAttribute: SegDispidList = SegDispidList(179i32);
pub const dispidRequestedClipRect: SegDispidList = SegDispidList(31i32);
pub const dispidRun: MSViddispidList = MSViddispidList(15i32);
pub const dispidSBEConfigure: SegDispidList = SegDispidList(181i32);
pub const dispidSaveParentalCountry: SegDispidList = SegDispidList(151i32);
pub const dispidSaveParentalLevel: SegDispidList = SegDispidList(150i32);
pub const dispidSegment: SegDispidList = SegDispidList(6i32);
pub const dispidSelectedFeatures: MSViddispidList = MSViddispidList(11i32);
pub const dispidService: SegDispidList = SegDispidList(186i32);
pub const dispidServiceP: MSViddispidList = MSViddispidList(28i32);
pub const dispidSetAllocator: SegDispidList = SegDispidList(166i32);
pub const dispidSetMinSeek: SegDispidList = SegDispidList(200i32);
pub const dispidSetSinkFilter: SegDispidList = SegDispidList(191i32);
pub const dispidSetupMixerBitmap: SegDispidList = SegDispidList(140i32);
pub const dispidSourceSize: SegDispidList = SegDispidList(41i32);
pub const dispidStateChange: MSViddispidList = MSViddispidList(21i32);
pub const dispidStatus: SegDispidList = SegDispidList(1i32);
pub const dispidStop: MSViddispidList = MSViddispidList(16i32);
pub const dispidStreamBufferContentRecording: SegDispidList = SegDispidList(170i32);
pub const dispidStreamBufferReferenceRecording: SegDispidList = SegDispidList(171i32);
pub const dispidStreamBufferSinkName: SegDispidList = SegDispidList(168i32);
pub const dispidStreamBufferSourceName: SegDispidList = SegDispidList(169i32);
pub const dispidTS: SegDispidList = SegDispidList(28i32);
pub const dispidTVFormats: SegDispidList = SegDispidList(193i32);
pub const dispidTeleTextFilter: SegDispidList = SegDispidList(196i32);
pub const dispidTune: SegDispidList = SegDispidList(27i32);
pub const dispidTuneChan: SegDispidList = SegDispidList(10i32);
pub const dispidUnlockProfile: SegDispidList = SegDispidList(198i32);
pub const dispidUserEvent: SegDispidList = SegDispidList(220i32);
pub const dispidUsingOverlay: SegDispidList = SegDispidList(141i32);
pub const dispidVideoRenderer: MSViddispidList = MSViddispidList(9i32);
pub const dispidVideoRenderers: MSViddispidList = MSViddispidList(4i32);
pub const dispidView: MSViddispidList = MSViddispidList(12i32);
pub const dispidViewNext: MSViddispidList = MSViddispidList(27i32);
pub const dispidViewable: SegDispidList = SegDispidList(21i32);
pub const dispidVisible: SegDispidList = SegDispidList(18i32);
pub const dispid_AcceptParentalLevelChange: SegDispidList = SegDispidList(97i32);
pub const dispid_ActivateAtPosition: SegDispidList = SegDispidList(67i32);
pub const dispid_ActivateButton: SegDispidList = SegDispidList(62i32);
pub const dispid_AddFilter: SegDispidList = SegDispidList(199i32);
pub const dispid_Allocator: SegDispidList = SegDispidList(164i32);
pub const dispid_AnglesAvailable: SegDispidList = SegDispidList(89i32);
pub const dispid_AudioStreamsAvailable: SegDispidList = SegDispidList(88i32);
pub const dispid_BlockUnrated: SegDispidList = SegDispidList(187i32);
pub const dispid_Bookmark: SegDispidList = SegDispidList(221i32);
pub const dispid_ButtonAtPosition: SegDispidList = SegDispidList(69i32);
pub const dispid_ButtonRect: SegDispidList = SegDispidList(131i32);
pub const dispid_CCActive: SegDispidList = SegDispidList(91i32);
pub const dispid_CLSID: SegDispidList = SegDispidList(26i32);
pub const dispid_CurrentAngle: SegDispidList = SegDispidList(90i32);
pub const dispid_CurrentAudioStream: SegDispidList = SegDispidList(87i32);
pub const dispid_CurrentCCService: SegDispidList = SegDispidList(92i32);
pub const dispid_CurrentChapter: SegDispidList = SegDispidList(77i32);
pub const dispid_CurrentDiscSide: SegDispidList = SegDispidList(75i32);
pub const dispid_CurrentDomain: SegDispidList = SegDispidList(76i32);
pub const dispid_CurrentRatings: SegDispidList = SegDispidList(182i32);
pub const dispid_CurrentSubpictureStream: SegDispidList = SegDispidList(85i32);
pub const dispid_CurrentTime: SegDispidList = SegDispidList(79i32);
pub const dispid_CurrentTitle: SegDispidList = SegDispidList(78i32);
pub const dispid_CurrentVolume: SegDispidList = SegDispidList(74i32);
pub const dispid_CustomCompositor: SegDispidList = SegDispidList(135i32);
pub const dispid_CustomCompositorClass: SegDispidList = SegDispidList(133i32);
pub const dispid_DVDAdm: SegDispidList = SegDispidList(114i32);
pub const dispid_DVDDirectory: SegDispidList = SegDispidList(82i32);
pub const dispid_DVDScreenInMouseCoordinates: SegDispidList = SegDispidList(132i32);
pub const dispid_DVDTextLanguageLCID: SegDispidList = SegDispidList(112i32);
pub const dispid_DVDTextNumberOfLanguages: SegDispidList = SegDispidList(111i32);
pub const dispid_DVDTextNumberOfStrings: SegDispidList = SegDispidList(110i32);
pub const dispid_DVDTextString: SegDispidList = SegDispidList(109i32);
pub const dispid_DVDTextStringType: SegDispidList = SegDispidList(108i32);
pub const dispid_DVDTimeCode2bstr: SegDispidList = SegDispidList(81i32);
pub const dispid_DVDUniqueID: SegDispidList = SegDispidList(95i32);
pub const dispid_DecimateInput: SegDispidList = SegDispidList(162i32);
pub const dispid_DefaultAudioLanguage: SegDispidList = SegDispidList(123i32);
pub const dispid_DefaultAudioLanguageExt: SegDispidList = SegDispidList(125i32);
pub const dispid_DefaultMenuLanguage: SegDispidList = SegDispidList(121i32);
pub const dispid_DefaultSubpictureLanguage: SegDispidList = SegDispidList(122i32);
pub const dispid_DefaultSubpictureLanguageExt: SegDispidList = SegDispidList(124i32);
pub const dispid_DeleteBookmark: SegDispidList = SegDispidList(115i32);
pub const dispid_Eject: SegDispidList = SegDispidList(104i32);
pub const dispid_EnableResetOnStop: SegDispidList = SegDispidList(96i32);
pub const dispid_FramesPerSecond: SegDispidList = SegDispidList(80i32);
pub const dispid_GPRM: SegDispidList = SegDispidList(107i32);
pub const dispid_Inputs: MSViddispidList = MSViddispidList(2i32);
pub const dispid_IsAudioStreamEnabled: SegDispidList = SegDispidList(84i32);
pub const dispid_IsEqualDevice: SegDispidList = SegDispidList(144i32);
pub const dispid_IsSubpictureStreamEnabled: SegDispidList = SegDispidList(83i32);
pub const dispid_KSCat: SegDispidList = SegDispidList(25i32);
pub const dispid_KaraokeAudioPresentationMode: SegDispidList = SegDispidList(127i32);
pub const dispid_KaraokeChannelAssignment: SegDispidList = SegDispidList(129i32);
pub const dispid_KaraokeChannelContent: SegDispidList = SegDispidList(128i32);
pub const dispid_LanguageFromLCID: SegDispidList = SegDispidList(126i32);
pub const dispid_MaxRatingsLevel: SegDispidList = SegDispidList(183i32);
pub const dispid_MixerBitmap: SegDispidList = SegDispidList(137i32);
pub const dispid_NotifyParentalLevelChange: SegDispidList = SegDispidList(98i32);
pub const dispid_NumberOfChapters: SegDispidList = SegDispidList(70i32);
pub const dispid_Outputs: MSViddispidList = MSViddispidList(3i32);
pub const dispid_PlayerParentalCountry: SegDispidList = SegDispidList(102i32);
pub const dispid_PlayerParentalLevel: SegDispidList = SegDispidList(103i32);
pub const dispid_PreferredSubpictureStream: SegDispidList = SegDispidList(120i32);
pub const dispid_RecordingAttribute: SegDispidList = SegDispidList(180i32);
pub const dispid_RegionChange: SegDispidList = SegDispidList(113i32);
pub const dispid_RestoreBookmark: SegDispidList = SegDispidList(116i32);
pub const dispid_RestorePreferredSettings: SegDispidList = SegDispidList(130i32);
pub const dispid_SPRM: SegDispidList = SegDispidList(106i32);
pub const dispid_SaveBookmark: SegDispidList = SegDispidList(117i32);
pub const dispid_SelectAndActivateButton: SegDispidList = SegDispidList(61i32);
pub const dispid_SelectAtPosition: SegDispidList = SegDispidList(68i32);
pub const dispid_SelectDefaultAudioLanguage: SegDispidList = SegDispidList(118i32);
pub const dispid_SelectDefaultSubpictureLanguage: SegDispidList = SegDispidList(119i32);
pub const dispid_SelectLeftButton: SegDispidList = SegDispidList(64i32);
pub const dispid_SelectLowerButton: SegDispidList = SegDispidList(65i32);
pub const dispid_SelectParentalCountry: SegDispidList = SegDispidList(99i32);
pub const dispid_SelectParentalLevel: SegDispidList = SegDispidList(100i32);
pub const dispid_SelectRightButton: SegDispidList = SegDispidList(63i32);
pub const dispid_SelectUpperButton: SegDispidList = SegDispidList(66i32);
pub const dispid_SetAllocator: SegDispidList = SegDispidList(167i32);
pub const dispid_SinkStreams: SegDispidList = SegDispidList(192i32);
pub const dispid_SourceFilter: SegDispidList = SegDispidList(218i32);
pub const dispid_SubpictureLanguage: SegDispidList = SegDispidList(86i32);
pub const dispid_SubpictureOn: SegDispidList = SegDispidList(94i32);
pub const dispid_SubpictureStreamsAvailable: SegDispidList = SegDispidList(93i32);
pub const dispid_SuppressEffects: SegDispidList = SegDispidList(189i32);
pub const dispid_TitleParentalLevels: SegDispidList = SegDispidList(101i32);
pub const dispid_TitlesAvailable: SegDispidList = SegDispidList(72i32);
pub const dispid_TotalTitleTime: SegDispidList = SegDispidList(71i32);
pub const dispid_UOPValid: SegDispidList = SegDispidList(105i32);
pub const dispid_UnratedDelay: SegDispidList = SegDispidList(188i32);
pub const dispid_VolumesAvailable: SegDispidList = SegDispidList(73i32);
pub const dispid__SourceFilter: SegDispidList = SegDispidList(219i32);
pub const dispid_audiocounter: SegDispidList = SegDispidList(206i32);
pub const dispid_audioencoderint: SegDispidList = SegDispidList(184i32);
pub const dispid_audiolanguage: SegDispidList = SegDispidList(55i32);
pub const dispid_buttonsavailable: SegDispidList = SegDispidList(59i32);
pub const dispid_cccounter: SegDispidList = SegDispidList(208i32);
pub const dispid_channelchangeint: SegDispidList = SegDispidList(197i32);
pub const dispid_currentbutton: SegDispidList = SegDispidList(60i32);
pub const dispid_playattime: SegDispidList = SegDispidList(46i32);
pub const dispid_playattimeintitle: SegDispidList = SegDispidList(47i32);
pub const dispid_playbackwards: SegDispidList = SegDispidList(53i32);
pub const dispid_playchapter: SegDispidList = SegDispidList(44i32);
pub const dispid_playchapterintitle: SegDispidList = SegDispidList(43i32);
pub const dispid_playchaptersautostop: SegDispidList = SegDispidList(45i32);
pub const dispid_playforwards: SegDispidList = SegDispidList(52i32);
pub const dispid_playnextchapter: SegDispidList = SegDispidList(51i32);
pub const dispid_playperiodintitleautostop: SegDispidList = SegDispidList(48i32);
pub const dispid_playprevchapter: SegDispidList = SegDispidList(50i32);
pub const dispid_playtitle: SegDispidList = SegDispidList(42i32);
pub const dispid_replaychapter: SegDispidList = SegDispidList(49i32);
pub const dispid_resetFilterList: SegDispidList = SegDispidList(216i32);
pub const dispid_resume: SegDispidList = SegDispidList(57i32);
pub const dispid_returnfromsubmenu: SegDispidList = SegDispidList(58i32);
pub const dispid_showmenu: SegDispidList = SegDispidList(56i32);
pub const dispid_stilloff: SegDispidList = SegDispidList(54i32);
pub const dispid_videocounter: SegDispidList = SegDispidList(207i32);
pub const dispid_videoencoderint: SegDispidList = SegDispidList(185i32);
pub const dispid_wstcounter: SegDispidList = SegDispidList(209i32);
pub const dispidaudio_analysis: SegDispidList = SegDispidList(213i32);
pub const dispidaudioanalysis: SegDispidList = SegDispidList(210i32);
pub const dispidaudiocounter: SegDispidList = SegDispidList(202i32);
pub const dispidbind: MSViddispidList = MSViddispidList(24i32);
pub const dispidcccounter: SegDispidList = SegDispidList(204i32);
pub const dispiddata_analysis: SegDispidList = SegDispidList(215i32);
pub const dispiddataanalysis: SegDispidList = SegDispidList(212i32);
pub const dispidgetState: MSViddispidList = MSViddispidList(22i32);
pub const dispidlength: SegDispidList = SegDispidList(148i32);
pub const dispidlicenseerrorcode: SegEventidList = SegEventidList(45i32);
pub const dispidposition: SegDispidList = SegDispidList(146i32);
pub const dispidpositionmode: SegDispidList = SegDispidList(147i32);
pub const dispidrate: SegDispidList = SegDispidList(145i32);
pub const dispidrecordingstarted: SegDispidList = SegDispidList(175i32);
pub const dispidrecordingstopped: SegDispidList = SegDispidList(174i32);
pub const dispidrecordingtype: SegDispidList = SegDispidList(177i32);
pub const dispidsbesource: SegDispidList = SegDispidList(190i32);
pub const dispidstart: SegDispidList = SegDispidList(178i32);
pub const dispidstarttime: SegDispidList = SegDispidList(172i32);
pub const dispidstoptime: SegDispidList = SegDispidList(173i32);
pub const dispidunbind: MSViddispidList = MSViddispidList(23i32);
pub const dispidvideo_analysis: SegDispidList = SegDispidList(214i32);
pub const dispidvideoanalysis: SegDispidList = SegDispidList(211i32);
pub const dispidvideocounter: SegDispidList = SegDispidList(203i32);
pub const dispidwstcounter: SegDispidList = SegDispidList(205i32);
pub const dslDefaultSize: DisplaySizeList = DisplaySizeList(0i32);
pub const dslDoubleSourceSize: DisplaySizeList = DisplaySizeList(2i32);
pub const dslFullScreen: DisplaySizeList = DisplaySizeList(3i32);
pub const dslHalfScreen: DisplaySizeList = DisplaySizeList(4i32);
pub const dslHalfSourceSize: DisplaySizeList = DisplaySizeList(1i32);
pub const dslQuarterScreen: DisplaySizeList = DisplaySizeList(5i32);
pub const dslSixteenthScreen: DisplaySizeList = DisplaySizeList(6i32);
pub const dslSourceSize: DisplaySizeList = DisplaySizeList(0i32);
pub const dvdChannel_Audio: DVDTextStringType = DVDTextStringType(32i32);
pub const dvdGeneral_Comments: DVDTextStringType = DVDTextStringType(49i32);
pub const dvdGeneral_Name: DVDTextStringType = DVDTextStringType(48i32);
pub const dvdMenu_Angle: DVDMenuIDConstants = DVDMenuIDConstants(6i32);
pub const dvdMenu_Audio: DVDMenuIDConstants = DVDMenuIDConstants(5i32);
pub const dvdMenu_Chapter: DVDMenuIDConstants = DVDMenuIDConstants(7i32);
pub const dvdMenu_Root: DVDMenuIDConstants = DVDMenuIDConstants(3i32);
pub const dvdMenu_Subpicture: DVDMenuIDConstants = DVDMenuIDConstants(4i32);
pub const dvdMenu_Title: DVDMenuIDConstants = DVDMenuIDConstants(2i32);
pub const dvdOther_Cut: DVDTextStringType = DVDTextStringType(81i32);
pub const dvdOther_Scene: DVDTextStringType = DVDTextStringType(80i32);
pub const dvdOther_Take: DVDTextStringType = DVDTextStringType(82i32);
pub const dvdSPExt_CC_Big: DVDSPExt = DVDSPExt(6i32);
pub const dvdSPExt_CC_Children: DVDSPExt = DVDSPExt(7i32);
pub const dvdSPExt_CC_Normal: DVDSPExt = DVDSPExt(5i32);
pub const dvdSPExt_Caption_Big: DVDSPExt = DVDSPExt(2i32);
pub const dvdSPExt_Caption_Children: DVDSPExt = DVDSPExt(3i32);
pub const dvdSPExt_Caption_Normal: DVDSPExt = DVDSPExt(1i32);
pub const dvdSPExt_DirectorComments_Big: DVDSPExt = DVDSPExt(14i32);
pub const dvdSPExt_DirectorComments_Children: DVDSPExt = DVDSPExt(15i32);
pub const dvdSPExt_DirectorComments_Normal: DVDSPExt = DVDSPExt(13i32);
pub const dvdSPExt_Forced: DVDSPExt = DVDSPExt(9i32);
pub const dvdSPExt_NotSpecified: DVDSPExt = DVDSPExt(0i32);
pub const dvdState_Paused: DVDFilterState = DVDFilterState(1i32);
pub const dvdState_Running: DVDFilterState = DVDFilterState(2i32);
pub const dvdState_Stopped: DVDFilterState = DVDFilterState(0i32);
pub const dvdState_Undefined: DVDFilterState = DVDFilterState(-2i32);
pub const dvdState_Unitialized: DVDFilterState = DVDFilterState(-1i32);
pub const dvdStream_Angle: DVDTextStringType = DVDTextStringType(18i32);
pub const dvdStream_Audio: DVDTextStringType = DVDTextStringType(16i32);
pub const dvdStream_Subpicture: DVDTextStringType = DVDTextStringType(17i32);
pub const dvdStruct_Cell: DVDTextStringType = DVDTextStringType(5i32);
pub const dvdStruct_ParentalID: DVDTextStringType = DVDTextStringType(3i32);
pub const dvdStruct_PartOfTitle: DVDTextStringType = DVDTextStringType(4i32);
pub const dvdStruct_Title: DVDTextStringType = DVDTextStringType(2i32);
pub const dvdStruct_Volume: DVDTextStringType = DVDTextStringType(1i32);
pub const dvdTitle_Album: DVDTextStringType = DVDTextStringType(59i32);
pub const dvdTitle_Movie: DVDTextStringType = DVDTextStringType(57i32);
pub const dvdTitle_Orig_Album: DVDTextStringType = DVDTextStringType(75i32);
pub const dvdTitle_Orig_Movie: DVDTextStringType = DVDTextStringType(73i32);
pub const dvdTitle_Orig_Other: DVDTextStringType = DVDTextStringType(79i32);
pub const dvdTitle_Orig_Series: DVDTextStringType = DVDTextStringType(72i32);
pub const dvdTitle_Orig_Song: DVDTextStringType = DVDTextStringType(76i32);
pub const dvdTitle_Orig_Video: DVDTextStringType = DVDTextStringType(74i32);
pub const dvdTitle_Other: DVDTextStringType = DVDTextStringType(63i32);
pub const dvdTitle_Series: DVDTextStringType = DVDTextStringType(56i32);
pub const dvdTitle_Song: DVDTextStringType = DVDTextStringType(60i32);
pub const dvdTitle_Sub_Album: DVDTextStringType = DVDTextStringType(67i32);
pub const dvdTitle_Sub_Movie: DVDTextStringType = DVDTextStringType(65i32);
pub const dvdTitle_Sub_Other: DVDTextStringType = DVDTextStringType(71i32);
pub const dvdTitle_Sub_Series: DVDTextStringType = DVDTextStringType(64i32);
pub const dvdTitle_Sub_Song: DVDTextStringType = DVDTextStringType(68i32);
pub const dvdTitle_Sub_Video: DVDTextStringType = DVDTextStringType(66i32);
pub const dvdTitle_Video: DVDTextStringType = DVDTextStringType(58i32);
pub const eventidBroadcastEvent: SegEventidList = SegEventidList(46i32);
pub const eventidBroadcastEventEx: SegEventidList = SegEventidList(47i32);
pub const eventidCOPPBlocked: SegEventidList = SegEventidList(43i32);
pub const eventidCOPPUnblocked: SegEventidList = SegEventidList(44i32);
pub const eventidChangeCurrentAngle: SegEventidList = SegEventidList(13i32);
pub const eventidChangeCurrentAudioStream: SegEventidList = SegEventidList(11i32);
pub const eventidChangeCurrentSubpictureStream: SegEventidList = SegEventidList(12i32);
pub const eventidChangeKaraokePresMode: SegEventidList = SegEventidList(24i32);
pub const eventidChangeVideoPresMode: SegEventidList = SegEventidList(25i32);
pub const eventidContentBecomingStale: SegEventidList = SegEventidList(37i32);
pub const eventidContentPrimarilyAudio: SegEventidList = SegEventidList(48i32);
pub const eventidDVDNotify: SegEventidList = SegEventidList(3i32);
pub const eventidEncryptionOff: SegEventidList = SegEventidList(40i32);
pub const eventidEncryptionOn: SegEventidList = SegEventidList(39i32);
pub const eventidEndOfMedia: SegEventidList = SegEventidList(2i32);
pub const eventidLicenseChange: SegEventidList = SegEventidList(42i32);
pub const eventidOnTuneChanged: SegEventidList = SegEventidList(1i32);
pub const eventidOverlayUnavailable: SegEventidList = SegEventidList(26i32);
pub const eventidPauseOn: SegEventidList = SegEventidList(10i32);
pub const eventidPlayAtTime: SegEventidList = SegEventidList(15i32);
pub const eventidPlayAtTimeInTitle: SegEventidList = SegEventidList(14i32);
pub const eventidPlayBackwards: SegEventidList = SegEventidList(5i32);
pub const eventidPlayChapter: SegEventidList = SegEventidList(17i32);
pub const eventidPlayChapterInTitle: SegEventidList = SegEventidList(16i32);
pub const eventidPlayForwards: SegEventidList = SegEventidList(4i32);
pub const eventidPlayNextChapter: SegEventidList = SegEventidList(19i32);
pub const eventidPlayPrevChapter: SegEventidList = SegEventidList(23i32);
pub const eventidPlayTitle: SegEventidList = SegEventidList(22i32);
pub const eventidRateChange: SegEventidList = SegEventidList(41i32);
pub const eventidRatingsBlocked: SegEventidList = SegEventidList(31i32);
pub const eventidRatingsChanged: SegEventidList = SegEventidList(33i32);
pub const eventidRatingsUnlocked: SegEventidList = SegEventidList(32i32);
pub const eventidReplayChapter: SegEventidList = SegEventidList(18i32);
pub const eventidResume: SegEventidList = SegEventidList(7i32);
pub const eventidReturnFromSubmenu: SegEventidList = SegEventidList(21i32);
pub const eventidSelectOrActivateButton: SegEventidList = SegEventidList(8i32);
pub const eventidShowMenu: SegEventidList = SegEventidList(6i32);
pub const eventidSinkCertificateFailure: SegEventidList = SegEventidList(27i32);
pub const eventidSinkCertificateSuccess: SegEventidList = SegEventidList(28i32);
pub const eventidSourceCertificateFailure: SegEventidList = SegEventidList(29i32);
pub const eventidSourceCertificateSuccess: SegEventidList = SegEventidList(30i32);
pub const eventidStaleDataRead: SegEventidList = SegEventidList(36i32);
pub const eventidStaleFileDeleted: SegEventidList = SegEventidList(38i32);
pub const eventidStateChange: SegEventidList = SegEventidList(0i32);
pub const eventidStillOff: SegEventidList = SegEventidList(9i32);
pub const eventidStop: SegEventidList = SegEventidList(20i32);
pub const eventidTimeHole: SegEventidList = SegEventidList(35i32);
pub const eventidWriteFailure: SegEventidList = SegEventidList(34i32);
pub const eventidWriteFailureClear: SegEventidList = SegEventidList(57i32);
pub const g_wszStreamBufferRecordingAlbumArtist: windows_core::PCWSTR = windows_core::w!("WM/AlbumArtist");
pub const g_wszStreamBufferRecordingAlbumCoverURL: windows_core::PCWSTR = windows_core::w!("WM/AlbumCoverURL");
pub const g_wszStreamBufferRecordingAlbumTitle: windows_core::PCWSTR = windows_core::w!("WM/AlbumTitle");
pub const g_wszStreamBufferRecordingAspectRatioX: windows_core::PCWSTR = windows_core::w!("AspectRatioX");
pub const g_wszStreamBufferRecordingAspectRatioY: windows_core::PCWSTR = windows_core::w!("AspectRatioY");
pub const g_wszStreamBufferRecordingAuthor: windows_core::PCWSTR = windows_core::w!("Author");
pub const g_wszStreamBufferRecordingBannerImageData: windows_core::PCWSTR = windows_core::w!("BannerImageData");
pub const g_wszStreamBufferRecordingBannerImageType: windows_core::PCWSTR = windows_core::w!("BannerImageType");
pub const g_wszStreamBufferRecordingBannerImageURL: windows_core::PCWSTR = windows_core::w!("BannerImageURL");
pub const g_wszStreamBufferRecordingBitrate: windows_core::PCWSTR = windows_core::w!("Bitrate");
pub const g_wszStreamBufferRecordingBroadcast: windows_core::PCWSTR = windows_core::w!("Broadcast");
pub const g_wszStreamBufferRecordingComposer: windows_core::PCWSTR = windows_core::w!("WM/Composer");
pub const g_wszStreamBufferRecordingCopyright: windows_core::PCWSTR = windows_core::w!("Copyright");
pub const g_wszStreamBufferRecordingCopyrightURL: windows_core::PCWSTR = windows_core::w!("CopyrightURL");
pub const g_wszStreamBufferRecordingCurrentBitrate: windows_core::PCWSTR = windows_core::w!("CurrentBitrate");
pub const g_wszStreamBufferRecordingDRM_Flags: windows_core::PCWSTR = windows_core::w!("DRM_Flags");
pub const g_wszStreamBufferRecordingDRM_Level: windows_core::PCWSTR = windows_core::w!("DRM_Level");
pub const g_wszStreamBufferRecordingDescription: windows_core::PCWSTR = windows_core::w!("Description");
pub const g_wszStreamBufferRecordingDuration: windows_core::PCWSTR = windows_core::w!("Duration");
pub const g_wszStreamBufferRecordingFileSize: windows_core::PCWSTR = windows_core::w!("FileSize");
pub const g_wszStreamBufferRecordingGenre: windows_core::PCWSTR = windows_core::w!("WM/Genre");
pub const g_wszStreamBufferRecordingGenreID: windows_core::PCWSTR = windows_core::w!("WM/GenreID");
pub const g_wszStreamBufferRecordingHasArbitraryDataStream: windows_core::PCWSTR = windows_core::w!("HasArbitraryDataStream");
pub const g_wszStreamBufferRecordingHasAttachedImages: windows_core::PCWSTR = windows_core::w!("HasAttachedImages");
pub const g_wszStreamBufferRecordingHasAudio: windows_core::PCWSTR = windows_core::w!("HasAudio");
pub const g_wszStreamBufferRecordingHasFileTransferStream: windows_core::PCWSTR = windows_core::w!("HasFileTransferStream");
pub const g_wszStreamBufferRecordingHasImage: windows_core::PCWSTR = windows_core::w!("HasImage");
pub const g_wszStreamBufferRecordingHasScript: windows_core::PCWSTR = windows_core::w!("HasScript");
pub const g_wszStreamBufferRecordingHasVideo: windows_core::PCWSTR = windows_core::w!("HasVideo");
pub const g_wszStreamBufferRecordingIsVBR: windows_core::PCWSTR = windows_core::w!("IsVBR");
pub const g_wszStreamBufferRecordingLyrics: windows_core::PCWSTR = windows_core::w!("WM/Lyrics");
pub const g_wszStreamBufferRecordingMCDI: windows_core::PCWSTR = windows_core::w!("WM/MCDI");
pub const g_wszStreamBufferRecordingNSCAddress: windows_core::PCWSTR = windows_core::w!("NSC_Address");
pub const g_wszStreamBufferRecordingNSCDescription: windows_core::PCWSTR = windows_core::w!("NSC_Description");
pub const g_wszStreamBufferRecordingNSCEmail: windows_core::PCWSTR = windows_core::w!("NSC_Email");
pub const g_wszStreamBufferRecordingNSCName: windows_core::PCWSTR = windows_core::w!("NSC_Name");
pub const g_wszStreamBufferRecordingNSCPhone: windows_core::PCWSTR = windows_core::w!("NSC_Phone");
pub const g_wszStreamBufferRecordingNumberOfFrames: windows_core::PCWSTR = windows_core::w!("NumberOfFrames");
pub const g_wszStreamBufferRecordingOptimalBitrate: windows_core::PCWSTR = windows_core::w!("OptimalBitrate");
pub const g_wszStreamBufferRecordingPromotionURL: windows_core::PCWSTR = windows_core::w!("WM/PromotionURL");
pub const g_wszStreamBufferRecordingProtected: windows_core::PCWSTR = windows_core::w!("Is_Protected");
pub const g_wszStreamBufferRecordingRating: windows_core::PCWSTR = windows_core::w!("Rating");
pub const g_wszStreamBufferRecordingSeekable: windows_core::PCWSTR = windows_core::w!("Seekable");
pub const g_wszStreamBufferRecordingSignature_Name: windows_core::PCWSTR = windows_core::w!("Signature_Name");
pub const g_wszStreamBufferRecordingSkipBackward: windows_core::PCWSTR = windows_core::w!("Can_Skip_Backward");
pub const g_wszStreamBufferRecordingSkipForward: windows_core::PCWSTR = windows_core::w!("Can_Skip_Forward");
pub const g_wszStreamBufferRecordingStridable: windows_core::PCWSTR = windows_core::w!("Stridable");
pub const g_wszStreamBufferRecordingTitle: windows_core::PCWSTR = windows_core::w!("Title");
pub const g_wszStreamBufferRecordingToolName: windows_core::PCWSTR = windows_core::w!("WM/ToolName");
pub const g_wszStreamBufferRecordingToolVersion: windows_core::PCWSTR = windows_core::w!("WM/ToolVersion");
pub const g_wszStreamBufferRecordingTrack: windows_core::PCWSTR = windows_core::w!("WM/Track");
pub const g_wszStreamBufferRecordingTrackNumber: windows_core::PCWSTR = windows_core::w!("WM/TrackNumber");
pub const g_wszStreamBufferRecordingTrusted: windows_core::PCWSTR = windows_core::w!("Is_Trusted");
pub const g_wszStreamBufferRecordingUse_DRM: windows_core::PCWSTR = windows_core::w!("Use_DRM");
pub const g_wszStreamBufferRecordingYear: windows_core::PCWSTR = windows_core::w!("WM/Year");
pub const sslClipByClipRect: SourceSizeList = SourceSizeList(2i32);
pub const sslClipByOverScan: SourceSizeList = SourceSizeList(1i32);
pub const sslFullSize: SourceSizeList = SourceSizeList(0i32);
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct BDA_DigitalSignalStandard(pub i32);
impl windows_core::TypeKind for BDA_DigitalSignalStandard {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for BDA_DigitalSignalStandard {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("BDA_DigitalSignalStandard").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct BDA_LockType(pub i32);
impl windows_core::TypeKind for BDA_LockType {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for BDA_LockType {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("BDA_LockType").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct BDA_SignalType(pub i32);
impl windows_core::TypeKind for BDA_SignalType {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for BDA_SignalType {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("BDA_SignalType").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct BfEnTvRat_Attributes_CAE_TV(pub i32);
impl windows_core::TypeKind for BfEnTvRat_Attributes_CAE_TV {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for BfEnTvRat_Attributes_CAE_TV {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("BfEnTvRat_Attributes_CAE_TV").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct BfEnTvRat_Attributes_CAF_TV(pub i32);
impl windows_core::TypeKind for BfEnTvRat_Attributes_CAF_TV {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for BfEnTvRat_Attributes_CAF_TV {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("BfEnTvRat_Attributes_CAF_TV").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct BfEnTvRat_Attributes_MPAA(pub i32);
impl windows_core::TypeKind for BfEnTvRat_Attributes_MPAA {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for BfEnTvRat_Attributes_MPAA {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("BfEnTvRat_Attributes_MPAA").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct BfEnTvRat_Attributes_US_TV(pub i32);
impl windows_core::TypeKind for BfEnTvRat_Attributes_US_TV {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for BfEnTvRat_Attributes_US_TV {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("BfEnTvRat_Attributes_US_TV").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct BfEnTvRat_GenericAttributes(pub i32);
impl windows_core::TypeKind for BfEnTvRat_GenericAttributes {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for BfEnTvRat_GenericAttributes {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("BfEnTvRat_GenericAttributes").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct COPPEventBlockReason(pub i32);
impl windows_core::TypeKind for COPPEventBlockReason {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for COPPEventBlockReason {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("COPPEventBlockReason").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct CPEventBitShift(pub i32);
impl windows_core::TypeKind for CPEventBitShift {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for CPEventBitShift {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("CPEventBitShift").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct CPEvents(pub i32);
impl windows_core::TypeKind for CPEvents {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for CPEvents {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("CPEvents").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct CPRecordingStatus(pub i32);
impl windows_core::TypeKind for CPRecordingStatus {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for CPRecordingStatus {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("CPRecordingStatus").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct CRID_LOCATION(pub i32);
impl windows_core::TypeKind for CRID_LOCATION {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for CRID_LOCATION {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("CRID_LOCATION").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct CROSSBAR_DEFAULT_FLAGS(pub i32);
impl windows_core::TypeKind for CROSSBAR_DEFAULT_FLAGS {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for CROSSBAR_DEFAULT_FLAGS {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("CROSSBAR_DEFAULT_FLAGS").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct ChannelChangeSpanningEvent_State(pub i32);
impl windows_core::TypeKind for ChannelChangeSpanningEvent_State {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for ChannelChangeSpanningEvent_State {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("ChannelChangeSpanningEvent_State").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct ChannelType(pub i32);
impl windows_core::TypeKind for ChannelType {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for ChannelType {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("ChannelType").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct DESC_LINKAGE_TYPE(pub i32);
impl windows_core::TypeKind for DESC_LINKAGE_TYPE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for DESC_LINKAGE_TYPE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("DESC_LINKAGE_TYPE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct DISPID_TUNER(pub i32);
impl windows_core::TypeKind for DISPID_TUNER {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for DISPID_TUNER {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("DISPID_TUNER").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct DVB_STRCONV_MODE(pub i32);
impl windows_core::TypeKind for DVB_STRCONV_MODE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for DVB_STRCONV_MODE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("DVB_STRCONV_MODE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct DVDFilterState(pub i32);
impl windows_core::TypeKind for DVDFilterState {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for DVDFilterState {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("DVDFilterState").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct DVDMenuIDConstants(pub i32);
impl windows_core::TypeKind for DVDMenuIDConstants {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for DVDMenuIDConstants {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("DVDMenuIDConstants").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct DVDSPExt(pub i32);
impl windows_core::TypeKind for DVDSPExt {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for DVDSPExt {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("DVDSPExt").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct DVDTextStringType(pub i32);
impl windows_core::TypeKind for DVDTextStringType {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for DVDTextStringType {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("DVDTextStringType").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct DisplaySizeList(pub i32);
impl windows_core::TypeKind for DisplaySizeList {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for DisplaySizeList {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("DisplaySizeList").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct DownResEventParam(pub i32);
impl windows_core::TypeKind for DownResEventParam {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for DownResEventParam {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("DownResEventParam").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct EnTag_Mode(pub i32);
impl windows_core::TypeKind for EnTag_Mode {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for EnTag_Mode {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("EnTag_Mode").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct EnTvRat_CAE_TV(pub i32);
impl windows_core::TypeKind for EnTvRat_CAE_TV {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for EnTvRat_CAE_TV {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("EnTvRat_CAE_TV").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct EnTvRat_CAF_TV(pub i32);
impl windows_core::TypeKind for EnTvRat_CAF_TV {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for EnTvRat_CAF_TV {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("EnTvRat_CAF_TV").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct EnTvRat_GenericLevel(pub i32);
impl windows_core::TypeKind for EnTvRat_GenericLevel {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for EnTvRat_GenericLevel {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("EnTvRat_GenericLevel").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct EnTvRat_MPAA(pub i32);
impl windows_core::TypeKind for EnTvRat_MPAA {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for EnTvRat_MPAA {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("EnTvRat_MPAA").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct EnTvRat_System(pub i32);
impl windows_core::TypeKind for EnTvRat_System {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for EnTvRat_System {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("EnTvRat_System").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct EnTvRat_US_TV(pub i32);
impl windows_core::TypeKind for EnTvRat_US_TV {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for EnTvRat_US_TV {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("EnTvRat_US_TV").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct EncDecEvents(pub i32);
impl windows_core::TypeKind for EncDecEvents {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for EncDecEvents {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("EncDecEvents").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct FormatNotSupportedEvents(pub i32);
impl windows_core::TypeKind for FormatNotSupportedEvents {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for FormatNotSupportedEvents {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("FormatNotSupportedEvents").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSEVENT_BDA_EVENT_TYPE(pub i32);
impl windows_core::TypeKind for KSEVENT_BDA_EVENT_TYPE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSEVENT_BDA_EVENT_TYPE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSEVENT_BDA_EVENT_TYPE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSEVENT_BDA_TUNER(pub i32);
impl windows_core::TypeKind for KSEVENT_BDA_TUNER {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSEVENT_BDA_TUNER {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSEVENT_BDA_TUNER").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_CAS_SERVICE(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_CAS_SERVICE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_CAS_SERVICE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_CAS_SERVICE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_CHANGE_SYNC(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_CHANGE_SYNC {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_CHANGE_SYNC {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_CHANGE_SYNC").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_DEBUG_SERVICE(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_DEBUG_SERVICE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_DEBUG_SERVICE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_DEBUG_SERVICE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_DEVICE_CONFIGURATION(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_DEVICE_CONFIGURATION {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_DEVICE_CONFIGURATION {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_DEVICE_CONFIGURATION").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_DRM(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_DRM {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_DRM {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_DRM").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_EVENTING_SERVICE(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_EVENTING_SERVICE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_EVENTING_SERVICE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_EVENTING_SERVICE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_GDDS_SERVICE(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_GDDS_SERVICE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_GDDS_SERVICE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_GDDS_SERVICE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_GPNV_SERVICE(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_GPNV_SERVICE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_GPNV_SERVICE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_GPNV_SERVICE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_ISDB_CAS(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_ISDB_CAS {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_ISDB_CAS {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_ISDB_CAS").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_MUX_SERVICE(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_MUX_SERVICE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_MUX_SERVICE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_MUX_SERVICE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_SCAN_SERVICE(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_SCAN_SERVICE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_SCAN_SERVICE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_SCAN_SERVICE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_TS_SELECTOR(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_TS_SELECTOR {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_TS_SELECTOR {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_TS_SELECTOR").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_TUNER_SERVICE(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_TUNER_SERVICE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_TUNER_SERVICE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_TUNER_SERVICE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_USERACTIVITY_SERVICE(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_USERACTIVITY_SERVICE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_USERACTIVITY_SERVICE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_USERACTIVITY_SERVICE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_WMDRM(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_WMDRM {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_WMDRM {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_WMDRM").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSMETHOD_BDA_WMDRM_TUNER(pub i32);
impl windows_core::TypeKind for KSMETHOD_BDA_WMDRM_TUNER {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSMETHOD_BDA_WMDRM_TUNER {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSMETHOD_BDA_WMDRM_TUNER").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_AUTODEMODULATE(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_AUTODEMODULATE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_AUTODEMODULATE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_AUTODEMODULATE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_CA(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_CA {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_CA {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_CA").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_CA_EVENT(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_CA_EVENT {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_CA_EVENT {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_CA_EVENT").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_DIGITAL_DEMODULATOR(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_DIGITAL_DEMODULATOR {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_DIGITAL_DEMODULATOR {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_DIGITAL_DEMODULATOR").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_DISEQC_COMMAND(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_DISEQC_COMMAND {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_DISEQC_COMMAND {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_DISEQC_COMMAND").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_DISEQC_EVENT(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_DISEQC_EVENT {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_DISEQC_EVENT {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_DISEQC_EVENT").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_ETHERNET_FILTER(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_ETHERNET_FILTER {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_ETHERNET_FILTER {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_ETHERNET_FILTER").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_FREQUENCY_FILTER(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_FREQUENCY_FILTER {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_FREQUENCY_FILTER {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_FREQUENCY_FILTER").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_IPv4_FILTER(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_IPv4_FILTER {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_IPv4_FILTER {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_IPv4_FILTER").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_IPv6_FILTER(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_IPv6_FILTER {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_IPv6_FILTER {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_IPv6_FILTER").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_LNB_INFO(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_LNB_INFO {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_LNB_INFO {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_LNB_INFO").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_NULL_TRANSFORM(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_NULL_TRANSFORM {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_NULL_TRANSFORM {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_NULL_TRANSFORM").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_PIDFILTER(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_PIDFILTER {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_PIDFILTER {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_PIDFILTER").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_PIN_CONTROL(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_PIN_CONTROL {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_PIN_CONTROL {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_PIN_CONTROL").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_PIN_EVENT(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_PIN_EVENT {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_PIN_EVENT {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_PIN_EVENT").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_SIGNAL_STATS(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_SIGNAL_STATS {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_SIGNAL_STATS {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_SIGNAL_STATS").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_TOPOLOGY(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_TOPOLOGY {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_TOPOLOGY {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_TOPOLOGY").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_BDA_VOID_TRANSFORM(pub i32);
impl windows_core::TypeKind for KSPROPERTY_BDA_VOID_TRANSFORM {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_BDA_VOID_TRANSFORM {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_BDA_VOID_TRANSFORM").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct KSPROPERTY_IDS_BDA_TABLE(pub i32);
impl windows_core::TypeKind for KSPROPERTY_IDS_BDA_TABLE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for KSPROPERTY_IDS_BDA_TABLE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("KSPROPERTY_IDS_BDA_TABLE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct LicenseEventBlockReason(pub i32);
impl windows_core::TypeKind for LicenseEventBlockReason {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for LicenseEventBlockReason {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("LicenseEventBlockReason").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct MPEG_CONTEXT_TYPE(pub i32);
impl windows_core::TypeKind for MPEG_CONTEXT_TYPE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for MPEG_CONTEXT_TYPE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("MPEG_CONTEXT_TYPE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct MPEG_CURRENT_NEXT_BIT(pub i32);
impl windows_core::TypeKind for MPEG_CURRENT_NEXT_BIT {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for MPEG_CURRENT_NEXT_BIT {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("MPEG_CURRENT_NEXT_BIT").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct MPEG_REQUEST_TYPE(pub i32);
impl windows_core::TypeKind for MPEG_REQUEST_TYPE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for MPEG_REQUEST_TYPE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("MPEG_REQUEST_TYPE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct MSVidCCService(pub i32);
impl MSVidCCService {
    pub const None: Self = Self(0i32);
    pub const Caption1: Self = Self(1i32);
    pub const Caption2: Self = Self(2i32);
    pub const Text1: Self = Self(3i32);
    pub const Text2: Self = Self(4i32);
    pub const XDS: Self = Self(5i32);
}
impl windows_core::TypeKind for MSVidCCService {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for MSVidCCService {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("MSVidCCService").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct MSVidCtlButtonstate(pub i32);
impl windows_core::TypeKind for MSVidCtlButtonstate {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for MSVidCtlButtonstate {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("MSVidCtlButtonstate").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct MSVidCtlStateList(pub i32);
impl windows_core::TypeKind for MSVidCtlStateList {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for MSVidCtlStateList {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("MSVidCtlStateList").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct MSVidSegmentType(pub i32);
impl windows_core::TypeKind for MSVidSegmentType {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for MSVidSegmentType {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("MSVidSegmentType").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct MSVidSinkStreams(pub i32);
impl windows_core::TypeKind for MSVidSinkStreams {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for MSVidSinkStreams {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("MSVidSinkStreams").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct MSViddispidList(pub i32);
impl windows_core::TypeKind for MSViddispidList {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for MSViddispidList {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("MSViddispidList").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct PositionModeList(pub i32);
impl windows_core::TypeKind for PositionModeList {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for PositionModeList {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("PositionModeList").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct ProtType(pub i32);
impl windows_core::TypeKind for ProtType {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for ProtType {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("ProtType").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct RECORDING_TYPE(pub i32);
impl windows_core::TypeKind for RECORDING_TYPE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for RECORDING_TYPE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("RECORDING_TYPE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct RecordingType(pub i32);
impl windows_core::TypeKind for RecordingType {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for RecordingType {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("RecordingType").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct RevokedComponent(pub i32);
impl windows_core::TypeKind for RevokedComponent {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for RevokedComponent {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("RevokedComponent").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct STREAMBUFFER_ATTR_DATATYPE(pub i32);
impl windows_core::TypeKind for STREAMBUFFER_ATTR_DATATYPE {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for STREAMBUFFER_ATTR_DATATYPE {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("STREAMBUFFER_ATTR_DATATYPE").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct SegDispidList(pub i32);
impl windows_core::TypeKind for SegDispidList {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for SegDispidList {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("SegDispidList").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct SegEventidList(pub i32);
impl windows_core::TypeKind for SegEventidList {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for SegEventidList {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("SegEventidList").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct SignalAndServiceStatusSpanningEvent_State(pub i32);
impl windows_core::TypeKind for SignalAndServiceStatusSpanningEvent_State {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for SignalAndServiceStatusSpanningEvent_State {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("SignalAndServiceStatusSpanningEvent_State").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct SourceSizeList(pub i32);
impl windows_core::TypeKind for SourceSizeList {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for SourceSizeList {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("SourceSizeList").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct VA_COLOR_PRIMARIES(pub i32);
impl windows_core::TypeKind for VA_COLOR_PRIMARIES {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for VA_COLOR_PRIMARIES {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("VA_COLOR_PRIMARIES").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct VA_MATRIX_COEFFICIENTS(pub i32);
impl windows_core::TypeKind for VA_MATRIX_COEFFICIENTS {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for VA_MATRIX_COEFFICIENTS {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("VA_MATRIX_COEFFICIENTS").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct VA_TRANSFER_CHARACTERISTICS(pub i32);
impl windows_core::TypeKind for VA_TRANSFER_CHARACTERISTICS {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for VA_TRANSFER_CHARACTERISTICS {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("VA_TRANSFER_CHARACTERISTICS").field(&self.0).finish()
    }
}
#[repr(transparent)]
#[derive(PartialEq, Eq, Copy, Clone, Default)]
pub struct VA_VIDEO_FORMAT(pub i32);
impl windows_core::TypeKind for VA_VIDEO_FORMAT {
    type TypeKind = windows_core::CopyType;
}
impl core::fmt::Debug for VA_VIDEO_FORMAT {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        f.debug_tuple("VA_VIDEO_FORMAT").field(&self.0).finish()
    }
}
pub const ANALOG_AUXIN_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0x742ef867_09e1_40a3_82d3_9669ba35325f);
pub const ANALOG_FM_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0x7728087b_2bb9_4e30_8078_449476e59dbb);
pub const ANALOG_TV_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0xb820d87e_e0e3_478f_8a38_4e13f7b3df42);
pub const ATSCChannelTuneRequest: windows_core::GUID = windows_core::GUID::from_u128(0x0369b4e6_45b6_11d3_b650_00c04f79498e);
pub const ATSCComponentType: windows_core::GUID = windows_core::GUID::from_u128(0xa8dcf3d5_0780_4ef4_8a83_2cffaacb8ace);
pub const ATSCLocator: windows_core::GUID = windows_core::GUID::from_u128(0x8872ff1b_98fa_4d7a_8d93_c9f1055f85bb);
pub const ATSCTuningSpace: windows_core::GUID = windows_core::GUID::from_u128(0xa2e30750_6c3d_11d3_b653_00c04f79498e);
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct ATSC_FILTER_OPTIONS {
    pub fSpecifyEtmId: super::super::super::Foundation::BOOL,
    pub EtmId: u32,
}
impl windows_core::TypeKind for ATSC_FILTER_OPTIONS {
    type TypeKind = windows_core::CopyType;
}
impl Default for ATSC_FILTER_OPTIONS {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const ATSC_TERRESTRIAL_TV_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0x0dad2fdd_5fd7_11d3_8f50_00c04f7971e2);
pub const AnalogAudioComponentType: windows_core::GUID = windows_core::GUID::from_u128(0x28ab0005_e845_4ffa_aa9b_f4665236141c);
pub const AnalogLocator: windows_core::GUID = windows_core::GUID::from_u128(0x49638b91_48ab_48b7_a47a_7d0e75a08ede);
pub const AnalogRadioTuningSpace: windows_core::GUID = windows_core::GUID::from_u128(0x8a674b4c_1f63_11d3_b64c_00c04f79498e);
pub const AnalogTVTuningSpace: windows_core::GUID = windows_core::GUID::from_u128(0x8a674b4d_1f63_11d3_b64c_00c04f79498e);
pub const AuxInTuningSpace: windows_core::GUID = windows_core::GUID::from_u128(0xf9769a06_7aca_4e39_9cfb_97bb35f0e77e);
pub const BDANETWORKTYPE_ATSC: windows_core::GUID = windows_core::GUID::from_u128(0x71985f51_1ca1_11d3_9cc8_00c04f7971e0);
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct BDA_DEBUG_DATA {
    pub lResult: i32,
    pub uuidDebugDataType: windows_core::GUID,
    pub ulDataSize: u32,
    pub argbDebugData: [u8; 1],
}
impl windows_core::TypeKind for BDA_DEBUG_DATA {
    type TypeKind = windows_core::CopyType;
}
impl Default for BDA_DEBUG_DATA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const BDA_DEBUG_DATA_AVAILABLE: windows_core::GUID = windows_core::GUID::from_u128(0x69c24f54_9983_497e_b415_282be4c555fb);
pub const BDA_DEBUG_DATA_TYPE_STRING: windows_core::GUID = windows_core::GUID::from_u128(0xa806e767_de5c_430c_80bf_a21ebe06c748);
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct BDA_EVENT_DATA {
    pub lResult: i32,
    pub ulEventID: u32,
    pub uuidEventType: windows_core::GUID,
    pub ulEventDataLength: u32,
    pub argbEventData: [u8; 1],
}
impl windows_core::TypeKind for BDA_EVENT_DATA {
    type TypeKind = windows_core::CopyType;
}
impl Default for BDA_EVENT_DATA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct BDA_TRANSPORT_INFO {
    pub ulcbPhyiscalPacket: u32,
    pub ulcbPhyiscalFrame: u32,
    pub ulcbPhyiscalFrameAlignment: u32,
    pub AvgTimePerFrame: i64,
}
impl windows_core::TypeKind for BDA_TRANSPORT_INFO {
    type TypeKind = windows_core::CopyType;
}
impl Default for BDA_TRANSPORT_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const BSKYB_TERRESTRIAL_TV_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0x9e9e46c6_3aba_4f08_ad0e_cc5ac8148c2b);
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct BadSampleInfo {
    pub hrReason: windows_core::HRESULT,
}
impl windows_core::TypeKind for BadSampleInfo {
    type TypeKind = windows_core::CopyType;
}
impl Default for BadSampleInfo {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const BroadcastEventService: windows_core::GUID = windows_core::GUID::from_u128(0x0b3ffb92_0919_4934_9d5b_619c719d0202);
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct CAPTURE_STREAMTIME {
    pub StreamTime: i64,
}
impl windows_core::TypeKind for CAPTURE_STREAMTIME {
    type TypeKind = windows_core::CopyType;
}
impl Default for CAPTURE_STREAMTIME {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const CXDSData: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4f4_0049_4e2b_98fb_9537f6ce516d);
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct ChannelChangeInfo {
    pub state: ChannelChangeSpanningEvent_State,
    pub TimeStamp: u64,
}
impl windows_core::TypeKind for ChannelChangeInfo {
    type TypeKind = windows_core::CopyType;
}
impl Default for ChannelChangeInfo {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const ChannelIDTuneRequest: windows_core::GUID = windows_core::GUID::from_u128(0x3a9428a7_31a4_45e9_9efb_e055bf7bb3db);
pub const ChannelIDTuningSpace: windows_core::GUID = windows_core::GUID::from_u128(0xcc829a2f_3365_463f_af13_81dbb6f3a555);
#[repr(C)]
#[derive(Clone, Copy)]
pub struct ChannelInfo {
    pub lFrequency: i32,
    pub Anonymous: ChannelInfo_0,
}
impl windows_core::TypeKind for ChannelInfo {
    type TypeKind = windows_core::CopyType;
}
impl Default for ChannelInfo {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
pub union ChannelInfo_0 {
    pub DVB: ChannelInfo_0_2,
    pub DC: ChannelInfo_0_1,
    pub ATSC: ChannelInfo_0_0,
}
impl windows_core::TypeKind for ChannelInfo_0 {
    type TypeKind = windows_core::CopyType;
}
impl Default for ChannelInfo_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct ChannelInfo_0_0 {
    pub lProgNumber: i32,
}
impl windows_core::TypeKind for ChannelInfo_0_0 {
    type TypeKind = windows_core::CopyType;
}
impl Default for ChannelInfo_0_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct ChannelInfo_0_1 {
    pub lProgNumber: i32,
}
impl windows_core::TypeKind for ChannelInfo_0_1 {
    type TypeKind = windows_core::CopyType;
}
impl Default for ChannelInfo_0_1 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct ChannelInfo_0_2 {
    pub lONID: i32,
    pub lTSID: i32,
    pub lSID: i32,
}
impl windows_core::TypeKind for ChannelInfo_0_2 {
    type TypeKind = windows_core::CopyType;
}
impl Default for ChannelInfo_0_2 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const ChannelTuneRequest: windows_core::GUID = windows_core::GUID::from_u128(0x0369b4e5_45b6_11d3_b650_00c04f79498e);
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct ChannelTypeInfo {
    pub channelType: ChannelType,
    pub timeStamp: u64,
}
impl windows_core::TypeKind for ChannelTypeInfo {
    type TypeKind = windows_core::CopyType;
}
impl Default for ChannelTypeInfo {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const Component: windows_core::GUID = windows_core::GUID::from_u128(0x59dc47a8_116c_11d3_9d8e_00c04f72d980);
pub const ComponentType: windows_core::GUID = windows_core::GUID::from_u128(0x823535a0_0318_11d3_9d8e_00c04f72d980);
pub const ComponentTypes: windows_core::GUID = windows_core::GUID::from_u128(0xa1a2b1c4_0e3a_11d3_9d8e_00c04f72d980);
pub const Components: windows_core::GUID = windows_core::GUID::from_u128(0x809b6661_94c4_49e6_b6ec_3f0f862215aa);
pub const CreatePropBagOnRegKey: windows_core::GUID = windows_core::GUID::from_u128(0x8a674b49_1f63_11d3_b64c_00c04f79498e);
pub const DIGITAL_CABLE_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0x143827ab_f77b_498d_81ca_5a007aec28bf);
pub const DIRECT_TV_SATELLITE_TV_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0x93b66fb5_93d4_4323_921c_c1f52df61d3f);
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct DSHOW_STREAM_DESC {
    pub VersionNo: u32,
    pub StreamId: u32,
    pub Default: super::super::super::Foundation::BOOL,
    pub Creation: super::super::super::Foundation::BOOL,
    pub Reserved: u32,
}
impl windows_core::TypeKind for DSHOW_STREAM_DESC {
    type TypeKind = windows_core::CopyType;
}
impl Default for DSHOW_STREAM_DESC {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct DSMCC_ELEMENT {
    pub pid: u16,
    pub bComponentTag: u8,
    pub dwCarouselId: u32,
    pub dwTransactionId: u32,
    pub pNext: *mut DSMCC_ELEMENT,
}
impl windows_core::TypeKind for DSMCC_ELEMENT {
    type TypeKind = windows_core::CopyType;
}
impl Default for DSMCC_ELEMENT {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct DSMCC_FILTER_OPTIONS {
    pub fSpecifyProtocol: super::super::super::Foundation::BOOL,
    pub Protocol: u8,
    pub fSpecifyType: super::super::super::Foundation::BOOL,
    pub Type: u8,
    pub fSpecifyMessageId: super::super::super::Foundation::BOOL,
    pub MessageId: u16,
    pub fSpecifyTransactionId: super::super::super::Foundation::BOOL,
    pub fUseTrxIdMessageIdMask: super::super::super::Foundation::BOOL,
    pub TransactionId: u32,
    pub fSpecifyModuleVersion: super::super::super::Foundation::BOOL,
    pub ModuleVersion: u8,
    pub fSpecifyBlockNumber: super::super::super::Foundation::BOOL,
    pub BlockNumber: u16,
    pub fGetModuleCall: super::super::super::Foundation::BOOL,
    pub NumberOfBlocksInModule: u16,
}
impl windows_core::TypeKind for DSMCC_FILTER_OPTIONS {
    type TypeKind = windows_core::CopyType;
}
impl Default for DSMCC_FILTER_OPTIONS {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct DSMCC_SECTION {
    pub TableId: u8,
    pub Header: DSMCC_SECTION_0,
    pub TableIdExtension: u16,
    pub Version: DSMCC_SECTION_1,
    pub SectionNumber: u8,
    pub LastSectionNumber: u8,
    pub ProtocolDiscriminator: u8,
    pub DsmccType: u8,
    pub MessageId: u16,
    pub TransactionId: u32,
    pub Reserved: u8,
    pub AdaptationLength: u8,
    pub MessageLength: u16,
    pub RemainingData: [u8; 1],
}
impl windows_core::TypeKind for DSMCC_SECTION {
    type TypeKind = windows_core::CopyType;
}
impl Default for DSMCC_SECTION {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub union DSMCC_SECTION_0 {
    pub S: MPEG_HEADER_BITS_MIDL,
    pub W: u16,
}
impl windows_core::TypeKind for DSMCC_SECTION_0 {
    type TypeKind = windows_core::CopyType;
}
impl Default for DSMCC_SECTION_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
pub union DSMCC_SECTION_1 {
    pub S: MPEG_HEADER_VERSION_BITS_MIDL,
    pub B: u8,
}
impl windows_core::TypeKind for DSMCC_SECTION_1 {
    type TypeKind = windows_core::CopyType;
}
impl Default for DSMCC_SECTION_1 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DTFilter: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4f2_0049_4e2b_98fb_9537f6ce516d);
pub const DVBCLocator: windows_core::GUID = windows_core::GUID::from_u128(0xc531d9fd_9685_4028_8b68_6e1232079f1e);
pub const DVBSLocator: windows_core::GUID = windows_core::GUID::from_u128(0x1df7d126_4050_47f0_a7cf_4c4ca9241333);
pub const DVBSTuningSpace: windows_core::GUID = windows_core::GUID::from_u128(0xb64016f3_c9a2_4066_96f0_bd9563314726);
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct DVBScramblingControlSpanningEvent {
    pub ulPID: u32,
    pub fScrambled: super::super::super::Foundation::BOOL,
}
impl windows_core::TypeKind for DVBScramblingControlSpanningEvent {
    type TypeKind = windows_core::CopyType;
}
impl Default for DVBScramblingControlSpanningEvent {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DVBTLocator: windows_core::GUID = windows_core::GUID::from_u128(0x9cd64701_bdf3_4d14_8e03_f12983d86664);
pub const DVBTLocator2: windows_core::GUID = windows_core::GUID::from_u128(0xefe3fa02_45d7_4920_be96_53fa7f35b0e6);
pub const DVBTuneRequest: windows_core::GUID = windows_core::GUID::from_u128(0x15d6504a_5494_499c_886c_973c9e53b9f1);
pub const DVBTuningSpace: windows_core::GUID = windows_core::GUID::from_u128(0xc6b14b32_76aa_4a86_a7ac_5c79aaf58da7);
pub const DVB_CABLE_TV_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0xdc0c0fe7_0485_4266_b93f_68fbf80ed834);
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct DVB_EIT_FILTER_OPTIONS {
    pub fSpecifySegment: super::super::super::Foundation::BOOL,
    pub bSegment: u8,
}
impl windows_core::TypeKind for DVB_EIT_FILTER_OPTIONS {
    type TypeKind = windows_core::CopyType;
}
impl Default for DVB_EIT_FILTER_OPTIONS {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DVB_SATELLITE_TV_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0xfa4b375a_45b4_4d45_8440_263957b11623);
pub const DVB_TERRESTRIAL_TV_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0x216c62df_6d7f_4e9a_8571_05f14edb766a);
#[repr(C)]
#[cfg(feature = "Win32_Media_MediaFoundation")]
#[derive(Debug, Eq, PartialEq)]
pub struct DVR_STREAM_DESC {
    pub Version: u32,
    pub StreamId: u32,
    pub Default: super::super::super::Foundation::BOOL,
    pub Creation: super::super::super::Foundation::BOOL,
    pub Reserved: u32,
    pub guidSubMediaType: windows_core::GUID,
    pub guidFormatType: windows_core::GUID,
    pub MediaType: super::super::MediaFoundation::AM_MEDIA_TYPE,
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl Clone for DVR_STREAM_DESC {
    fn clone(&self) -> Self {
        unsafe { core::mem::transmute_copy(self) }
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::TypeKind for DVR_STREAM_DESC {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl Default for DVR_STREAM_DESC {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DigitalCableLocator: windows_core::GUID = windows_core::GUID::from_u128(0x03c06416_d127_407a_ab4c_fdd279abbe5d);
pub const DigitalCableTuneRequest: windows_core::GUID = windows_core::GUID::from_u128(0x26ec0b63_aa90_458a_8df4_5659f2c8a18a);
pub const DigitalCableTuningSpace: windows_core::GUID = windows_core::GUID::from_u128(0xd9bb4cee_b87a_47f1_ac92_b08d9c7813fc);
pub const DigitalLocator: windows_core::GUID = windows_core::GUID::from_u128(0x6e50cc0d_c19b_4bf6_810b_5bd60761f5cc);
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct DualMonoInfo {
    pub LangID1: u16,
    pub LangID2: u16,
    pub lISOLangCode1: i32,
    pub lISOLangCode2: i32,
}
impl windows_core::TypeKind for DualMonoInfo {
    type TypeKind = windows_core::CopyType;
}
impl Default for DualMonoInfo {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct DvbParentalRatingDescriptor {
    pub ulNumParams: u32,
    pub pParams: [DvbParentalRatingParam; 1],
}
impl windows_core::TypeKind for DvbParentalRatingDescriptor {
    type TypeKind = windows_core::CopyType;
}
impl Default for DvbParentalRatingDescriptor {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct DvbParentalRatingParam {
    pub szCountryCode: [i8; 4],
    pub bRating: u8,
}
impl windows_core::TypeKind for DvbParentalRatingParam {
    type TypeKind = windows_core::CopyType;
}
impl Default for DvbParentalRatingParam {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const ECHOSTAR_SATELLITE_TV_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0xc4f6b31b_c6bf_4759_886f_a7386dca27a0);
pub const ESEventFactory: windows_core::GUID = windows_core::GUID::from_u128(0x8e8a07da_71f8_40c1_a929_5e3a868ac2c6);
pub const ESEventService: windows_core::GUID = windows_core::GUID::from_u128(0xc20447fc_ec60_475e_813f_d2b0a6decefe);
pub const ETFilter: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4f1_0049_4e2b_98fb_9537f6ce516d);
pub const EVENTID_ARIBcontentSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x3a954083_93d0_463e_90b2_0742c496edf0);
pub const EVENTID_AudioDescriptorSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x107bd41c_a6da_4691_8369_11b2cdaa288e);
pub const EVENTID_AudioTypeSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x501cbfbe_b849_42ce_9be9_3db869fb82b3);
pub const EVENTID_BDAConditionalAccessTAG: windows_core::GUID = windows_core::GUID::from_u128(0xefc3a459_ae8b_4b4a_8fe9_79a0d097f3ea);
pub const EVENTID_BDAEventingServicePendingEvent: windows_core::GUID = windows_core::GUID::from_u128(0x5ca51711_5ddc_41a6_9430_e41b8b3bbc5b);
pub const EVENTID_BDA_CASBroadcastMMI: windows_core::GUID = windows_core::GUID::from_u128(0x676876f0_1132_404c_a7ca_e72069a9d54f);
pub const EVENTID_BDA_CASCloseMMI: windows_core::GUID = windows_core::GUID::from_u128(0x5d0f550f_de2e_479d_8345_ec0e9557e8a2);
pub const EVENTID_BDA_CASOpenMMI: windows_core::GUID = windows_core::GUID::from_u128(0x85dac915_e593_410d_8471_d6812105f28e);
pub const EVENTID_BDA_CASReleaseTuner: windows_core::GUID = windows_core::GUID::from_u128(0x20c1a16b_441f_49a5_bb5c_e9a04495c6c1);
pub const EVENTID_BDA_CASRequestTuner: windows_core::GUID = windows_core::GUID::from_u128(0xcf39a9d8_f5d3_4685_be57_ed81dba46b27);
pub const EVENTID_BDA_DiseqCResponseAvailable: windows_core::GUID = windows_core::GUID::from_u128(0xefa628f8_1f2c_4b67_9ea5_acf6fa9a1f36);
pub const EVENTID_BDA_EncoderSignalLock: windows_core::GUID = windows_core::GUID::from_u128(0x5ec90eb9_39fa_4cfc_b93f_00bb11077f5e);
pub const EVENTID_BDA_FdcStatus: windows_core::GUID = windows_core::GUID::from_u128(0x05f25366_d0eb_43d2_bc3c_682b863df142);
pub const EVENTID_BDA_FdcTableSection: windows_core::GUID = windows_core::GUID::from_u128(0x6a0cd757_4ce3_4e5b_9444_7187b87152c5);
pub const EVENTID_BDA_GPNVValueUpdate: windows_core::GUID = windows_core::GUID::from_u128(0xff75c68c_f416_4e7e_bf17_6d55c5df1575);
pub const EVENTID_BDA_GuideDataAvailable: windows_core::GUID = windows_core::GUID::from_u128(0x98db717a_478a_4cd4_92d0_95f66b89e5b1);
pub const EVENTID_BDA_GuideDataError: windows_core::GUID = windows_core::GUID::from_u128(0xac33c448_6f73_4fd7_b341_594c360d8d74);
pub const EVENTID_BDA_GuideServiceInformationUpdated: windows_core::GUID = windows_core::GUID::from_u128(0xa1c3ea2b_175f_4458_b735_507d22db23a6);
pub const EVENTID_BDA_IsdbCASResponse: windows_core::GUID = windows_core::GUID::from_u128(0xd4cb1966_41bc_4ced_9a20_fdceac78f70d);
pub const EVENTID_BDA_LbigsCloseConnectionHandle: windows_core::GUID = windows_core::GUID::from_u128(0xc2f08b99_65ef_4314_9671_e99d4cce0bae);
pub const EVENTID_BDA_LbigsOpenConnection: windows_core::GUID = windows_core::GUID::from_u128(0x356207b2_6f31_4eb0_a271_b3fa6bb7680f);
pub const EVENTID_BDA_LbigsSendData: windows_core::GUID = windows_core::GUID::from_u128(0x1123277b_f1c6_4154_8b0d_48e6157059aa);
pub const EVENTID_BDA_RatingPinReset: windows_core::GUID = windows_core::GUID::from_u128(0xc6e048c0_c574_4c26_bcda_2f4d35eb5e85);
pub const EVENTID_BDA_TransprtStreamSelectorInfo: windows_core::GUID = windows_core::GUID::from_u128(0xc40f9f85_09d0_489c_9e9c_0abbb56951b0);
pub const EVENTID_BDA_TunerNoSignal: windows_core::GUID = windows_core::GUID::from_u128(0xe29b382b_1edd_4930_bc46_682fd72d2dfb);
pub const EVENTID_BDA_TunerSignalLock: windows_core::GUID = windows_core::GUID::from_u128(0x1872e740_f573_429b_a00e_d9c1e408af09);
pub const EVENTID_BDA_UpdateDrmStatus: windows_core::GUID = windows_core::GUID::from_u128(0x65a6f681_1462_473b_88ce_cb731427bdb5);
pub const EVENTID_BDA_UpdateScanState: windows_core::GUID = windows_core::GUID::from_u128(0x55702b50_7b49_42b8_a82f_4afb691b0628);
pub const EVENTID_CADenialCountChanged: windows_core::GUID = windows_core::GUID::from_u128(0x2a65c528_2249_4070_ac16_00390cdfb2dd);
pub const EVENTID_CASFailureSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0xead831ae_5529_4d1f_afce_0d8cd1257d30);
pub const EVENTID_CSDescriptorSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0xefe779d9_97f0_4786_800d_95cf505ddc66);
pub const EVENTID_CandidatePostTuneData: windows_core::GUID = windows_core::GUID::from_u128(0x9f02d3d0_9f06_4369_9f1e_3ad6ca19807e);
pub const EVENTID_CardStatusChanged: windows_core::GUID = windows_core::GUID::from_u128(0xa265faea_f874_4b38_9ff7_c53d02969996);
pub const EVENTID_ChannelChangeSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x9067c5e5_4c5c_4205_86c8_7afe20fe1efa);
pub const EVENTID_ChannelInfoSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x41f36d80_4132_4cc2_b121_01a43219d81b);
pub const EVENTID_ChannelTypeSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x72ab1d51_87d2_489b_ba11_0e08dc210243);
pub const EVENTID_CtxADescriptorSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x3ab4a2e6_4247_4b34_896c_30afa5d21c24);
pub const EVENTID_DFNWithNoActualAVData: windows_core::GUID = windows_core::GUID::from_u128(0xf5689ffe_55f9_4bb3_96be_ae971c63bae0);
pub const EVENTID_DRMParingStatusChanged: windows_core::GUID = windows_core::GUID::from_u128(0x000906f5_f0d1_41d6_a7df_4028697669f6);
pub const EVENTID_DRMParingStepComplete: windows_core::GUID = windows_core::GUID::from_u128(0x5b2ebf78_b752_4420_b41e_a472dc95828e);
pub const EVENTID_DVBScramblingControlSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x4bd4e1c4_90a1_4109_8236_27f00e7dcc5b);
pub const EVENTID_DualMonoSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0xa9a29b56_a84b_488c_89d5_0d4e7657c8ce);
pub const EVENTID_DvbParentalRatingDescriptor: windows_core::GUID = windows_core::GUID::from_u128(0x2a67a58d_eca5_4eac_abcb_e734d3776d0a);
pub const EVENTID_EASMessageReceived: windows_core::GUID = windows_core::GUID::from_u128(0xd10df9d5_c261_4b85_9e8a_517b3299cab2);
pub const EVENTID_EmmMessageSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x6bf00268_4f7e_4294_aa87_e9e953e43f14);
pub const EVENTID_EntitlementChanged: windows_core::GUID = windows_core::GUID::from_u128(0x9071ad5d_2359_4c95_8694_afa81d70bfd5);
pub const EVENTID_LanguageSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0xe292666d_9c02_448d_aa8d_781a93fdc395);
pub const EVENTID_MMIMessage: windows_core::GUID = windows_core::GUID::from_u128(0x052c29af_09a4_4b93_890f_bd6a348968a4);
pub const EVENTID_NewSignalAcquired: windows_core::GUID = windows_core::GUID::from_u128(0xc87ec52d_cd18_404a_a076_c02a273d3de7);
pub const EVENTID_PBDAParentalControlEvent: windows_core::GUID = windows_core::GUID::from_u128(0xf947aa85_fb52_48e8_b9c5_e1e1f411a51a);
pub const EVENTID_PIDListSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x47fc8f65_e2bb_4634_9cef_fdbfe6261d5c);
pub const EVENTID_PSITable: windows_core::GUID = windows_core::GUID::from_u128(0x1b9c3703_d447_4e16_97bb_01799fc031ed);
pub const EVENTID_RRTSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0xf6cfc8f4_da93_4f2f_bff8_ba1ee6fca3a2);
pub const EVENTID_STBChannelNumber: windows_core::GUID = windows_core::GUID::from_u128(0x17c4d730_d0f0_413a_8c99_500469de35ad);
pub const EVENTID_ServiceTerminated: windows_core::GUID = windows_core::GUID::from_u128(0x0a1d591c_e0d2_4f8e_8960_2335bef45ccb);
pub const EVENTID_SignalAndServiceStatusSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x8068c5cb_3c04_492b_b47d_0308820dce51);
pub const EVENTID_SignalStatusChanged: windows_core::GUID = windows_core::GUID::from_u128(0x6d9cfaf2_702d_4b01_8dff_6892ad20d191);
pub const EVENTID_StreamIDSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0xcaf1ab68_e153_4d41_a6b3_a7c998db75ee);
pub const EVENTID_StreamTypeSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x82af2ebc_30a6_4264_a80b_ad2e1372ac60);
pub const EVENTID_SubtitleSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x5dcec048_d0b9_4163_872c_4f32223be88a);
pub const EVENTID_TeletextSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x9599d950_5f33_4617_af7c_1e54b510daa3);
pub const EVENTID_TuneFailureEvent: windows_core::GUID = windows_core::GUID::from_u128(0xd97287b2_2dfd_436a_9485_99d7d4ab5a69);
pub const EVENTID_TuneFailureSpanningEvent: windows_core::GUID = windows_core::GUID::from_u128(0x6f8aa455_5ee1_48ab_a27c_4c8d70b9aeba);
pub const EVENTID_TuningChanged: windows_core::GUID = windows_core::GUID::from_u128(0x9d7e6235_4b7d_425d_a6d1_d717c33b9c4c);
pub const EVENTID_TuningChanging: windows_core::GUID = windows_core::GUID::from_u128(0x83183c03_c09e_45c4_a719_807a94952bf9);
pub const EVENTTYPE_CASDescrambleFailureEvent: windows_core::GUID = windows_core::GUID::from_u128(0xb2127d42_7be5_4f4b_9130_6679899f4f4b);
pub const EvalRat: windows_core::GUID = windows_core::GUID::from_u128(0xc5c5c5f1_3abc_11d6_b25b_00c04fa0c026);
pub const ISDBSLocator: windows_core::GUID = windows_core::GUID::from_u128(0x6504afed_a629_455c_a7f1_04964dea5cc4);
pub const ISDB_CABLE_TV_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0xc974ddb5_41fe_4b25_9741_92f049f1d5d1);
pub const ISDB_SATELLITE_TV_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0xb0a4e6a0_6a1a_4b83_bb5b_903e1d90e6b6);
pub const ISDB_S_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0xa1e78202_1459_41b1_9ca9_2a92587a42cc);
pub const ISDB_TERRESTRIAL_TV_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0x95037f6f_3ac7_4452_b6c4_45a9ce9292a2);
pub const ISDB_T_NETWORK_TYPE: windows_core::GUID = windows_core::GUID::from_u128(0xfc3855a6_c901_4f2e_aba8_90815afc6c83);
pub const KSCATEGORY_BDA_IP_SINK: windows_core::GUID = windows_core::GUID::from_u128(0x71985f4a_1ca1_11d3_9cc8_00c04f7971e0);
pub const KSCATEGORY_BDA_NETWORK_EPG: windows_core::GUID = windows_core::GUID::from_u128(0x71985f49_1ca1_11d3_9cc8_00c04f7971e0);
pub const KSCATEGORY_BDA_NETWORK_PROVIDER: windows_core::GUID = windows_core::GUID::from_u128(0x71985f4b_1ca1_11d3_9cc8_00c04f7971e0);
pub const KSCATEGORY_BDA_NETWORK_TUNER: windows_core::GUID = windows_core::GUID::from_u128(0x71985f48_1ca1_11d3_9cc8_00c04f7971e0);
pub const KSCATEGORY_BDA_RECEIVER_COMPONENT: windows_core::GUID = windows_core::GUID::from_u128(0xfd0a5af4_b41d_11d2_9c95_00c04f7971e0);
pub const KSCATEGORY_BDA_TRANSPORT_INFORMATION: windows_core::GUID = windows_core::GUID::from_u128(0xa2e3074f_6c3d_11d3_b653_00c04f79498e);
pub const KSDATAFORMAT_SPECIFIER_BDA_IP: windows_core::GUID = windows_core::GUID::from_u128(0x6b891420_db09_11d2_8f32_00c04f7971e2);
pub const KSDATAFORMAT_SPECIFIER_BDA_TRANSPORT: windows_core::GUID = windows_core::GUID::from_u128(0x8deda6fd_ac5f_4334_8ecf_a4ba8fa7d0f0);
pub const KSDATAFORMAT_SUBTYPE_ATSC_SI: windows_core::GUID = windows_core::GUID::from_u128(0xb3c7397c_d303_414d_b33c_4ed2c9d29733);
pub const KSDATAFORMAT_SUBTYPE_BDA_IP: windows_core::GUID = windows_core::GUID::from_u128(0x5a9a213c_db08_11d2_8f32_00c04f7971e2);
pub const KSDATAFORMAT_SUBTYPE_BDA_IP_CONTROL: windows_core::GUID = windows_core::GUID::from_u128(0x499856e8_e85b_48ed_9bea_410d0dd4ef81);
pub const KSDATAFORMAT_SUBTYPE_BDA_MPEG2_TRANSPORT: windows_core::GUID = windows_core::GUID::from_u128(0xf4aeb342_0329_4fdd_a8fd_4aff4926c978);
pub const KSDATAFORMAT_SUBTYPE_BDA_OPENCABLE_OOB_PSIP: windows_core::GUID = windows_core::GUID::from_u128(0x951727db_d2ce_4528_96f6_3301fabb2de0);
pub const KSDATAFORMAT_SUBTYPE_BDA_OPENCABLE_PSIP: windows_core::GUID = windows_core::GUID::from_u128(0x762e3f66_336f_48d1_bf83_2b00352c11f0);
pub const KSDATAFORMAT_SUBTYPE_DVB_SI: windows_core::GUID = windows_core::GUID::from_u128(0xe9dd31a3_221d_4adb_8532_9af309c1a408);
pub const KSDATAFORMAT_SUBTYPE_ISDB_SI: windows_core::GUID = windows_core::GUID::from_u128(0x4a2eeb99_6458_4538_b187_04017c41413f);
pub const KSDATAFORMAT_SUBTYPE_PBDA_TRANSPORT_RAW: windows_core::GUID = windows_core::GUID::from_u128(0x0d7aed42_cb9a_11db_9705_005056c00008);
pub const KSDATAFORMAT_TYPE_BDA_ANTENNA: windows_core::GUID = windows_core::GUID::from_u128(0x71985f41_1ca1_11d3_9cc8_00c04f7971e0);
pub const KSDATAFORMAT_TYPE_BDA_IF_SIGNAL: windows_core::GUID = windows_core::GUID::from_u128(0x61be0b47_a5eb_499b_9a85_5b16c07f1258);
pub const KSDATAFORMAT_TYPE_BDA_IP: windows_core::GUID = windows_core::GUID::from_u128(0xe25f7b8e_cccc_11d2_8f25_00c04f7971e2);
pub const KSDATAFORMAT_TYPE_BDA_IP_CONTROL: windows_core::GUID = windows_core::GUID::from_u128(0xdadd5799_7d5b_4b63_80fb_d1442f26b621);
pub const KSDATAFORMAT_TYPE_MPE: windows_core::GUID = windows_core::GUID::from_u128(0x455f176c_4b06_47ce_9aef_8caef73df7b5);
pub const KSDATAFORMAT_TYPE_MPEG2_SECTIONS: windows_core::GUID = windows_core::GUID::from_u128(0x455f176c_4b06_47ce_9aef_8caef73df7b5);
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSEVENTDATA_BDA_RF_TUNER_SCAN_S {
    pub EventData: super::super::KernelStreaming::KSEVENTDATA,
    pub StartFrequency: u32,
    pub EndFrequency: u32,
    pub LockRequested: BDA_LockType,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSEVENTDATA_BDA_RF_TUNER_SCAN_S {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSEVENTDATA_BDA_RF_TUNER_SCAN_S {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const KSEVENTSETID_BdaCAEvent: windows_core::GUID = windows_core::GUID::from_u128(0x488c4ccc_b768_4129_8eb1_b00a071f9068);
pub const KSEVENTSETID_BdaDiseqCEvent: windows_core::GUID = windows_core::GUID::from_u128(0x8b19bbf0_4184_43ac_ad3c_0c889be4c212);
pub const KSEVENTSETID_BdaEvent: windows_core::GUID = windows_core::GUID::from_u128(0xae7e55b2_96d7_4e29_908f_62f95b2a1679);
pub const KSEVENTSETID_BdaPinEvent: windows_core::GUID = windows_core::GUID::from_u128(0x104781cd_50bd_40d5_95fb_087e0e86a591);
pub const KSEVENTSETID_BdaTunerEvent: windows_core::GUID = windows_core::GUID::from_u128(0xaab59e17_01c9_4ebf_93f2_fc3b79b46f91);
pub const KSMETHODSETID_BdaChangeSync: windows_core::GUID = windows_core::GUID::from_u128(0xfd0a5af3_b41d_11d2_9c95_00c04f7971e0);
pub const KSMETHODSETID_BdaConditionalAccessService: windows_core::GUID = windows_core::GUID::from_u128(0x10ced3b4_320b_41bf_9824_1b2e68e71eb9);
pub const KSMETHODSETID_BdaDebug: windows_core::GUID = windows_core::GUID::from_u128(0x0d4a90ec_c69d_4ee2_8c5a_fb1f63a50da1);
pub const KSMETHODSETID_BdaDeviceConfiguration: windows_core::GUID = windows_core::GUID::from_u128(0x71985f45_1ca1_11d3_9cc8_00c04f7971e0);
pub const KSMETHODSETID_BdaDrmService: windows_core::GUID = windows_core::GUID::from_u128(0xbff6b5bb_b0ae_484c_9dca_73528fb0b46e);
pub const KSMETHODSETID_BdaEventing: windows_core::GUID = windows_core::GUID::from_u128(0xf99492da_6193_4eb0_8690_6686cbff713e);
pub const KSMETHODSETID_BdaGuideDataDeliveryService: windows_core::GUID = windows_core::GUID::from_u128(0x8d9d5562_1589_417d_99ce_ac531dda19f9);
pub const KSMETHODSETID_BdaIsdbConditionalAccess: windows_core::GUID = windows_core::GUID::from_u128(0x5e68c627_16c2_4e6c_b1e2_d00170cdaa0f);
pub const KSMETHODSETID_BdaMux: windows_core::GUID = windows_core::GUID::from_u128(0x942aafec_4c05_4c74_b8eb_8706c2a4943f);
pub const KSMETHODSETID_BdaNameValue: windows_core::GUID = windows_core::GUID::from_u128(0x36e07304_9f0d_4e88_9118_ac0ba317b7f2);
pub const KSMETHODSETID_BdaNameValueA: windows_core::GUID = windows_core::GUID::from_u128(0x0c24096d_5ff5_47de_a856_062e587e3727);
pub const KSMETHODSETID_BdaScanning: windows_core::GUID = windows_core::GUID::from_u128(0x12eb49df_6249_47f3_b190_e21e6e2f8a9c);
pub const KSMETHODSETID_BdaTSSelector: windows_core::GUID = windows_core::GUID::from_u128(0x1dcfafe9_b45e_41b3_bb2a_561eb129ae98);
pub const KSMETHODSETID_BdaTuner: windows_core::GUID = windows_core::GUID::from_u128(0xb774102f_ac07_478a_8228_2742d961fa7e);
pub const KSMETHODSETID_BdaUserActivity: windows_core::GUID = windows_core::GUID::from_u128(0xeda5c834_4531_483c_be0a_94e6c96ff396);
pub const KSMETHODSETID_BdaWmdrmSession: windows_core::GUID = windows_core::GUID::from_u128(0x4be6fa3d_07cd_4139_8b80_8c18ba3aec88);
pub const KSMETHODSETID_BdaWmdrmTuner: windows_core::GUID = windows_core::GUID::from_u128(0x86d979cf_a8a7_4f94_b5fb_14c0aca68fe6);
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_BUFFER {
    pub NodeMethod: super::super::KernelStreaming::KSM_NODE,
    pub ulBufferSize: u32,
    pub argbBuffer: [u8; 1],
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_BUFFER {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_BUFFER {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_CAS_CAPTURETOKEN {
    pub NodeMethod: super::super::KernelStreaming::KSM_NODE,
    pub ulTokenLength: u32,
    pub argbToken: [u8; 1],
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_CAS_CAPTURETOKEN {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_CAS_CAPTURETOKEN {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_CAS_CLOSEMMIDIALOG {
    pub NodeMethod: super::super::KernelStreaming::KSM_NODE,
    pub ulDialogRequest: u32,
    pub cLanguage: [i8; 12],
    pub ulDialogNumber: u32,
    pub ulReason: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_CAS_CLOSEMMIDIALOG {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_CAS_CLOSEMMIDIALOG {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_CAS_ENTITLEMENTTOKEN {
    pub NodeMethod: super::super::KernelStreaming::KSM_NODE,
    pub ulDialogRequest: u32,
    pub cLanguage: [i8; 12],
    pub ulRequestType: u32,
    pub ulEntitlementTokenLen: u32,
    pub argbEntitlementToken: [u8; 1],
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_CAS_ENTITLEMENTTOKEN {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_CAS_ENTITLEMENTTOKEN {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_CAS_OPENBROADCASTMMI {
    pub NodeMethod: super::super::KernelStreaming::KSM_NODE,
    pub ulDialogRequest: u32,
    pub cLanguage: [i8; 12],
    pub ulEventId: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_CAS_OPENBROADCASTMMI {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_CAS_OPENBROADCASTMMI {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_DEBUG_LEVEL {
    pub Method: super::super::KernelStreaming::KSIDENTIFIER,
    pub ucDebugLevel: u8,
    pub ulDebugStringSize: u32,
    pub argbDebugString: [u8; 1],
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_DEBUG_LEVEL {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_DEBUG_LEVEL {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_DRM_SETDRM {
    pub NodeMethod: super::super::KernelStreaming::KSM_NODE,
    pub NewDRMuuid: windows_core::GUID,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_DRM_SETDRM {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_DRM_SETDRM {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_EVENT_COMPLETE {
    pub Method: super::super::KernelStreaming::KSIDENTIFIER,
    pub ulEventID: u32,
    pub ulEventResult: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_EVENT_COMPLETE {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_EVENT_COMPLETE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_GDDS_SERVICEFROMTUNEXML {
    pub Method: super::super::KernelStreaming::KSIDENTIFIER,
    pub ulTuneXmlLength: u32,
    pub argbTuneXml: [u8; 1],
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_GDDS_SERVICEFROMTUNEXML {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_GDDS_SERVICEFROMTUNEXML {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_GDDS_TUNEXMLFROMIDX {
    pub Method: super::super::KernelStreaming::KSIDENTIFIER,
    pub ulIdx: u64,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_GDDS_TUNEXMLFROMIDX {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_GDDS_TUNEXMLFROMIDX {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_GPNV_GETVALUE {
    pub Method: super::super::KernelStreaming::KSIDENTIFIER,
    pub ulNameLength: u32,
    pub cLanguage: [i8; 12],
    pub argbData: [u8; 1],
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_GPNV_GETVALUE {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_GPNV_GETVALUE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_GPNV_NAMEINDEX {
    pub Method: super::super::KernelStreaming::KSIDENTIFIER,
    pub ulValueNameIndex: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_GPNV_NAMEINDEX {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_GPNV_NAMEINDEX {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_GPNV_SETVALUE {
    pub Method: super::super::KernelStreaming::KSIDENTIFIER,
    pub ulDialogRequest: u32,
    pub cLanguage: [i8; 12],
    pub ulNameLength: u32,
    pub ulValueLength: u32,
    pub argbName: [u8; 1],
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_GPNV_SETVALUE {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_GPNV_SETVALUE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_ISDBCAS_REQUEST {
    pub NodeMethod: super::super::KernelStreaming::KSM_NODE,
    pub ulRequestID: u32,
    pub ulIsdbCommandSize: u32,
    pub argbIsdbCommandData: [u8; 1],
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_ISDBCAS_REQUEST {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_ISDBCAS_REQUEST {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_PIN {
    pub Method: super::super::KernelStreaming::KSIDENTIFIER,
    pub Anonymous: KSM_BDA_PIN_0,
    pub Reserved: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_PIN {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_PIN {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub union KSM_BDA_PIN_0 {
    pub PinId: u32,
    pub PinType: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_PIN_0 {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_PIN_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_PIN_PAIR {
    pub Method: super::super::KernelStreaming::KSIDENTIFIER,
    pub Anonymous1: KSM_BDA_PIN_PAIR_0,
    pub Anonymous2: KSM_BDA_PIN_PAIR_1,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_PIN_PAIR {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_PIN_PAIR {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub union KSM_BDA_PIN_PAIR_0 {
    pub InputPinId: u32,
    pub InputPinType: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_PIN_PAIR_0 {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_PIN_PAIR_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub union KSM_BDA_PIN_PAIR_1 {
    pub OutputPinId: u32,
    pub OutputPinType: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_PIN_PAIR_1 {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_PIN_PAIR_1 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_SCAN_CAPABILTIES {
    pub Method: super::super::KernelStreaming::KSIDENTIFIER,
    pub uuidBroadcastStandard: windows_core::GUID,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_SCAN_CAPABILTIES {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_SCAN_CAPABILTIES {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_SCAN_FILTER {
    pub Method: super::super::KernelStreaming::KSIDENTIFIER,
    pub ulScanModulationTypeSize: u32,
    pub AnalogVideoStandards: u64,
    pub argbScanModulationTypes: [u8; 1],
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_SCAN_FILTER {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_SCAN_FILTER {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_SCAN_START {
    pub Method: super::super::KernelStreaming::KSIDENTIFIER,
    pub LowerFrequency: u32,
    pub HigherFrequency: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_SCAN_START {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_SCAN_START {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_TS_SELECTOR_SETTSID {
    pub NodeMethod: super::super::KernelStreaming::KSM_NODE,
    pub usTSID: u16,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_TS_SELECTOR_SETTSID {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_TS_SELECTOR_SETTSID {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_TUNER_TUNEREQUEST {
    pub Method: super::super::KernelStreaming::KSIDENTIFIER,
    pub ulTuneLength: u32,
    pub argbTuneData: [u8; 1],
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_TUNER_TUNEREQUEST {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_TUNER_TUNEREQUEST {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_USERACTIVITY_USEREASON {
    pub Method: super::super::KernelStreaming::KSIDENTIFIER,
    pub ulUseReason: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_USERACTIVITY_USEREASON {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_USERACTIVITY_USEREASON {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_WMDRMTUNER_GETPIDPROTECTION {
    pub NodeMethod: super::super::KernelStreaming::KSM_NODE,
    pub ulPID: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_WMDRMTUNER_GETPIDPROTECTION {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_WMDRMTUNER_GETPIDPROTECTION {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_WMDRMTUNER_PURCHASEENTITLEMENT {
    pub NodeMethod: super::super::KernelStreaming::KSM_NODE,
    pub ulDialogRequest: u32,
    pub cLanguage: [i8; 12],
    pub ulPurchaseTokenLength: u32,
    pub argbDataBuffer: [u8; 1],
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_WMDRMTUNER_PURCHASEENTITLEMENT {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_WMDRMTUNER_PURCHASEENTITLEMENT {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_WMDRMTUNER_SETPIDPROTECTION {
    pub NodeMethod: super::super::KernelStreaming::KSM_NODE,
    pub ulPID: u32,
    pub uuidKeyID: windows_core::GUID,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_WMDRMTUNER_SETPIDPROTECTION {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_WMDRMTUNER_SETPIDPROTECTION {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_WMDRMTUNER_SYNCVALUE {
    pub NodeMethod: super::super::KernelStreaming::KSM_NODE,
    pub ulSyncValue: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_WMDRMTUNER_SYNCVALUE {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_WMDRMTUNER_SYNCVALUE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_WMDRM_LICENSE {
    pub NodeMethod: super::super::KernelStreaming::KSM_NODE,
    pub uuidKeyID: windows_core::GUID,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_WMDRM_LICENSE {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_WMDRM_LICENSE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSM_BDA_WMDRM_RENEWLICENSE {
    pub NodeMethod: super::super::KernelStreaming::KSM_NODE,
    pub ulXMRLicenseLength: u32,
    pub ulEntitlementTokenLength: u32,
    pub argbDataBuffer: [u8; 1],
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSM_BDA_WMDRM_RENEWLICENSE {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSM_BDA_WMDRM_RENEWLICENSE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const KSNODE_BDA_8PSK_DEMODULATOR: windows_core::GUID = windows_core::GUID::from_u128(0xe957a0e7_dd98_4a3c_810b_3525157ab62e);
pub const KSNODE_BDA_8VSB_DEMODULATOR: windows_core::GUID = windows_core::GUID::from_u128(0x71985f4f_1ca1_11d3_9cc8_00c04f7971e0);
pub const KSNODE_BDA_ANALOG_DEMODULATOR: windows_core::GUID = windows_core::GUID::from_u128(0x634db199_27dd_46b8_acfb_ecc98e61a2ad);
pub const KSNODE_BDA_COFDM_DEMODULATOR: windows_core::GUID = windows_core::GUID::from_u128(0x2dac6e05_edbe_4b9c_b387_1b6fad7d6495);
pub const KSNODE_BDA_COMMON_CA_POD: windows_core::GUID = windows_core::GUID::from_u128(0xd83ef8fc_f3b8_45ab_8b71_ecf7c339deb4);
pub const KSNODE_BDA_DRI_DRM: windows_core::GUID = windows_core::GUID::from_u128(0x4f95ad74_cefb_42d2_94a9_68c5b2c1aabe);
pub const KSNODE_BDA_IP_SINK: windows_core::GUID = windows_core::GUID::from_u128(0x71985f4e_1ca1_11d3_9cc8_00c04f7971e0);
pub const KSNODE_BDA_ISDB_S_DEMODULATOR: windows_core::GUID = windows_core::GUID::from_u128(0xedde230a_9086_432d_b8a5_6670263807e9);
pub const KSNODE_BDA_ISDB_T_DEMODULATOR: windows_core::GUID = windows_core::GUID::from_u128(0xfcea3ae3_2cb2_464d_8f5d_305c0bb778a2);
pub const KSNODE_BDA_OPENCABLE_POD: windows_core::GUID = windows_core::GUID::from_u128(0x345812a0_fb7c_4790_aa7e_b1db88ac19c9);
pub const KSNODE_BDA_PBDA_CAS: windows_core::GUID = windows_core::GUID::from_u128(0xc026869f_7129_4e71_8696_ec8f75299b77);
pub const KSNODE_BDA_PBDA_DRM: windows_core::GUID = windows_core::GUID::from_u128(0x9eeebd03_eea1_450f_96ae_633e6de63cce);
pub const KSNODE_BDA_PBDA_ISDBCAS: windows_core::GUID = windows_core::GUID::from_u128(0xf2cf2ab3_5b9d_40ae_ab7c_4e7ad0bd1c52);
pub const KSNODE_BDA_PBDA_MUX: windows_core::GUID = windows_core::GUID::from_u128(0xf88c7787_6678_4f4b_a13e_da09861d682b);
pub const KSNODE_BDA_PBDA_TUNER: windows_core::GUID = windows_core::GUID::from_u128(0xaa5e8286_593c_4979_9494_46a2a9dfe076);
pub const KSNODE_BDA_PID_FILTER: windows_core::GUID = windows_core::GUID::from_u128(0xf5412789_b0a0_44e1_ae4f_ee999b1b7fbe);
pub const KSNODE_BDA_QAM_DEMODULATOR: windows_core::GUID = windows_core::GUID::from_u128(0x71985f4d_1ca1_11d3_9cc8_00c04f7971e0);
pub const KSNODE_BDA_QPSK_DEMODULATOR: windows_core::GUID = windows_core::GUID::from_u128(0x6390c905_27c1_4d67_bdb7_77c50d079300);
pub const KSNODE_BDA_RF_TUNER: windows_core::GUID = windows_core::GUID::from_u128(0x71985f4c_1ca1_11d3_9cc8_00c04f7971e0);
pub const KSNODE_BDA_TS_SELECTOR: windows_core::GUID = windows_core::GUID::from_u128(0x5eddf185_fed1_4f45_9685_bbb73c323cfc);
pub const KSNODE_BDA_VIDEO_ENCODER: windows_core::GUID = windows_core::GUID::from_u128(0xd98429e3_65c9_4ac4_93aa_766782833b7a);
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSPROPERTY_BDA_RF_TUNER_CAPS_S {
    pub Property: super::super::KernelStreaming::KSP_NODE,
    pub Mode: u32,
    pub AnalogStandardsSupported: u32,
    pub DigitalStandardsSupported: u32,
    pub MinFrequency: u32,
    pub MaxFrequency: u32,
    pub SettlingTime: u32,
    pub AnalogSensingRange: u32,
    pub DigitalSensingRange: u32,
    pub MilliSecondsPerMHz: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSPROPERTY_BDA_RF_TUNER_CAPS_S {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSPROPERTY_BDA_RF_TUNER_CAPS_S {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSPROPERTY_BDA_RF_TUNER_SCAN_STATUS_S {
    pub Property: super::super::KernelStreaming::KSP_NODE,
    pub CurrentFrequency: u32,
    pub FrequencyRangeMin: u32,
    pub FrequencyRangeMax: u32,
    pub MilliSecondsLeft: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSPROPERTY_BDA_RF_TUNER_SCAN_STATUS_S {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSPROPERTY_BDA_RF_TUNER_SCAN_STATUS_S {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSPROPERTY_BDA_RF_TUNER_STANDARD_MODE_S {
    pub Property: super::super::KernelStreaming::KSP_NODE,
    pub AutoDetect: super::super::super::Foundation::BOOL,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSPROPERTY_BDA_RF_TUNER_STANDARD_MODE_S {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSPROPERTY_BDA_RF_TUNER_STANDARD_MODE_S {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSPROPERTY_BDA_RF_TUNER_STANDARD_S {
    pub Property: super::super::KernelStreaming::KSP_NODE,
    pub SignalType: BDA_SignalType,
    pub SignalStandard: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSPROPERTY_BDA_RF_TUNER_STANDARD_S {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSPROPERTY_BDA_RF_TUNER_STANDARD_S {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const KSPROPSETID_BdaAutodemodulate: windows_core::GUID = windows_core::GUID::from_u128(0xddf15b12_bd25_11d2_9ca0_00c04f7971e0);
pub const KSPROPSETID_BdaCA: windows_core::GUID = windows_core::GUID::from_u128(0xb0693766_5278_4ec6_b9e1_3ce40560ef5a);
pub const KSPROPSETID_BdaDigitalDemodulator: windows_core::GUID = windows_core::GUID::from_u128(0xef30f379_985b_4d10_b640_a79d5e04e1e0);
pub const KSPROPSETID_BdaDiseqCommand: windows_core::GUID = windows_core::GUID::from_u128(0xf84e2ab0_3c6b_45e3_a0fc_8669d4b81f11);
pub const KSPROPSETID_BdaEthernetFilter: windows_core::GUID = windows_core::GUID::from_u128(0x71985f43_1ca1_11d3_9cc8_00c04f7971e0);
pub const KSPROPSETID_BdaFrequencyFilter: windows_core::GUID = windows_core::GUID::from_u128(0x71985f47_1ca1_11d3_9cc8_00c04f7971e0);
pub const KSPROPSETID_BdaIPv4Filter: windows_core::GUID = windows_core::GUID::from_u128(0x71985f44_1ca1_11d3_9cc8_00c04f7971e0);
pub const KSPROPSETID_BdaIPv6Filter: windows_core::GUID = windows_core::GUID::from_u128(0xe1785a74_2a23_4fb3_9245_a8f88017ef33);
pub const KSPROPSETID_BdaLNBInfo: windows_core::GUID = windows_core::GUID::from_u128(0x992cf102_49f9_4719_a664_c4f23e2408f4);
pub const KSPROPSETID_BdaNullTransform: windows_core::GUID = windows_core::GUID::from_u128(0xddf15b0d_bd25_11d2_9ca0_00c04f7971e0);
pub const KSPROPSETID_BdaPIDFilter: windows_core::GUID = windows_core::GUID::from_u128(0xd0a67d65_08df_4fec_8533_e5b550410b85);
pub const KSPROPSETID_BdaPinControl: windows_core::GUID = windows_core::GUID::from_u128(0x0ded49d5_a8b7_4d5d_97a1_12b0c195874d);
pub const KSPROPSETID_BdaSignalStats: windows_core::GUID = windows_core::GUID::from_u128(0x1347d106_cf3a_428a_a5cb_ac0d9a2a4338);
pub const KSPROPSETID_BdaTableSection: windows_core::GUID = windows_core::GUID::from_u128(0x516b99c5_971c_4aaf_b3f3_d9fda8a15e16);
pub const KSPROPSETID_BdaTopology: windows_core::GUID = windows_core::GUID::from_u128(0xa14ee835_0a23_11d3_9cc7_00c04f7971e0);
pub const KSPROPSETID_BdaVoidTransform: windows_core::GUID = windows_core::GUID::from_u128(0x71985f46_1ca1_11d3_9cc8_00c04f7971e0);
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSP_BDA_NODE_PIN {
    pub Property: super::super::KernelStreaming::KSIDENTIFIER,
    pub ulNodeType: u32,
    pub ulInputPinId: u32,
    pub ulOutputPinId: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSP_BDA_NODE_PIN {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSP_BDA_NODE_PIN {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KSP_NODE_ESPID {
    pub Property: super::super::KernelStreaming::KSP_NODE,
    pub EsPid: u32,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KSP_NODE_ESPID {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KSP_NODE_ESPID {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KS_DATARANGE_BDA_ANTENNA {
    pub DataRange: super::super::KernelStreaming::KSDATAFORMAT,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KS_DATARANGE_BDA_ANTENNA {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KS_DATARANGE_BDA_ANTENNA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_Media_KernelStreaming")]
#[derive(Clone, Copy)]
pub struct KS_DATARANGE_BDA_TRANSPORT {
    pub DataRange: super::super::KernelStreaming::KSDATAFORMAT,
    pub BdaTransportInfo: BDA_TRANSPORT_INFO,
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl windows_core::TypeKind for KS_DATARANGE_BDA_TRANSPORT {
    type TypeKind = windows_core::CopyType;
}
#[cfg(feature = "Win32_Media_KernelStreaming")]
impl Default for KS_DATARANGE_BDA_TRANSPORT {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct LONG_SECTION {
    pub TableId: u8,
    pub Header: LONG_SECTION_0,
    pub TableIdExtension: u16,
    pub Version: LONG_SECTION_1,
    pub SectionNumber: u8,
    pub LastSectionNumber: u8,
    pub RemainingData: [u8; 1],
}
impl windows_core::TypeKind for LONG_SECTION {
    type TypeKind = windows_core::CopyType;
}
impl Default for LONG_SECTION {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub union LONG_SECTION_0 {
    pub S: MPEG_HEADER_BITS_MIDL,
    pub W: u16,
}
impl windows_core::TypeKind for LONG_SECTION_0 {
    type TypeKind = windows_core::CopyType;
}
impl Default for LONG_SECTION_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
pub union LONG_SECTION_1 {
    pub S: MPEG_HEADER_VERSION_BITS_MIDL,
    pub B: u8,
}
impl windows_core::TypeKind for LONG_SECTION_1 {
    type TypeKind = windows_core::CopyType;
}
impl Default for LONG_SECTION_1 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const LanguageComponentType: windows_core::GUID = windows_core::GUID::from_u128(0x1be49f30_0e1b_11d3_9d8e_00c04f72d980);
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct LanguageInfo {
    pub LangID: u16,
    pub lISOLangCode: i32,
}
impl windows_core::TypeKind for LanguageInfo {
    type TypeKind = windows_core::CopyType;
}
impl Default for LanguageInfo {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const Locator: windows_core::GUID = windows_core::GUID::from_u128(0x0888c883_ac4f_4943_b516_2c38d9b34562);
pub const MPEG2Component: windows_core::GUID = windows_core::GUID::from_u128(0x055cb2d7_2969_45cd_914b_76890722f112);
pub const MPEG2ComponentType: windows_core::GUID = windows_core::GUID::from_u128(0x418008f3_cf67_4668_9628_10dc52be1d08);
pub const MPEG2TuneRequest: windows_core::GUID = windows_core::GUID::from_u128(0x0955ac62_bf2e_4cba_a2b9_a63f772d46cf);
pub const MPEG2TuneRequestFactory: windows_core::GUID = windows_core::GUID::from_u128(0x2c63e4eb_4cea_41b8_919c_e947ea19a77c);
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG2_FILTER {
    pub bVersionNumber: u8,
    pub wFilterSize: u16,
    pub fUseRawFilteringBits: super::super::super::Foundation::BOOL,
    pub Filter: [u8; 16],
    pub Mask: [u8; 16],
    pub fSpecifyTableIdExtension: super::super::super::Foundation::BOOL,
    pub TableIdExtension: u16,
    pub fSpecifyVersion: super::super::super::Foundation::BOOL,
    pub Version: u8,
    pub fSpecifySectionNumber: super::super::super::Foundation::BOOL,
    pub SectionNumber: u8,
    pub fSpecifyCurrentNext: super::super::super::Foundation::BOOL,
    pub fNext: super::super::super::Foundation::BOOL,
    pub fSpecifyDsmccOptions: super::super::super::Foundation::BOOL,
    pub Dsmcc: DSMCC_FILTER_OPTIONS,
    pub fSpecifyAtscOptions: super::super::super::Foundation::BOOL,
    pub Atsc: ATSC_FILTER_OPTIONS,
}
impl windows_core::TypeKind for MPEG2_FILTER {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG2_FILTER {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG2_FILTER2 {
    pub Anonymous: MPEG2_FILTER2_0,
    pub fSpecifyDvbEitOptions: super::super::super::Foundation::BOOL,
    pub DvbEit: DVB_EIT_FILTER_OPTIONS,
}
impl windows_core::TypeKind for MPEG2_FILTER2 {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG2_FILTER2 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
pub union MPEG2_FILTER2_0 {
    pub Anonymous: MPEG2_FILTER2_0_0,
    pub bVersion1Bytes: [u8; 124],
}
impl windows_core::TypeKind for MPEG2_FILTER2_0 {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG2_FILTER2_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG2_FILTER2_0_0 {
    pub bVersionNumber: u8,
    pub wFilterSize: u16,
    pub fUseRawFilteringBits: super::super::super::Foundation::BOOL,
    pub Filter: [u8; 16],
    pub Mask: [u8; 16],
    pub fSpecifyTableIdExtension: super::super::super::Foundation::BOOL,
    pub TableIdExtension: u16,
    pub fSpecifyVersion: super::super::super::Foundation::BOOL,
    pub Version: u8,
    pub fSpecifySectionNumber: super::super::super::Foundation::BOOL,
    pub SectionNumber: u8,
    pub fSpecifyCurrentNext: super::super::super::Foundation::BOOL,
    pub fNext: super::super::super::Foundation::BOOL,
    pub fSpecifyDsmccOptions: super::super::super::Foundation::BOOL,
    pub Dsmcc: DSMCC_FILTER_OPTIONS,
    pub fSpecifyAtscOptions: super::super::super::Foundation::BOOL,
    pub Atsc: ATSC_FILTER_OPTIONS,
}
impl windows_core::TypeKind for MPEG2_FILTER2_0_0 {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG2_FILTER2_0_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG_BCS_DEMUX {
    pub AVMGraphId: u32,
}
impl windows_core::TypeKind for MPEG_BCS_DEMUX {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_BCS_DEMUX {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG_CONTEXT {
    pub Type: MPEG_CONTEXT_TYPE,
    pub U: MPEG_CONTEXT_0,
}
impl windows_core::TypeKind for MPEG_CONTEXT {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_CONTEXT {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
pub union MPEG_CONTEXT_0 {
    pub Demux: MPEG_BCS_DEMUX,
    pub Winsock: MPEG_WINSOCK,
}
impl windows_core::TypeKind for MPEG_CONTEXT_0 {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_CONTEXT_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG_DATE {
    pub Date: u8,
    pub Month: u8,
    pub Year: u16,
}
impl windows_core::TypeKind for MPEG_DATE {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_DATE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG_DATE_AND_TIME {
    pub D: MPEG_DATE,
    pub T: MPEG_TIME,
}
impl windows_core::TypeKind for MPEG_DATE_AND_TIME {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_DATE_AND_TIME {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG_HEADER_BITS {
    pub _bitfield: u16,
}
impl windows_core::TypeKind for MPEG_HEADER_BITS {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_HEADER_BITS {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG_HEADER_BITS_MIDL {
    pub Bits: u16,
}
impl windows_core::TypeKind for MPEG_HEADER_BITS_MIDL {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_HEADER_BITS_MIDL {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct MPEG_HEADER_VERSION_BITS {
    pub _bitfield: u8,
}
impl windows_core::TypeKind for MPEG_HEADER_VERSION_BITS {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_HEADER_VERSION_BITS {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct MPEG_HEADER_VERSION_BITS_MIDL {
    pub Bits: u8,
}
impl windows_core::TypeKind for MPEG_HEADER_VERSION_BITS_MIDL {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_HEADER_VERSION_BITS_MIDL {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG_PACKET_LIST {
    pub wPacketCount: u16,
    pub PacketList: [*mut MPEG_RQST_PACKET; 1],
}
impl windows_core::TypeKind for MPEG_PACKET_LIST {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_PACKET_LIST {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG_RQST_PACKET {
    pub dwLength: u32,
    pub pSection: *mut SECTION,
}
impl windows_core::TypeKind for MPEG_RQST_PACKET {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_RQST_PACKET {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG_SERVICE_REQUEST {
    pub Type: MPEG_REQUEST_TYPE,
    pub Context: MPEG_CONTEXT,
    pub Pid: u16,
    pub TableId: u8,
    pub Filter: MPEG2_FILTER,
    pub Flags: u32,
}
impl windows_core::TypeKind for MPEG_SERVICE_REQUEST {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_SERVICE_REQUEST {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG_SERVICE_RESPONSE {
    pub IPAddress: u32,
    pub Port: u16,
}
impl windows_core::TypeKind for MPEG_SERVICE_RESPONSE {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_SERVICE_RESPONSE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG_STREAM_BUFFER {
    pub hr: windows_core::HRESULT,
    pub dwDataBufferSize: u32,
    pub dwSizeOfDataRead: u32,
    pub pDataBuffer: *mut u8,
}
impl windows_core::TypeKind for MPEG_STREAM_BUFFER {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_STREAM_BUFFER {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG_STREAM_FILTER {
    pub wPidValue: u16,
    pub dwFilterSize: u32,
    pub fCrcEnabled: super::super::super::Foundation::BOOL,
    pub rgchFilter: [u8; 16],
    pub rgchMask: [u8; 16],
}
impl windows_core::TypeKind for MPEG_STREAM_FILTER {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_STREAM_FILTER {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG_TIME {
    pub Hours: u8,
    pub Minutes: u8,
    pub Seconds: u8,
}
impl windows_core::TypeKind for MPEG_TIME {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_TIME {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPEG_WINSOCK {
    pub AVMGraphId: u32,
}
impl windows_core::TypeKind for MPEG_WINSOCK {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPEG_WINSOCK {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct MPE_ELEMENT {
    pub pid: u16,
    pub bComponentTag: u8,
    pub pNext: *mut MPE_ELEMENT,
}
impl windows_core::TypeKind for MPE_ELEMENT {
    type TypeKind = windows_core::CopyType;
}
impl Default for MPE_ELEMENT {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const MSEventBinder: windows_core::GUID = windows_core::GUID::from_u128(0x577faa18_4518_445e_8f70_1473f8cf4ba4);
pub const MSVidAnalogCaptureToCCA: windows_core::GUID = windows_core::GUID::from_u128(0x942b7909_a28e_49a1_a207_34ebcbcb4b3b);
pub const MSVidAnalogCaptureToDataServices: windows_core::GUID = windows_core::GUID::from_u128(0xc5702cd6_9b79_11d3_b654_00c04f79498e);
pub const MSVidAnalogCaptureToOverlayMixer: windows_core::GUID = windows_core::GUID::from_u128(0xe18af75a_08af_11d3_b64a_00c04f79498e);
pub const MSVidAnalogCaptureToStreamBufferSink: windows_core::GUID = windows_core::GUID::from_u128(0x9f50e8b1_9530_4ddc_825e_1af81d47aed6);
pub const MSVidAnalogCaptureToXDS: windows_core::GUID = windows_core::GUID::from_u128(0x3540d440_5b1d_49cb_821a_e84b8cf065a7);
pub const MSVidAnalogTVToEncoder: windows_core::GUID = windows_core::GUID::from_u128(0x28953661_0231_41db_8986_21ff4388ee9b);
pub const MSVidAnalogTunerDevice: windows_core::GUID = windows_core::GUID::from_u128(0x1c15d484_911d_11d2_b632_00c04f79498e);
pub const MSVidAudioRenderer: windows_core::GUID = windows_core::GUID::from_u128(0x37b03544_a4c8_11d2_b634_00c04f79498e);
pub const MSVidAudioRendererDevices: windows_core::GUID = windows_core::GUID::from_u128(0xc5702ccf_9b79_11d3_b654_00c04f79498e);
pub const MSVidBDATunerDevice: windows_core::GUID = windows_core::GUID::from_u128(0xa2e3074e_6c3d_11d3_b653_00c04f79498e);
pub const MSVidCCA: windows_core::GUID = windows_core::GUID::from_u128(0x86151827_e47b_45ee_8421_d10e6e690979);
pub const MSVidCCAToStreamBufferSink: windows_core::GUID = windows_core::GUID::from_u128(0x3ef76d68_8661_4843_8b8f_c37163d8c9ce);
pub const MSVidCCToAR: windows_core::GUID = windows_core::GUID::from_u128(0xd76334ca_d89e_4baf_86ab_ddb59372afc2);
pub const MSVidCCToVMR: windows_core::GUID = windows_core::GUID::from_u128(0xc4bf2784_ae00_41ba_9828_9c953bd3c54a);
pub const MSVidClosedCaptioning: windows_core::GUID = windows_core::GUID::from_u128(0x7f9cb14d_48e4_43b6_9346_1aebc39c64d3);
pub const MSVidClosedCaptioningSI: windows_core::GUID = windows_core::GUID::from_u128(0x92ed88bf_879e_448f_b6b6_a385bceb846d);
pub const MSVidCtl: windows_core::GUID = windows_core::GUID::from_u128(0xb0edf163_910a_11d2_b632_00c04f79498e);
pub const MSVidDataServices: windows_core::GUID = windows_core::GUID::from_u128(0x334125c0_77e5_11d3_b653_00c04f79498e);
pub const MSVidDataServicesToStreamBufferSink: windows_core::GUID = windows_core::GUID::from_u128(0x38f03426_e83b_4e68_b65b_dcae73304838);
pub const MSVidDataServicesToXDS: windows_core::GUID = windows_core::GUID::from_u128(0x0429ec6e_1144_4bed_b88b_2fb9899a4a3d);
pub const MSVidDevice: windows_core::GUID = windows_core::GUID::from_u128(0x6e40476f_9c49_4c3e_8bb9_8587958eff74);
pub const MSVidDevice2: windows_core::GUID = windows_core::GUID::from_u128(0x30997f7d_b3b5_4a1c_983a_1fe8098cb77d);
pub const MSVidDigitalCaptureToCCA: windows_core::GUID = windows_core::GUID::from_u128(0x73d14237_b9db_4efa_a6dd_84350421fb2f);
pub const MSVidDigitalCaptureToITV: windows_core::GUID = windows_core::GUID::from_u128(0x5d8e73f7_4989_4ac8_8a98_39ba0d325302);
pub const MSVidDigitalCaptureToStreamBufferSink: windows_core::GUID = windows_core::GUID::from_u128(0xabe40035_27c3_4a2f_8153_6624471608af);
pub const MSVidEVR: windows_core::GUID = windows_core::GUID::from_u128(0xc45268a2_fa81_4e19_b1e3_72edbd60aeda);
pub const MSVidEncoder: windows_core::GUID = windows_core::GUID::from_u128(0xbb530c63_d9df_4b49_9439_63453962e598);
pub const MSVidEncoderToStreamBufferSink: windows_core::GUID = windows_core::GUID::from_u128(0xa0b9b497_afbc_45ad_a8a6_9b077c40d4f2);
pub const MSVidFeature: windows_core::GUID = windows_core::GUID::from_u128(0x7748530b_c08a_47ea_b24c_be8695ff405f);
pub const MSVidFeatures: windows_core::GUID = windows_core::GUID::from_u128(0xc5702cd0_9b79_11d3_b654_00c04f79498e);
pub const MSVidFilePlaybackDevice: windows_core::GUID = windows_core::GUID::from_u128(0x37b0353c_a4c8_11d2_b634_00c04f79498e);
pub const MSVidFilePlaybackToAudioRenderer: windows_core::GUID = windows_core::GUID::from_u128(0xcc23f537_18d4_4ece_93bd_207a84726979);
pub const MSVidFilePlaybackToVideoRenderer: windows_core::GUID = windows_core::GUID::from_u128(0xb401c5eb_8457_427f_84ea_a4d2363364b0);
pub const MSVidGenericComposite: windows_core::GUID = windows_core::GUID::from_u128(0x2764bce5_cc39_11d2_b639_00c04f79498e);
pub const MSVidGenericSink: windows_core::GUID = windows_core::GUID::from_u128(0x4a5869cf_929d_4040_ae03_fcafc5b9cd42);
pub const MSVidITVCapture: windows_core::GUID = windows_core::GUID::from_u128(0x5740a302_ef0b_45ce_bf3b_4470a14a8980);
pub const MSVidITVPlayback: windows_core::GUID = windows_core::GUID::from_u128(0x9e797ed0_5253_4243_a9b7_bd06c58f8ef3);
pub const MSVidITVToStreamBufferSink: windows_core::GUID = windows_core::GUID::from_u128(0x92b94828_1af7_4e6e_9ebf_770657f77af5);
pub const MSVidInputDevice: windows_core::GUID = windows_core::GUID::from_u128(0xac1972f2_138a_4ca3_90da_ae51112eda28);
pub const MSVidInputDevices: windows_core::GUID = windows_core::GUID::from_u128(0xc5702ccc_9b79_11d3_b654_00c04f79498e);
pub const MSVidMPEG2DecoderToClosedCaptioning: windows_core::GUID = windows_core::GUID::from_u128(0x6ad28ee1_5002_4e71_aaf7_bd077907b1a4);
pub const MSVidOutput: windows_core::GUID = windows_core::GUID::from_u128(0x87eb890d_03ad_4e9d_9866_376e5ec572ed);
pub const MSVidOutputDevices: windows_core::GUID = windows_core::GUID::from_u128(0xc5702ccd_9b79_11d3_b654_00c04f79498e);
pub const MSVidRect: windows_core::GUID = windows_core::GUID::from_u128(0xcb4276e6_7d5f_4cf1_9727_629c5e6db6ae);
pub const MSVidSBESourceToCC: windows_core::GUID = windows_core::GUID::from_u128(0x9193a8f9_0cba_400e_aa97_eb4709164576);
pub const MSVidSBESourceToGenericSink: windows_core::GUID = windows_core::GUID::from_u128(0x991da7e5_953f_435b_be5e_b92a05edfc42);
pub const MSVidSBESourceToITV: windows_core::GUID = windows_core::GUID::from_u128(0x2291478c_5ee3_4bef_ab5d_b5ff2cf58352);
pub const MSVidStreamBufferRecordingControl: windows_core::GUID = windows_core::GUID::from_u128(0xcaafdd83_cefc_4e3d_ba03_175f17a24f91);
pub const MSVidStreamBufferSink: windows_core::GUID = windows_core::GUID::from_u128(0x9e77aac4_35e5_42a1_bdc2_8f3ff399847c);
pub const MSVidStreamBufferSource: windows_core::GUID = windows_core::GUID::from_u128(0xad8e510d_217f_409b_8076_29c5e73b98e8);
pub const MSVidStreamBufferSourceToVideoRenderer: windows_core::GUID = windows_core::GUID::from_u128(0x3c4708dc_b181_46a8_8da8_4ab0371758cd);
pub const MSVidStreamBufferV2Source: windows_core::GUID = windows_core::GUID::from_u128(0xfd351ea1_4173_4af4_821d_80d4ae979048);
pub const MSVidVMR9: windows_core::GUID = windows_core::GUID::from_u128(0x24dc3975_09bf_4231_8655_3ee71f43837d);
pub const MSVidVideoInputDevice: windows_core::GUID = windows_core::GUID::from_u128(0x95f4820b_bb3a_4e2d_bc64_5b817bc2c30e);
pub const MSVidVideoPlaybackDevice: windows_core::GUID = windows_core::GUID::from_u128(0x1990d634_1a5e_4071_a34a_53aaffce9f36);
pub const MSVidVideoRenderer: windows_core::GUID = windows_core::GUID::from_u128(0x37b03543_a4c8_11d2_b634_00c04f79498e);
pub const MSVidVideoRendererDevices: windows_core::GUID = windows_core::GUID::from_u128(0xc5702cce_9b79_11d3_b654_00c04f79498e);
pub const MSVidWebDVD: windows_core::GUID = windows_core::GUID::from_u128(0x011b3619_fe63_4814_8a84_15a194ce9ce3);
pub const MSVidWebDVDAdm: windows_core::GUID = windows_core::GUID::from_u128(0xfa7c375b_66a7_4280_879d_fd459c84bb02);
pub const MSVidWebDVDToAudioRenderer: windows_core::GUID = windows_core::GUID::from_u128(0x8d04238e_9fd1_41c6_8de3_9e1ee309e935);
pub const MSVidWebDVDToVideoRenderer: windows_core::GUID = windows_core::GUID::from_u128(0x267db0b3_55e3_4902_949b_df8f5cec0191);
pub const MSVidXDS: windows_core::GUID = windows_core::GUID::from_u128(0x0149eedf_d08f_4142_8d73_d23903d21e90);
pub const Mpeg2Data: windows_core::GUID = windows_core::GUID::from_u128(0xc666e115_bb62_4027_a113_82d643fe2d99);
pub const Mpeg2DataLib: windows_core::GUID = windows_core::GUID::from_u128(0xdbaf6c1b_b6a4_4898_ae65_204f0d9509a1);
pub const Mpeg2Stream: windows_core::GUID = windows_core::GUID::from_u128(0xf91d96c7_8509_4d0b_ab26_a0dd10904bb7);
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct Mpeg2TableSampleHdr {
    pub SectionCount: u8,
    pub Reserved: [u8; 3],
    pub SectionOffsets: [i32; 1],
}
impl windows_core::TypeKind for Mpeg2TableSampleHdr {
    type TypeKind = windows_core::CopyType;
}
impl Default for Mpeg2TableSampleHdr {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct PBDAParentalControl {
    pub rating_system_count: u32,
    pub rating_systems: *mut RATING_SYSTEM,
}
impl windows_core::TypeKind for PBDAParentalControl {
    type TypeKind = windows_core::CopyType;
}
impl Default for PBDAParentalControl {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const PBDA_ALWAYS_TUNE_IN_MUX: windows_core::GUID = windows_core::GUID::from_u128(0x1e1d7141_583f_4ac2_b019_1f430eda0f4c);
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct PBDA_TAG_ATTRIBUTE {
    pub TableUUId: windows_core::GUID,
    pub TableId: u8,
    pub VersionNo: u16,
    pub TableDataSize: u32,
    pub TableData: [u8; 1],
}
impl windows_core::TypeKind for PBDA_TAG_ATTRIBUTE {
    type TypeKind = windows_core::CopyType;
}
impl Default for PBDA_TAG_ATTRIBUTE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct PIC_SEQ_SAMPLE {
    pub _bitfield: u32,
}
impl windows_core::TypeKind for PIC_SEQ_SAMPLE {
    type TypeKind = windows_core::CopyType;
}
impl Default for PIC_SEQ_SAMPLE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct PIDListSpanningEvent {
    pub wPIDCount: u16,
    pub pulPIDs: [u32; 1],
}
impl windows_core::TypeKind for PIDListSpanningEvent {
    type TypeKind = windows_core::CopyType;
}
impl Default for PIDListSpanningEvent {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct PID_BITS {
    pub _bitfield: u16,
}
impl windows_core::TypeKind for PID_BITS {
    type TypeKind = windows_core::CopyType;
}
impl Default for PID_BITS {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct PID_BITS_MIDL {
    pub Bits: u16,
}
impl windows_core::TypeKind for PID_BITS_MIDL {
    type TypeKind = windows_core::CopyType;
}
impl Default for PID_BITS_MIDL {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const PINNAME_BDA_ANALOG_AUDIO: windows_core::GUID = windows_core::GUID::from_u128(0xd28a580a_9b1f_4b0c_9c33_9bf0a8ea636b);
pub const PINNAME_BDA_ANALOG_VIDEO: windows_core::GUID = windows_core::GUID::from_u128(0x5c0c8281_5667_486c_8482_63e31f01a6e9);
pub const PINNAME_BDA_FM_RADIO: windows_core::GUID = windows_core::GUID::from_u128(0xd2855fed_b2d3_4eeb_9bd0_193436a2f890);
pub const PINNAME_BDA_IF_PIN: windows_core::GUID = windows_core::GUID::from_u128(0x1a9d4a42_f3cd_48a1_9aea_71de133cbe14);
pub const PINNAME_BDA_OPENCABLE_PSIP_PIN: windows_core::GUID = windows_core::GUID::from_u128(0x297bb104_e5c9_4ace_b123_95c3cbb24d4f);
pub const PINNAME_BDA_TRANSPORT: windows_core::GUID = windows_core::GUID::from_u128(0x78216a81_cfa8_493e_9711_36a61c08bd9d);
pub const PINNAME_IPSINK_INPUT: windows_core::GUID = windows_core::GUID::from_u128(0x3fdffa70_ac9a_11d2_8f17_00c04f7971e2);
pub const PINNAME_MPE: windows_core::GUID = windows_core::GUID::from_u128(0xc1b06d73_1dbb_11d3_8f46_00c04f7971e2);
pub const PersistTuneXmlUtility: windows_core::GUID = windows_core::GUID::from_u128(0xe77026b0_b97f_4cbb_b7fb_f4f03ad69f11);
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct ProgramElement {
    pub wProgramNumber: u16,
    pub wProgramMapPID: u16,
}
impl windows_core::TypeKind for ProgramElement {
    type TypeKind = windows_core::CopyType;
}
impl Default for ProgramElement {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct RATING_ATTRIBUTE {
    pub rating_attribute_id: u32,
    pub rating_attribute_value: u32,
}
impl windows_core::TypeKind for RATING_ATTRIBUTE {
    type TypeKind = windows_core::CopyType;
}
impl Default for RATING_ATTRIBUTE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct RATING_INFO {
    pub rating_system_count: u32,
    pub lpratingsystem: *mut RATING_SYSTEM,
}
impl windows_core::TypeKind for RATING_INFO {
    type TypeKind = windows_core::CopyType;
}
impl Default for RATING_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct RATING_SYSTEM {
    pub rating_system_id: windows_core::GUID,
    pub _bitfield: u8,
    pub country_code: [u8; 3],
    pub rating_attribute_count: u32,
    pub lpratingattrib: *mut RATING_ATTRIBUTE,
}
impl windows_core::TypeKind for RATING_SYSTEM {
    type TypeKind = windows_core::CopyType;
}
impl Default for RATING_SYSTEM {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct SAMPLE_LIVE_STREAM_TIME {
    pub qwStreamTime: u64,
    pub qwLiveTime: u64,
}
impl windows_core::TypeKind for SAMPLE_LIVE_STREAM_TIME {
    type TypeKind = windows_core::CopyType;
}
impl Default for SAMPLE_LIVE_STREAM_TIME {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct SAMPLE_SEQ_OFFSET {
    pub _bitfield: u32,
}
impl windows_core::TypeKind for SAMPLE_SEQ_OFFSET {
    type TypeKind = windows_core::CopyType;
}
impl Default for SAMPLE_SEQ_OFFSET {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct SBE2_STREAM_DESC {
    pub Version: u32,
    pub StreamId: u32,
    pub Default: u32,
    pub Reserved: u32,
}
impl windows_core::TypeKind for SBE2_STREAM_DESC {
    type TypeKind = windows_core::CopyType;
}
impl Default for SBE2_STREAM_DESC {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct SBE_PIN_DATA {
    pub cDataBytes: u64,
    pub cSamplesProcessed: u64,
    pub cDiscontinuities: u64,
    pub cSyncPoints: u64,
    pub cTimestamps: u64,
}
impl windows_core::TypeKind for SBE_PIN_DATA {
    type TypeKind = windows_core::CopyType;
}
impl Default for SBE_PIN_DATA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct SECTION {
    pub TableId: u8,
    pub Header: SECTION_0,
    pub SectionData: [u8; 1],
}
impl windows_core::TypeKind for SECTION {
    type TypeKind = windows_core::CopyType;
}
impl Default for SECTION {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub union SECTION_0 {
    pub S: MPEG_HEADER_BITS_MIDL,
    pub W: u16,
}
impl windows_core::TypeKind for SECTION_0 {
    type TypeKind = windows_core::CopyType;
}
impl Default for SECTION_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct STREAMBUFFER_ATTRIBUTE {
    pub pszName: windows_core::PWSTR,
    pub StreamBufferAttributeType: STREAMBUFFER_ATTR_DATATYPE,
    pub pbAttribute: *mut u8,
    pub cbLength: u16,
}
impl windows_core::TypeKind for STREAMBUFFER_ATTRIBUTE {
    type TypeKind = windows_core::CopyType;
}
impl Default for STREAMBUFFER_ATTRIBUTE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const SectionList: windows_core::GUID = windows_core::GUID::from_u128(0x73da5d04_4347_45d3_a9dc_fae9ddbe558d);
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct SpanningEventDescriptor {
    pub wDataLen: u16,
    pub wProgNumber: u16,
    pub wSID: u16,
    pub bDescriptor: [u8; 1],
}
impl windows_core::TypeKind for SpanningEventDescriptor {
    type TypeKind = windows_core::CopyType;
}
impl Default for SpanningEventDescriptor {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct SpanningEventEmmMessage {
    pub bCAbroadcasterGroupId: u8,
    pub bMessageControl: u8,
    pub wServiceId: u16,
    pub wTableIdExtension: u16,
    pub bDeletionStatus: u8,
    pub bDisplayingDuration1: u8,
    pub bDisplayingDuration2: u8,
    pub bDisplayingDuration3: u8,
    pub bDisplayingCycle: u8,
    pub bFormatVersion: u8,
    pub bDisplayPosition: u8,
    pub wMessageLength: u16,
    pub szMessageArea: [u16; 1],
}
impl windows_core::TypeKind for SpanningEventEmmMessage {
    type TypeKind = windows_core::CopyType;
}
impl Default for SpanningEventEmmMessage {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const SystemTuningSpaces: windows_core::GUID = windows_core::GUID::from_u128(0xd02aac50_027e_11d3_9d8e_00c04f72d980);
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct TID_EXTENSION {
    pub wTidExt: u16,
    pub wCount: u16,
}
impl windows_core::TypeKind for TID_EXTENSION {
    type TypeKind = windows_core::CopyType;
}
impl Default for TID_EXTENSION {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const TIFLoad: windows_core::GUID = windows_core::GUID::from_u128(0x14eb8748_1753_4393_95ae_4f7e7a87aad6);
#[repr(C)]
#[derive(Clone, Copy)]
pub struct TRANSPORT_PROPERTIES {
    pub PID: u32,
    pub PCR: i64,
    pub Fields: TRANSPORT_PROPERTIES_0,
}
impl windows_core::TypeKind for TRANSPORT_PROPERTIES {
    type TypeKind = windows_core::CopyType;
}
impl Default for TRANSPORT_PROPERTIES {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
pub union TRANSPORT_PROPERTIES_0 {
    pub Others: TRANSPORT_PROPERTIES_0_0,
    pub Value: i64,
}
impl windows_core::TypeKind for TRANSPORT_PROPERTIES_0 {
    type TypeKind = windows_core::CopyType;
}
impl Default for TRANSPORT_PROPERTIES_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct TRANSPORT_PROPERTIES_0_0 {
    pub _bitfield: i64,
}
impl windows_core::TypeKind for TRANSPORT_PROPERTIES_0_0 {
    type TypeKind = windows_core::CopyType;
}
impl Default for TRANSPORT_PROPERTIES_0_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const TuneRequest: windows_core::GUID = windows_core::GUID::from_u128(0xb46e0d38_ab35_4a06_a137_70576b01b39f);
pub const TunerMarshaler: windows_core::GUID = windows_core::GUID::from_u128(0x6438570b_0c08_4a25_9504_8012bb4d50cf);
pub const TuningSpace: windows_core::GUID = windows_core::GUID::from_u128(0x5ffdc5e6_b83a_4b55_b6e8_c69e765fe9db);
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct UDCR_TAG {
    pub bVersion: u8,
    pub KID: [u8; 25],
    pub ullBaseCounter: u64,
    pub ullBaseCounterRange: u64,
    pub fScrambled: super::super::super::Foundation::BOOL,
    pub bStreamMark: u8,
    pub dwReserved1: u32,
    pub dwReserved2: u32,
}
impl windows_core::TypeKind for UDCR_TAG {
    type TypeKind = windows_core::CopyType;
}
impl Default for UDCR_TAG {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct VA_OPTIONAL_VIDEO_PROPERTIES {
    pub dwPictureHeight: u16,
    pub dwPictureWidth: u16,
    pub dwAspectRatioX: u16,
    pub dwAspectRatioY: u16,
    pub VAVideoFormat: VA_VIDEO_FORMAT,
    pub VAColorPrimaries: VA_COLOR_PRIMARIES,
    pub VATransferCharacteristics: VA_TRANSFER_CHARACTERISTICS,
    pub VAMatrixCoefficients: VA_MATRIX_COEFFICIENTS,
}
impl windows_core::TypeKind for VA_OPTIONAL_VIDEO_PROPERTIES {
    type TypeKind = windows_core::CopyType;
}
impl Default for VA_OPTIONAL_VIDEO_PROPERTIES {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct WMDRMProtectionInfo {
    pub wszKID: [u16; 25],
    pub qwCounter: u64,
    pub qwIndex: u64,
    pub bOffset: u8,
}
impl windows_core::TypeKind for WMDRMProtectionInfo {
    type TypeKind = windows_core::CopyType;
}
impl Default for WMDRMProtectionInfo {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const XDSCodec: windows_core::GUID = windows_core::GUID::from_u128(0xc4c4c4f3_0049_4e2b_98fb_9537f6ce516d);
pub const XDSToRat: windows_core::GUID = windows_core::GUID::from_u128(0xc5c5c5f0_3abc_11d6_b25b_00c04fa0c026);
#[cfg(feature = "implement")]
core::include!("impl.rs");
