/*** Autogenerated by WIDL 5.0.5 from bdaiface.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __bdaiface_h__
#define __bdaiface_h__

/* Forward declarations */

#ifndef __IBDA_NetworkProvider_FWD_DEFINED__
#define __IBDA_NetworkProvider_FWD_DEFINED__
typedef interface IBDA_NetworkProvider IBDA_NetworkProvider;
#ifdef __cplusplus
interface IBDA_NetworkProvider;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_EthernetFilter_FWD_DEFINED__
#define __IBDA_EthernetFilter_FWD_DEFINED__
typedef interface IBDA_EthernetFilter IBDA_EthernetFilter;
#ifdef __cplusplus
interface IBDA_EthernetFilter;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_IPV4Filter_FWD_DEFINED__
#define __IBDA_IPV4Filter_FWD_DEFINED__
typedef interface IBDA_IPV4Filter IBDA_IPV4Filter;
#ifdef __cplusplus
interface IBDA_IPV4Filter;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_IPV6Filter_FWD_DEFINED__
#define __IBDA_IPV6Filter_FWD_DEFINED__
typedef interface IBDA_IPV6Filter IBDA_IPV6Filter;
#ifdef __cplusplus
interface IBDA_IPV6Filter;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_DeviceControl_FWD_DEFINED__
#define __IBDA_DeviceControl_FWD_DEFINED__
typedef interface IBDA_DeviceControl IBDA_DeviceControl;
#ifdef __cplusplus
interface IBDA_DeviceControl;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_PinControl_FWD_DEFINED__
#define __IBDA_PinControl_FWD_DEFINED__
typedef interface IBDA_PinControl IBDA_PinControl;
#ifdef __cplusplus
interface IBDA_PinControl;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_SignalProperties_FWD_DEFINED__
#define __IBDA_SignalProperties_FWD_DEFINED__
typedef interface IBDA_SignalProperties IBDA_SignalProperties;
#ifdef __cplusplus
interface IBDA_SignalProperties;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_SignalStatistics_FWD_DEFINED__
#define __IBDA_SignalStatistics_FWD_DEFINED__
typedef interface IBDA_SignalStatistics IBDA_SignalStatistics;
#ifdef __cplusplus
interface IBDA_SignalStatistics;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_Topology_FWD_DEFINED__
#define __IBDA_Topology_FWD_DEFINED__
typedef interface IBDA_Topology IBDA_Topology;
#ifdef __cplusplus
interface IBDA_Topology;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_VoidTransform_FWD_DEFINED__
#define __IBDA_VoidTransform_FWD_DEFINED__
typedef interface IBDA_VoidTransform IBDA_VoidTransform;
#ifdef __cplusplus
interface IBDA_VoidTransform;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_NullTransform_FWD_DEFINED__
#define __IBDA_NullTransform_FWD_DEFINED__
typedef interface IBDA_NullTransform IBDA_NullTransform;
#ifdef __cplusplus
interface IBDA_NullTransform;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_FrequencyFilter_FWD_DEFINED__
#define __IBDA_FrequencyFilter_FWD_DEFINED__
typedef interface IBDA_FrequencyFilter IBDA_FrequencyFilter;
#ifdef __cplusplus
interface IBDA_FrequencyFilter;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_LNBInfo_FWD_DEFINED__
#define __IBDA_LNBInfo_FWD_DEFINED__
typedef interface IBDA_LNBInfo IBDA_LNBInfo;
#ifdef __cplusplus
interface IBDA_LNBInfo;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_DiseqCommand_FWD_DEFINED__
#define __IBDA_DiseqCommand_FWD_DEFINED__
typedef interface IBDA_DiseqCommand IBDA_DiseqCommand;
#ifdef __cplusplus
interface IBDA_DiseqCommand;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_AutoDemodulate_FWD_DEFINED__
#define __IBDA_AutoDemodulate_FWD_DEFINED__
typedef interface IBDA_AutoDemodulate IBDA_AutoDemodulate;
#ifdef __cplusplus
interface IBDA_AutoDemodulate;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_AutoDemodulateEx_FWD_DEFINED__
#define __IBDA_AutoDemodulateEx_FWD_DEFINED__
typedef interface IBDA_AutoDemodulateEx IBDA_AutoDemodulateEx;
#ifdef __cplusplus
interface IBDA_AutoDemodulateEx;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_DigitalDemodulator_FWD_DEFINED__
#define __IBDA_DigitalDemodulator_FWD_DEFINED__
typedef interface IBDA_DigitalDemodulator IBDA_DigitalDemodulator;
#ifdef __cplusplus
interface IBDA_DigitalDemodulator;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_DigitalDemodulator2_FWD_DEFINED__
#define __IBDA_DigitalDemodulator2_FWD_DEFINED__
typedef interface IBDA_DigitalDemodulator2 IBDA_DigitalDemodulator2;
#ifdef __cplusplus
interface IBDA_DigitalDemodulator2;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_DigitalDemodulator3_FWD_DEFINED__
#define __IBDA_DigitalDemodulator3_FWD_DEFINED__
typedef interface IBDA_DigitalDemodulator3 IBDA_DigitalDemodulator3;
#ifdef __cplusplus
interface IBDA_DigitalDemodulator3;
#endif /* __cplusplus */
#endif

#ifndef __ICCSubStreamFiltering_FWD_DEFINED__
#define __ICCSubStreamFiltering_FWD_DEFINED__
typedef interface ICCSubStreamFiltering ICCSubStreamFiltering;
#ifdef __cplusplus
interface ICCSubStreamFiltering;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_IPSinkControl_FWD_DEFINED__
#define __IBDA_IPSinkControl_FWD_DEFINED__
typedef interface IBDA_IPSinkControl IBDA_IPSinkControl;
#ifdef __cplusplus
interface IBDA_IPSinkControl;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_IPSinkInfo_FWD_DEFINED__
#define __IBDA_IPSinkInfo_FWD_DEFINED__
typedef interface IBDA_IPSinkInfo IBDA_IPSinkInfo;
#ifdef __cplusplus
interface IBDA_IPSinkInfo;
#endif /* __cplusplus */
#endif

#ifndef __IEnumPIDMap_FWD_DEFINED__
#define __IEnumPIDMap_FWD_DEFINED__
typedef interface IEnumPIDMap IEnumPIDMap;
#ifdef __cplusplus
interface IEnumPIDMap;
#endif /* __cplusplus */
#endif

#ifndef __IMPEG2PIDMap_FWD_DEFINED__
#define __IMPEG2PIDMap_FWD_DEFINED__
typedef interface IMPEG2PIDMap IMPEG2PIDMap;
#ifdef __cplusplus
interface IMPEG2PIDMap;
#endif /* __cplusplus */
#endif

#ifndef __IFrequencyMap_FWD_DEFINED__
#define __IFrequencyMap_FWD_DEFINED__
typedef interface IFrequencyMap IFrequencyMap;
#ifdef __cplusplus
interface IFrequencyMap;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_EasMessage_FWD_DEFINED__
#define __IBDA_EasMessage_FWD_DEFINED__
typedef interface IBDA_EasMessage IBDA_EasMessage;
#ifdef __cplusplus
interface IBDA_EasMessage;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_TransportStreamInfo_FWD_DEFINED__
#define __IBDA_TransportStreamInfo_FWD_DEFINED__
typedef interface IBDA_TransportStreamInfo IBDA_TransportStreamInfo;
#ifdef __cplusplus
interface IBDA_TransportStreamInfo;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_ConditionalAccess_FWD_DEFINED__
#define __IBDA_ConditionalAccess_FWD_DEFINED__
typedef interface IBDA_ConditionalAccess IBDA_ConditionalAccess;
#ifdef __cplusplus
interface IBDA_ConditionalAccess;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_DiagnosticProperties_FWD_DEFINED__
#define __IBDA_DiagnosticProperties_FWD_DEFINED__
typedef interface IBDA_DiagnosticProperties IBDA_DiagnosticProperties;
#ifdef __cplusplus
interface IBDA_DiagnosticProperties;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_DRM_FWD_DEFINED__
#define __IBDA_DRM_FWD_DEFINED__
typedef interface IBDA_DRM IBDA_DRM;
#ifdef __cplusplus
interface IBDA_DRM;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_NameValueService_FWD_DEFINED__
#define __IBDA_NameValueService_FWD_DEFINED__
typedef interface IBDA_NameValueService IBDA_NameValueService;
#ifdef __cplusplus
interface IBDA_NameValueService;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_ConditionalAccessEx_FWD_DEFINED__
#define __IBDA_ConditionalAccessEx_FWD_DEFINED__
typedef interface IBDA_ConditionalAccessEx IBDA_ConditionalAccessEx;
#ifdef __cplusplus
interface IBDA_ConditionalAccessEx;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_ISDBConditionalAccess_FWD_DEFINED__
#define __IBDA_ISDBConditionalAccess_FWD_DEFINED__
typedef interface IBDA_ISDBConditionalAccess IBDA_ISDBConditionalAccess;
#ifdef __cplusplus
interface IBDA_ISDBConditionalAccess;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_EventingService_FWD_DEFINED__
#define __IBDA_EventingService_FWD_DEFINED__
typedef interface IBDA_EventingService IBDA_EventingService;
#ifdef __cplusplus
interface IBDA_EventingService;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_AUX_FWD_DEFINED__
#define __IBDA_AUX_FWD_DEFINED__
typedef interface IBDA_AUX IBDA_AUX;
#ifdef __cplusplus
interface IBDA_AUX;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_Encoder_FWD_DEFINED__
#define __IBDA_Encoder_FWD_DEFINED__
typedef interface IBDA_Encoder IBDA_Encoder;
#ifdef __cplusplus
interface IBDA_Encoder;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_FDC_FWD_DEFINED__
#define __IBDA_FDC_FWD_DEFINED__
typedef interface IBDA_FDC IBDA_FDC;
#ifdef __cplusplus
interface IBDA_FDC;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_GuideDataDeliveryService_FWD_DEFINED__
#define __IBDA_GuideDataDeliveryService_FWD_DEFINED__
typedef interface IBDA_GuideDataDeliveryService IBDA_GuideDataDeliveryService;
#ifdef __cplusplus
interface IBDA_GuideDataDeliveryService;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_DRMService_FWD_DEFINED__
#define __IBDA_DRMService_FWD_DEFINED__
typedef interface IBDA_DRMService IBDA_DRMService;
#ifdef __cplusplus
interface IBDA_DRMService;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_WMDRMSession_FWD_DEFINED__
#define __IBDA_WMDRMSession_FWD_DEFINED__
typedef interface IBDA_WMDRMSession IBDA_WMDRMSession;
#ifdef __cplusplus
interface IBDA_WMDRMSession;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_WMDRMTuner_FWD_DEFINED__
#define __IBDA_WMDRMTuner_FWD_DEFINED__
typedef interface IBDA_WMDRMTuner IBDA_WMDRMTuner;
#ifdef __cplusplus
interface IBDA_WMDRMTuner;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_DRIDRMService_FWD_DEFINED__
#define __IBDA_DRIDRMService_FWD_DEFINED__
typedef interface IBDA_DRIDRMService IBDA_DRIDRMService;
#ifdef __cplusplus
interface IBDA_DRIDRMService;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_DRIWMDRMSession_FWD_DEFINED__
#define __IBDA_DRIWMDRMSession_FWD_DEFINED__
typedef interface IBDA_DRIWMDRMSession IBDA_DRIWMDRMSession;
#ifdef __cplusplus
interface IBDA_DRIWMDRMSession;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_MUX_FWD_DEFINED__
#define __IBDA_MUX_FWD_DEFINED__
typedef interface IBDA_MUX IBDA_MUX;
#ifdef __cplusplus
interface IBDA_MUX;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_TransportStreamSelector_FWD_DEFINED__
#define __IBDA_TransportStreamSelector_FWD_DEFINED__
typedef interface IBDA_TransportStreamSelector IBDA_TransportStreamSelector;
#ifdef __cplusplus
interface IBDA_TransportStreamSelector;
#endif /* __cplusplus */
#endif

#ifndef __IBDA_UserActivityService_FWD_DEFINED__
#define __IBDA_UserActivityService_FWD_DEFINED__
typedef interface IBDA_UserActivityService IBDA_UserActivityService;
#ifdef __cplusplus
interface IBDA_UserActivityService;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <unknwn.h>
#include <strmif.h>
#include <bdatypes.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef enum EntitlementType {
    Entitled = 0,
    NotEntitled = 1,
    TechnicalFailure = 2
} EntitlementType;
typedef enum BDA_DrmPairingError {
    BDA_DrmPairing_Succeeded = 0,
    BDA_DrmPairing_HardwareFailure = 1,
    BDA_DrmPairing_NeedRevocationData = 2,
    BDA_DrmPairing_NeedIndiv = 3,
    BDA_DrmPairing_Other = 4,
    BDA_DrmPairing_DrmInitFailed = 5,
    BDA_DrmPairing_DrmNotPaired = 6,
    BDA_DrmPairing_DrmRePairSoon = 7,
    BDA_DrmPairing_Aborted = 8,
    BDA_DrmPairing_NeedSDKUpdate = 9
} BDA_DrmPairingError;
typedef enum UICloseReasonType {
    NotReady = 0,
    UserClosed = 1,
    SystemClosed = 2,
    DeviceClosed = 3,
    ErrorClosed = 4
} UICloseReasonType;
typedef enum LocationCodeSchemeType {
    SCTE_18 = 0
} LocationCodeSchemeType;
typedef struct SmartCardApplication {
    ApplicationTypeType ApplicationType;
    USHORT ApplicationVersion;
    BSTR pbstrApplicationName;
    BSTR pbstrApplicationURL;
} SmartCardApplication;
typedef struct EALocationCodeType {
    LocationCodeSchemeType LocationCodeScheme;
    BYTE state_code;
    BYTE county_subdivision;
    WORD county_code;
} EALocationCodeType;
typedef enum SmartCardStatusType {
    CardInserted = 0,
    CardRemoved = 1,
    CardError = 2,
    CardDataChanged = 3,
    CardFirmwareUpgrade = 4
} SmartCardStatusType;
typedef enum SmartCardAssociationType {
    NotAssociated = 0,
    Associated = 1,
    AssociationUnknown = 2
} SmartCardAssociationType;
/*****************************************************************************
 * IBDA_NetworkProvider interface
 */
#ifndef __IBDA_NetworkProvider_INTERFACE_DEFINED__
#define __IBDA_NetworkProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_NetworkProvider, 0xfd501041, 0x8ebe, 0x11ce, 0x81,0x83, 0x00,0xaa,0x00,0x57,0x7d,0xa2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fd501041-8ebe-11ce-8183-00aa00577da2")
IBDA_NetworkProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE PutSignalSource(
        ULONG ulSignalSource) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSignalSource(
        ULONG *pulSignalSource) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNetworkType(
        GUID *pguidNetworkType) = 0;

    virtual HRESULT STDMETHODCALLTYPE PutTuningSpace(
        REFGUID guidTuningSpace) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTuningSpace(
        GUID *pguidTuingSpace) = 0;

    virtual HRESULT STDMETHODCALLTYPE RegisterDeviceFilter(
        IUnknown *pUnkFilterControl,
        ULONG *ppvRegisitrationContext) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnRegisterDeviceFilter(
        ULONG pvRegistrationContext) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_NetworkProvider, 0xfd501041, 0x8ebe, 0x11ce, 0x81,0x83, 0x00,0xaa,0x00,0x57,0x7d,0xa2)
#endif
#else
typedef struct IBDA_NetworkProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_NetworkProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_NetworkProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_NetworkProvider *This);

    /*** IBDA_NetworkProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *PutSignalSource)(
        IBDA_NetworkProvider *This,
        ULONG ulSignalSource);

    HRESULT (STDMETHODCALLTYPE *GetSignalSource)(
        IBDA_NetworkProvider *This,
        ULONG *pulSignalSource);

    HRESULT (STDMETHODCALLTYPE *GetNetworkType)(
        IBDA_NetworkProvider *This,
        GUID *pguidNetworkType);

    HRESULT (STDMETHODCALLTYPE *PutTuningSpace)(
        IBDA_NetworkProvider *This,
        REFGUID guidTuningSpace);

    HRESULT (STDMETHODCALLTYPE *GetTuningSpace)(
        IBDA_NetworkProvider *This,
        GUID *pguidTuingSpace);

    HRESULT (STDMETHODCALLTYPE *RegisterDeviceFilter)(
        IBDA_NetworkProvider *This,
        IUnknown *pUnkFilterControl,
        ULONG *ppvRegisitrationContext);

    HRESULT (STDMETHODCALLTYPE *UnRegisterDeviceFilter)(
        IBDA_NetworkProvider *This,
        ULONG pvRegistrationContext);

    END_INTERFACE
} IBDA_NetworkProviderVtbl;

interface IBDA_NetworkProvider {
    CONST_VTBL IBDA_NetworkProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_NetworkProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_NetworkProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_NetworkProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_NetworkProvider methods ***/
#define IBDA_NetworkProvider_PutSignalSource(This,ulSignalSource) (This)->lpVtbl->PutSignalSource(This,ulSignalSource)
#define IBDA_NetworkProvider_GetSignalSource(This,pulSignalSource) (This)->lpVtbl->GetSignalSource(This,pulSignalSource)
#define IBDA_NetworkProvider_GetNetworkType(This,pguidNetworkType) (This)->lpVtbl->GetNetworkType(This,pguidNetworkType)
#define IBDA_NetworkProvider_PutTuningSpace(This,guidTuningSpace) (This)->lpVtbl->PutTuningSpace(This,guidTuningSpace)
#define IBDA_NetworkProvider_GetTuningSpace(This,pguidTuingSpace) (This)->lpVtbl->GetTuningSpace(This,pguidTuingSpace)
#define IBDA_NetworkProvider_RegisterDeviceFilter(This,pUnkFilterControl,ppvRegisitrationContext) (This)->lpVtbl->RegisterDeviceFilter(This,pUnkFilterControl,ppvRegisitrationContext)
#define IBDA_NetworkProvider_UnRegisterDeviceFilter(This,pvRegistrationContext) (This)->lpVtbl->UnRegisterDeviceFilter(This,pvRegistrationContext)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_NetworkProvider_QueryInterface(IBDA_NetworkProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_NetworkProvider_AddRef(IBDA_NetworkProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_NetworkProvider_Release(IBDA_NetworkProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_NetworkProvider methods ***/
static FORCEINLINE HRESULT IBDA_NetworkProvider_PutSignalSource(IBDA_NetworkProvider* This,ULONG ulSignalSource) {
    return This->lpVtbl->PutSignalSource(This,ulSignalSource);
}
static FORCEINLINE HRESULT IBDA_NetworkProvider_GetSignalSource(IBDA_NetworkProvider* This,ULONG *pulSignalSource) {
    return This->lpVtbl->GetSignalSource(This,pulSignalSource);
}
static FORCEINLINE HRESULT IBDA_NetworkProvider_GetNetworkType(IBDA_NetworkProvider* This,GUID *pguidNetworkType) {
    return This->lpVtbl->GetNetworkType(This,pguidNetworkType);
}
static FORCEINLINE HRESULT IBDA_NetworkProvider_PutTuningSpace(IBDA_NetworkProvider* This,REFGUID guidTuningSpace) {
    return This->lpVtbl->PutTuningSpace(This,guidTuningSpace);
}
static FORCEINLINE HRESULT IBDA_NetworkProvider_GetTuningSpace(IBDA_NetworkProvider* This,GUID *pguidTuingSpace) {
    return This->lpVtbl->GetTuningSpace(This,pguidTuingSpace);
}
static FORCEINLINE HRESULT IBDA_NetworkProvider_RegisterDeviceFilter(IBDA_NetworkProvider* This,IUnknown *pUnkFilterControl,ULONG *ppvRegisitrationContext) {
    return This->lpVtbl->RegisterDeviceFilter(This,pUnkFilterControl,ppvRegisitrationContext);
}
static FORCEINLINE HRESULT IBDA_NetworkProvider_UnRegisterDeviceFilter(IBDA_NetworkProvider* This,ULONG pvRegistrationContext) {
    return This->lpVtbl->UnRegisterDeviceFilter(This,pvRegistrationContext);
}
#endif
#endif

#endif


#endif  /* __IBDA_NetworkProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_EthernetFilter interface
 */
#ifndef __IBDA_EthernetFilter_INTERFACE_DEFINED__
#define __IBDA_EthernetFilter_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_EthernetFilter, 0x71985f43, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("71985f43-1ca1-11d3-9cc8-00c04f7971e0")
IBDA_EthernetFilter : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetMulticastListSize(
        ULONG *pulcbAddresses) = 0;

    virtual HRESULT STDMETHODCALLTYPE PutMulticastList(
        ULONG ulcbAddresses,
        BYTE pAddressList[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMulticastList(
        ULONG *pulcbAddresses,
        BYTE pAddressList[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE PutMulticastMode(
        ULONG ulModeMask) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMulticastMode(
        ULONG *pulModeMask) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_EthernetFilter, 0x71985f43, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0)
#endif
#else
typedef struct IBDA_EthernetFilterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_EthernetFilter *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_EthernetFilter *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_EthernetFilter *This);

    /*** IBDA_EthernetFilter methods ***/
    HRESULT (STDMETHODCALLTYPE *GetMulticastListSize)(
        IBDA_EthernetFilter *This,
        ULONG *pulcbAddresses);

    HRESULT (STDMETHODCALLTYPE *PutMulticastList)(
        IBDA_EthernetFilter *This,
        ULONG ulcbAddresses,
        BYTE pAddressList[]);

    HRESULT (STDMETHODCALLTYPE *GetMulticastList)(
        IBDA_EthernetFilter *This,
        ULONG *pulcbAddresses,
        BYTE pAddressList[]);

    HRESULT (STDMETHODCALLTYPE *PutMulticastMode)(
        IBDA_EthernetFilter *This,
        ULONG ulModeMask);

    HRESULT (STDMETHODCALLTYPE *GetMulticastMode)(
        IBDA_EthernetFilter *This,
        ULONG *pulModeMask);

    END_INTERFACE
} IBDA_EthernetFilterVtbl;

interface IBDA_EthernetFilter {
    CONST_VTBL IBDA_EthernetFilterVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_EthernetFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_EthernetFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_EthernetFilter_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_EthernetFilter methods ***/
#define IBDA_EthernetFilter_GetMulticastListSize(This,pulcbAddresses) (This)->lpVtbl->GetMulticastListSize(This,pulcbAddresses)
#define IBDA_EthernetFilter_PutMulticastList(This,ulcbAddresses,pAddressList) (This)->lpVtbl->PutMulticastList(This,ulcbAddresses,pAddressList)
#define IBDA_EthernetFilter_GetMulticastList(This,pulcbAddresses,pAddressList) (This)->lpVtbl->GetMulticastList(This,pulcbAddresses,pAddressList)
#define IBDA_EthernetFilter_PutMulticastMode(This,ulModeMask) (This)->lpVtbl->PutMulticastMode(This,ulModeMask)
#define IBDA_EthernetFilter_GetMulticastMode(This,pulModeMask) (This)->lpVtbl->GetMulticastMode(This,pulModeMask)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_EthernetFilter_QueryInterface(IBDA_EthernetFilter* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_EthernetFilter_AddRef(IBDA_EthernetFilter* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_EthernetFilter_Release(IBDA_EthernetFilter* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_EthernetFilter methods ***/
static FORCEINLINE HRESULT IBDA_EthernetFilter_GetMulticastListSize(IBDA_EthernetFilter* This,ULONG *pulcbAddresses) {
    return This->lpVtbl->GetMulticastListSize(This,pulcbAddresses);
}
static FORCEINLINE HRESULT IBDA_EthernetFilter_PutMulticastList(IBDA_EthernetFilter* This,ULONG ulcbAddresses,BYTE pAddressList[]) {
    return This->lpVtbl->PutMulticastList(This,ulcbAddresses,pAddressList);
}
static FORCEINLINE HRESULT IBDA_EthernetFilter_GetMulticastList(IBDA_EthernetFilter* This,ULONG *pulcbAddresses,BYTE pAddressList[]) {
    return This->lpVtbl->GetMulticastList(This,pulcbAddresses,pAddressList);
}
static FORCEINLINE HRESULT IBDA_EthernetFilter_PutMulticastMode(IBDA_EthernetFilter* This,ULONG ulModeMask) {
    return This->lpVtbl->PutMulticastMode(This,ulModeMask);
}
static FORCEINLINE HRESULT IBDA_EthernetFilter_GetMulticastMode(IBDA_EthernetFilter* This,ULONG *pulModeMask) {
    return This->lpVtbl->GetMulticastMode(This,pulModeMask);
}
#endif
#endif

#endif


#endif  /* __IBDA_EthernetFilter_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_IPV4Filter interface
 */
#ifndef __IBDA_IPV4Filter_INTERFACE_DEFINED__
#define __IBDA_IPV4Filter_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_IPV4Filter, 0x71985f44, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("71985f44-1ca1-11d3-9cc8-00c04f7971e0")
IBDA_IPV4Filter : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetMulticastListSize(
        ULONG *pulcbAddresses) = 0;

    virtual HRESULT STDMETHODCALLTYPE PutMulticastList(
        ULONG ulcbAddresses,
        BYTE pAddressList[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMulticastList(
        ULONG *pulcbAddresses,
        BYTE pAddressList[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE PutMulticastMode(
        ULONG ulModeMask) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMulticastMode(
        ULONG *pulModeMask) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_IPV4Filter, 0x71985f44, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0)
#endif
#else
typedef struct IBDA_IPV4FilterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_IPV4Filter *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_IPV4Filter *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_IPV4Filter *This);

    /*** IBDA_IPV4Filter methods ***/
    HRESULT (STDMETHODCALLTYPE *GetMulticastListSize)(
        IBDA_IPV4Filter *This,
        ULONG *pulcbAddresses);

    HRESULT (STDMETHODCALLTYPE *PutMulticastList)(
        IBDA_IPV4Filter *This,
        ULONG ulcbAddresses,
        BYTE pAddressList[]);

    HRESULT (STDMETHODCALLTYPE *GetMulticastList)(
        IBDA_IPV4Filter *This,
        ULONG *pulcbAddresses,
        BYTE pAddressList[]);

    HRESULT (STDMETHODCALLTYPE *PutMulticastMode)(
        IBDA_IPV4Filter *This,
        ULONG ulModeMask);

    HRESULT (STDMETHODCALLTYPE *GetMulticastMode)(
        IBDA_IPV4Filter *This,
        ULONG *pulModeMask);

    END_INTERFACE
} IBDA_IPV4FilterVtbl;

interface IBDA_IPV4Filter {
    CONST_VTBL IBDA_IPV4FilterVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_IPV4Filter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_IPV4Filter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_IPV4Filter_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_IPV4Filter methods ***/
#define IBDA_IPV4Filter_GetMulticastListSize(This,pulcbAddresses) (This)->lpVtbl->GetMulticastListSize(This,pulcbAddresses)
#define IBDA_IPV4Filter_PutMulticastList(This,ulcbAddresses,pAddressList) (This)->lpVtbl->PutMulticastList(This,ulcbAddresses,pAddressList)
#define IBDA_IPV4Filter_GetMulticastList(This,pulcbAddresses,pAddressList) (This)->lpVtbl->GetMulticastList(This,pulcbAddresses,pAddressList)
#define IBDA_IPV4Filter_PutMulticastMode(This,ulModeMask) (This)->lpVtbl->PutMulticastMode(This,ulModeMask)
#define IBDA_IPV4Filter_GetMulticastMode(This,pulModeMask) (This)->lpVtbl->GetMulticastMode(This,pulModeMask)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_IPV4Filter_QueryInterface(IBDA_IPV4Filter* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_IPV4Filter_AddRef(IBDA_IPV4Filter* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_IPV4Filter_Release(IBDA_IPV4Filter* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_IPV4Filter methods ***/
static FORCEINLINE HRESULT IBDA_IPV4Filter_GetMulticastListSize(IBDA_IPV4Filter* This,ULONG *pulcbAddresses) {
    return This->lpVtbl->GetMulticastListSize(This,pulcbAddresses);
}
static FORCEINLINE HRESULT IBDA_IPV4Filter_PutMulticastList(IBDA_IPV4Filter* This,ULONG ulcbAddresses,BYTE pAddressList[]) {
    return This->lpVtbl->PutMulticastList(This,ulcbAddresses,pAddressList);
}
static FORCEINLINE HRESULT IBDA_IPV4Filter_GetMulticastList(IBDA_IPV4Filter* This,ULONG *pulcbAddresses,BYTE pAddressList[]) {
    return This->lpVtbl->GetMulticastList(This,pulcbAddresses,pAddressList);
}
static FORCEINLINE HRESULT IBDA_IPV4Filter_PutMulticastMode(IBDA_IPV4Filter* This,ULONG ulModeMask) {
    return This->lpVtbl->PutMulticastMode(This,ulModeMask);
}
static FORCEINLINE HRESULT IBDA_IPV4Filter_GetMulticastMode(IBDA_IPV4Filter* This,ULONG *pulModeMask) {
    return This->lpVtbl->GetMulticastMode(This,pulModeMask);
}
#endif
#endif

#endif


#endif  /* __IBDA_IPV4Filter_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_IPV6Filter interface
 */
#ifndef __IBDA_IPV6Filter_INTERFACE_DEFINED__
#define __IBDA_IPV6Filter_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_IPV6Filter, 0xe1785a74, 0x2a23, 0x4fb3, 0x92,0x45, 0xa8,0xf8,0x80,0x17,0xef,0x33);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e1785a74-2a23-4fb3-9245-a8f88017ef33")
IBDA_IPV6Filter : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetMulticastListSize(
        ULONG *pulcbAddresses) = 0;

    virtual HRESULT STDMETHODCALLTYPE PutMulticastList(
        ULONG ulcbAddresses,
        BYTE pAddressList[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMulticastList(
        ULONG *pulcbAddresses,
        BYTE pAddressList[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE PutMulticastMode(
        ULONG ulModeMask) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMulticastMode(
        ULONG *pulModeMask) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_IPV6Filter, 0xe1785a74, 0x2a23, 0x4fb3, 0x92,0x45, 0xa8,0xf8,0x80,0x17,0xef,0x33)
#endif
#else
typedef struct IBDA_IPV6FilterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_IPV6Filter *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_IPV6Filter *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_IPV6Filter *This);

    /*** IBDA_IPV6Filter methods ***/
    HRESULT (STDMETHODCALLTYPE *GetMulticastListSize)(
        IBDA_IPV6Filter *This,
        ULONG *pulcbAddresses);

    HRESULT (STDMETHODCALLTYPE *PutMulticastList)(
        IBDA_IPV6Filter *This,
        ULONG ulcbAddresses,
        BYTE pAddressList[]);

    HRESULT (STDMETHODCALLTYPE *GetMulticastList)(
        IBDA_IPV6Filter *This,
        ULONG *pulcbAddresses,
        BYTE pAddressList[]);

    HRESULT (STDMETHODCALLTYPE *PutMulticastMode)(
        IBDA_IPV6Filter *This,
        ULONG ulModeMask);

    HRESULT (STDMETHODCALLTYPE *GetMulticastMode)(
        IBDA_IPV6Filter *This,
        ULONG *pulModeMask);

    END_INTERFACE
} IBDA_IPV6FilterVtbl;

interface IBDA_IPV6Filter {
    CONST_VTBL IBDA_IPV6FilterVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_IPV6Filter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_IPV6Filter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_IPV6Filter_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_IPV6Filter methods ***/
#define IBDA_IPV6Filter_GetMulticastListSize(This,pulcbAddresses) (This)->lpVtbl->GetMulticastListSize(This,pulcbAddresses)
#define IBDA_IPV6Filter_PutMulticastList(This,ulcbAddresses,pAddressList) (This)->lpVtbl->PutMulticastList(This,ulcbAddresses,pAddressList)
#define IBDA_IPV6Filter_GetMulticastList(This,pulcbAddresses,pAddressList) (This)->lpVtbl->GetMulticastList(This,pulcbAddresses,pAddressList)
#define IBDA_IPV6Filter_PutMulticastMode(This,ulModeMask) (This)->lpVtbl->PutMulticastMode(This,ulModeMask)
#define IBDA_IPV6Filter_GetMulticastMode(This,pulModeMask) (This)->lpVtbl->GetMulticastMode(This,pulModeMask)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_IPV6Filter_QueryInterface(IBDA_IPV6Filter* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_IPV6Filter_AddRef(IBDA_IPV6Filter* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_IPV6Filter_Release(IBDA_IPV6Filter* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_IPV6Filter methods ***/
static FORCEINLINE HRESULT IBDA_IPV6Filter_GetMulticastListSize(IBDA_IPV6Filter* This,ULONG *pulcbAddresses) {
    return This->lpVtbl->GetMulticastListSize(This,pulcbAddresses);
}
static FORCEINLINE HRESULT IBDA_IPV6Filter_PutMulticastList(IBDA_IPV6Filter* This,ULONG ulcbAddresses,BYTE pAddressList[]) {
    return This->lpVtbl->PutMulticastList(This,ulcbAddresses,pAddressList);
}
static FORCEINLINE HRESULT IBDA_IPV6Filter_GetMulticastList(IBDA_IPV6Filter* This,ULONG *pulcbAddresses,BYTE pAddressList[]) {
    return This->lpVtbl->GetMulticastList(This,pulcbAddresses,pAddressList);
}
static FORCEINLINE HRESULT IBDA_IPV6Filter_PutMulticastMode(IBDA_IPV6Filter* This,ULONG ulModeMask) {
    return This->lpVtbl->PutMulticastMode(This,ulModeMask);
}
static FORCEINLINE HRESULT IBDA_IPV6Filter_GetMulticastMode(IBDA_IPV6Filter* This,ULONG *pulModeMask) {
    return This->lpVtbl->GetMulticastMode(This,pulModeMask);
}
#endif
#endif

#endif


#endif  /* __IBDA_IPV6Filter_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_DeviceControl interface
 */
#ifndef __IBDA_DeviceControl_INTERFACE_DEFINED__
#define __IBDA_DeviceControl_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_DeviceControl, 0xfd0a5af3, 0xb41d, 0x11d2, 0x9c,0x95, 0x00,0xc0,0x4f,0x79,0x71,0xe0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fd0a5af3-b41d-11d2-9c95-00c04f7971e0")
IBDA_DeviceControl : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE StartChanges(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE CheckChanges(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE CommitChanges(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetChangeState(
        ULONG *pState) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_DeviceControl, 0xfd0a5af3, 0xb41d, 0x11d2, 0x9c,0x95, 0x00,0xc0,0x4f,0x79,0x71,0xe0)
#endif
#else
typedef struct IBDA_DeviceControlVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_DeviceControl *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_DeviceControl *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_DeviceControl *This);

    /*** IBDA_DeviceControl methods ***/
    HRESULT (STDMETHODCALLTYPE *StartChanges)(
        IBDA_DeviceControl *This);

    HRESULT (STDMETHODCALLTYPE *CheckChanges)(
        IBDA_DeviceControl *This);

    HRESULT (STDMETHODCALLTYPE *CommitChanges)(
        IBDA_DeviceControl *This);

    HRESULT (STDMETHODCALLTYPE *GetChangeState)(
        IBDA_DeviceControl *This,
        ULONG *pState);

    END_INTERFACE
} IBDA_DeviceControlVtbl;

interface IBDA_DeviceControl {
    CONST_VTBL IBDA_DeviceControlVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_DeviceControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_DeviceControl_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_DeviceControl_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_DeviceControl methods ***/
#define IBDA_DeviceControl_StartChanges(This) (This)->lpVtbl->StartChanges(This)
#define IBDA_DeviceControl_CheckChanges(This) (This)->lpVtbl->CheckChanges(This)
#define IBDA_DeviceControl_CommitChanges(This) (This)->lpVtbl->CommitChanges(This)
#define IBDA_DeviceControl_GetChangeState(This,pState) (This)->lpVtbl->GetChangeState(This,pState)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_DeviceControl_QueryInterface(IBDA_DeviceControl* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_DeviceControl_AddRef(IBDA_DeviceControl* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_DeviceControl_Release(IBDA_DeviceControl* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_DeviceControl methods ***/
static FORCEINLINE HRESULT IBDA_DeviceControl_StartChanges(IBDA_DeviceControl* This) {
    return This->lpVtbl->StartChanges(This);
}
static FORCEINLINE HRESULT IBDA_DeviceControl_CheckChanges(IBDA_DeviceControl* This) {
    return This->lpVtbl->CheckChanges(This);
}
static FORCEINLINE HRESULT IBDA_DeviceControl_CommitChanges(IBDA_DeviceControl* This) {
    return This->lpVtbl->CommitChanges(This);
}
static FORCEINLINE HRESULT IBDA_DeviceControl_GetChangeState(IBDA_DeviceControl* This,ULONG *pState) {
    return This->lpVtbl->GetChangeState(This,pState);
}
#endif
#endif

#endif


#endif  /* __IBDA_DeviceControl_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_PinControl interface
 */
#ifndef __IBDA_PinControl_INTERFACE_DEFINED__
#define __IBDA_PinControl_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_PinControl, 0x0ded49d5, 0xa8b7, 0x4d5d, 0x97,0xa1, 0x12,0xb0,0xc1,0x95,0x87,0x4d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0ded49d5-a8b7-4d5d-97a1-12b0c195874d")
IBDA_PinControl : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPinID(
        ULONG *pulPinID) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPinType(
        ULONG *pulPinType) = 0;

    virtual HRESULT STDMETHODCALLTYPE RegistrationContext(
        ULONG *pulRegistrationCtx) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_PinControl, 0x0ded49d5, 0xa8b7, 0x4d5d, 0x97,0xa1, 0x12,0xb0,0xc1,0x95,0x87,0x4d)
#endif
#else
typedef struct IBDA_PinControlVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_PinControl *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_PinControl *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_PinControl *This);

    /*** IBDA_PinControl methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPinID)(
        IBDA_PinControl *This,
        ULONG *pulPinID);

    HRESULT (STDMETHODCALLTYPE *GetPinType)(
        IBDA_PinControl *This,
        ULONG *pulPinType);

    HRESULT (STDMETHODCALLTYPE *RegistrationContext)(
        IBDA_PinControl *This,
        ULONG *pulRegistrationCtx);

    END_INTERFACE
} IBDA_PinControlVtbl;

interface IBDA_PinControl {
    CONST_VTBL IBDA_PinControlVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_PinControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_PinControl_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_PinControl_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_PinControl methods ***/
#define IBDA_PinControl_GetPinID(This,pulPinID) (This)->lpVtbl->GetPinID(This,pulPinID)
#define IBDA_PinControl_GetPinType(This,pulPinType) (This)->lpVtbl->GetPinType(This,pulPinType)
#define IBDA_PinControl_RegistrationContext(This,pulRegistrationCtx) (This)->lpVtbl->RegistrationContext(This,pulRegistrationCtx)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_PinControl_QueryInterface(IBDA_PinControl* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_PinControl_AddRef(IBDA_PinControl* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_PinControl_Release(IBDA_PinControl* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_PinControl methods ***/
static FORCEINLINE HRESULT IBDA_PinControl_GetPinID(IBDA_PinControl* This,ULONG *pulPinID) {
    return This->lpVtbl->GetPinID(This,pulPinID);
}
static FORCEINLINE HRESULT IBDA_PinControl_GetPinType(IBDA_PinControl* This,ULONG *pulPinType) {
    return This->lpVtbl->GetPinType(This,pulPinType);
}
static FORCEINLINE HRESULT IBDA_PinControl_RegistrationContext(IBDA_PinControl* This,ULONG *pulRegistrationCtx) {
    return This->lpVtbl->RegistrationContext(This,pulRegistrationCtx);
}
#endif
#endif

#endif


#endif  /* __IBDA_PinControl_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_SignalProperties interface
 */
#ifndef __IBDA_SignalProperties_INTERFACE_DEFINED__
#define __IBDA_SignalProperties_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_SignalProperties, 0xd2f1644b, 0xb409, 0x11d2, 0xbc,0x69, 0x00,0xa0,0xc9,0xee,0x9e,0x16);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d2f1644b-b409-11d2-bc69-00a0c9ee9e16")
IBDA_SignalProperties : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE PutNetworkType(
        REFGUID guidNetworkType) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNetworkType(
        GUID *pguidNetworkType) = 0;

    virtual HRESULT STDMETHODCALLTYPE PutSignalSource(
        ULONG ulSignalSource) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSignalSource(
        ULONG *pulSignalSource) = 0;

    virtual HRESULT STDMETHODCALLTYPE PutTuningSpace(
        REFGUID guidTuningSpace) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTuningSpace(
        GUID *pguidTuingSpace) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_SignalProperties, 0xd2f1644b, 0xb409, 0x11d2, 0xbc,0x69, 0x00,0xa0,0xc9,0xee,0x9e,0x16)
#endif
#else
typedef struct IBDA_SignalPropertiesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_SignalProperties *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_SignalProperties *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_SignalProperties *This);

    /*** IBDA_SignalProperties methods ***/
    HRESULT (STDMETHODCALLTYPE *PutNetworkType)(
        IBDA_SignalProperties *This,
        REFGUID guidNetworkType);

    HRESULT (STDMETHODCALLTYPE *GetNetworkType)(
        IBDA_SignalProperties *This,
        GUID *pguidNetworkType);

    HRESULT (STDMETHODCALLTYPE *PutSignalSource)(
        IBDA_SignalProperties *This,
        ULONG ulSignalSource);

    HRESULT (STDMETHODCALLTYPE *GetSignalSource)(
        IBDA_SignalProperties *This,
        ULONG *pulSignalSource);

    HRESULT (STDMETHODCALLTYPE *PutTuningSpace)(
        IBDA_SignalProperties *This,
        REFGUID guidTuningSpace);

    HRESULT (STDMETHODCALLTYPE *GetTuningSpace)(
        IBDA_SignalProperties *This,
        GUID *pguidTuingSpace);

    END_INTERFACE
} IBDA_SignalPropertiesVtbl;

interface IBDA_SignalProperties {
    CONST_VTBL IBDA_SignalPropertiesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_SignalProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_SignalProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_SignalProperties_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_SignalProperties methods ***/
#define IBDA_SignalProperties_PutNetworkType(This,guidNetworkType) (This)->lpVtbl->PutNetworkType(This,guidNetworkType)
#define IBDA_SignalProperties_GetNetworkType(This,pguidNetworkType) (This)->lpVtbl->GetNetworkType(This,pguidNetworkType)
#define IBDA_SignalProperties_PutSignalSource(This,ulSignalSource) (This)->lpVtbl->PutSignalSource(This,ulSignalSource)
#define IBDA_SignalProperties_GetSignalSource(This,pulSignalSource) (This)->lpVtbl->GetSignalSource(This,pulSignalSource)
#define IBDA_SignalProperties_PutTuningSpace(This,guidTuningSpace) (This)->lpVtbl->PutTuningSpace(This,guidTuningSpace)
#define IBDA_SignalProperties_GetTuningSpace(This,pguidTuingSpace) (This)->lpVtbl->GetTuningSpace(This,pguidTuingSpace)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_SignalProperties_QueryInterface(IBDA_SignalProperties* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_SignalProperties_AddRef(IBDA_SignalProperties* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_SignalProperties_Release(IBDA_SignalProperties* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_SignalProperties methods ***/
static FORCEINLINE HRESULT IBDA_SignalProperties_PutNetworkType(IBDA_SignalProperties* This,REFGUID guidNetworkType) {
    return This->lpVtbl->PutNetworkType(This,guidNetworkType);
}
static FORCEINLINE HRESULT IBDA_SignalProperties_GetNetworkType(IBDA_SignalProperties* This,GUID *pguidNetworkType) {
    return This->lpVtbl->GetNetworkType(This,pguidNetworkType);
}
static FORCEINLINE HRESULT IBDA_SignalProperties_PutSignalSource(IBDA_SignalProperties* This,ULONG ulSignalSource) {
    return This->lpVtbl->PutSignalSource(This,ulSignalSource);
}
static FORCEINLINE HRESULT IBDA_SignalProperties_GetSignalSource(IBDA_SignalProperties* This,ULONG *pulSignalSource) {
    return This->lpVtbl->GetSignalSource(This,pulSignalSource);
}
static FORCEINLINE HRESULT IBDA_SignalProperties_PutTuningSpace(IBDA_SignalProperties* This,REFGUID guidTuningSpace) {
    return This->lpVtbl->PutTuningSpace(This,guidTuningSpace);
}
static FORCEINLINE HRESULT IBDA_SignalProperties_GetTuningSpace(IBDA_SignalProperties* This,GUID *pguidTuingSpace) {
    return This->lpVtbl->GetTuningSpace(This,pguidTuingSpace);
}
#endif
#endif

#endif


#endif  /* __IBDA_SignalProperties_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_SignalStatistics interface
 */
#ifndef __IBDA_SignalStatistics_INTERFACE_DEFINED__
#define __IBDA_SignalStatistics_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_SignalStatistics, 0x1347d106, 0xcf3a, 0x428a, 0xa5,0xcb, 0xac,0x0d,0x9a,0x2a,0x43,0x38);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1347d106-cf3a-428a-a5cb-ac0d9a2a4338")
IBDA_SignalStatistics : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE put_SignalStrength(
        LONG lDbStrength) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SignalStrength(
        LONG *plDbStrength) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SignalQuality(
        LONG lPercentQuality) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SignalQuality(
        LONG *plPercentQuality) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SignalPresent(
        BOOLEAN fPresent) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SignalPresent(
        BOOLEAN *pfPresent) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SignalLocked(
        BOOLEAN fLocked) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SignalLocked(
        BOOLEAN *pfLocked) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SampleTime(
        LONG lmsSampleTime) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SampleTime(
        LONG *plmsSampleTime) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_SignalStatistics, 0x1347d106, 0xcf3a, 0x428a, 0xa5,0xcb, 0xac,0x0d,0x9a,0x2a,0x43,0x38)
#endif
#else
typedef struct IBDA_SignalStatisticsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_SignalStatistics *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_SignalStatistics *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_SignalStatistics *This);

    /*** IBDA_SignalStatistics methods ***/
    HRESULT (STDMETHODCALLTYPE *put_SignalStrength)(
        IBDA_SignalStatistics *This,
        LONG lDbStrength);

    HRESULT (STDMETHODCALLTYPE *get_SignalStrength)(
        IBDA_SignalStatistics *This,
        LONG *plDbStrength);

    HRESULT (STDMETHODCALLTYPE *put_SignalQuality)(
        IBDA_SignalStatistics *This,
        LONG lPercentQuality);

    HRESULT (STDMETHODCALLTYPE *get_SignalQuality)(
        IBDA_SignalStatistics *This,
        LONG *plPercentQuality);

    HRESULT (STDMETHODCALLTYPE *put_SignalPresent)(
        IBDA_SignalStatistics *This,
        BOOLEAN fPresent);

    HRESULT (STDMETHODCALLTYPE *get_SignalPresent)(
        IBDA_SignalStatistics *This,
        BOOLEAN *pfPresent);

    HRESULT (STDMETHODCALLTYPE *put_SignalLocked)(
        IBDA_SignalStatistics *This,
        BOOLEAN fLocked);

    HRESULT (STDMETHODCALLTYPE *get_SignalLocked)(
        IBDA_SignalStatistics *This,
        BOOLEAN *pfLocked);

    HRESULT (STDMETHODCALLTYPE *put_SampleTime)(
        IBDA_SignalStatistics *This,
        LONG lmsSampleTime);

    HRESULT (STDMETHODCALLTYPE *get_SampleTime)(
        IBDA_SignalStatistics *This,
        LONG *plmsSampleTime);

    END_INTERFACE
} IBDA_SignalStatisticsVtbl;

interface IBDA_SignalStatistics {
    CONST_VTBL IBDA_SignalStatisticsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_SignalStatistics_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_SignalStatistics_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_SignalStatistics_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_SignalStatistics methods ***/
#define IBDA_SignalStatistics_put_SignalStrength(This,lDbStrength) (This)->lpVtbl->put_SignalStrength(This,lDbStrength)
#define IBDA_SignalStatistics_get_SignalStrength(This,plDbStrength) (This)->lpVtbl->get_SignalStrength(This,plDbStrength)
#define IBDA_SignalStatistics_put_SignalQuality(This,lPercentQuality) (This)->lpVtbl->put_SignalQuality(This,lPercentQuality)
#define IBDA_SignalStatistics_get_SignalQuality(This,plPercentQuality) (This)->lpVtbl->get_SignalQuality(This,plPercentQuality)
#define IBDA_SignalStatistics_put_SignalPresent(This,fPresent) (This)->lpVtbl->put_SignalPresent(This,fPresent)
#define IBDA_SignalStatistics_get_SignalPresent(This,pfPresent) (This)->lpVtbl->get_SignalPresent(This,pfPresent)
#define IBDA_SignalStatistics_put_SignalLocked(This,fLocked) (This)->lpVtbl->put_SignalLocked(This,fLocked)
#define IBDA_SignalStatistics_get_SignalLocked(This,pfLocked) (This)->lpVtbl->get_SignalLocked(This,pfLocked)
#define IBDA_SignalStatistics_put_SampleTime(This,lmsSampleTime) (This)->lpVtbl->put_SampleTime(This,lmsSampleTime)
#define IBDA_SignalStatistics_get_SampleTime(This,plmsSampleTime) (This)->lpVtbl->get_SampleTime(This,plmsSampleTime)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_SignalStatistics_QueryInterface(IBDA_SignalStatistics* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_SignalStatistics_AddRef(IBDA_SignalStatistics* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_SignalStatistics_Release(IBDA_SignalStatistics* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_SignalStatistics methods ***/
static FORCEINLINE HRESULT IBDA_SignalStatistics_put_SignalStrength(IBDA_SignalStatistics* This,LONG lDbStrength) {
    return This->lpVtbl->put_SignalStrength(This,lDbStrength);
}
static FORCEINLINE HRESULT IBDA_SignalStatistics_get_SignalStrength(IBDA_SignalStatistics* This,LONG *plDbStrength) {
    return This->lpVtbl->get_SignalStrength(This,plDbStrength);
}
static FORCEINLINE HRESULT IBDA_SignalStatistics_put_SignalQuality(IBDA_SignalStatistics* This,LONG lPercentQuality) {
    return This->lpVtbl->put_SignalQuality(This,lPercentQuality);
}
static FORCEINLINE HRESULT IBDA_SignalStatistics_get_SignalQuality(IBDA_SignalStatistics* This,LONG *plPercentQuality) {
    return This->lpVtbl->get_SignalQuality(This,plPercentQuality);
}
static FORCEINLINE HRESULT IBDA_SignalStatistics_put_SignalPresent(IBDA_SignalStatistics* This,BOOLEAN fPresent) {
    return This->lpVtbl->put_SignalPresent(This,fPresent);
}
static FORCEINLINE HRESULT IBDA_SignalStatistics_get_SignalPresent(IBDA_SignalStatistics* This,BOOLEAN *pfPresent) {
    return This->lpVtbl->get_SignalPresent(This,pfPresent);
}
static FORCEINLINE HRESULT IBDA_SignalStatistics_put_SignalLocked(IBDA_SignalStatistics* This,BOOLEAN fLocked) {
    return This->lpVtbl->put_SignalLocked(This,fLocked);
}
static FORCEINLINE HRESULT IBDA_SignalStatistics_get_SignalLocked(IBDA_SignalStatistics* This,BOOLEAN *pfLocked) {
    return This->lpVtbl->get_SignalLocked(This,pfLocked);
}
static FORCEINLINE HRESULT IBDA_SignalStatistics_put_SampleTime(IBDA_SignalStatistics* This,LONG lmsSampleTime) {
    return This->lpVtbl->put_SampleTime(This,lmsSampleTime);
}
static FORCEINLINE HRESULT IBDA_SignalStatistics_get_SampleTime(IBDA_SignalStatistics* This,LONG *plmsSampleTime) {
    return This->lpVtbl->get_SampleTime(This,plmsSampleTime);
}
#endif
#endif

#endif


#endif  /* __IBDA_SignalStatistics_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_Topology interface
 */
#ifndef __IBDA_Topology_INTERFACE_DEFINED__
#define __IBDA_Topology_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_Topology, 0x79b56888, 0x7fea, 0x4690, 0xb4,0x5d, 0x38,0xfd,0x3c,0x78,0x49,0xbe);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("79b56888-7fea-4690-b45d-38fd3c7849be")
IBDA_Topology : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetNodeTypes(
        ULONG *pulcNodeTypes,
        ULONG ulcNodeTypesMax,
        ULONG rgulNodeTypes[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNodeDescriptors(
        ULONG *ulcNodeDescriptors,
        ULONG ulcNodeDescriptorsMax,
        BDANODE_DESCRIPTOR rgNodeDescriptors[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNodeInterfaces(
        ULONG ulNodeType,
        ULONG *pulcInterfaces,
        ULONG ulcInterfacesMax,
        GUID rgguidInterfaces[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPinTypes(
        ULONG *pulcPinTypes,
        ULONG ulcPinTypesMax,
        ULONG rgulPinTypes[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTemplateConnections(
        ULONG *pulcConnections,
        ULONG ulcConnectionsMax,
        BDA_TEMPLATE_CONNECTION rgConnections[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePin(
        ULONG ulPinType,
        ULONG *pulPinId) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeletePin(
        ULONG ulPinId) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMediaType(
        ULONG ulPinId,
        AM_MEDIA_TYPE *pMediaType) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMedium(
        ULONG ulPinId,
        REGPINMEDIUM *pMedium) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateTopology(
        ULONG ulInputPinId,
        ULONG ulOutputPinId) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetControlNode(
        ULONG ulInputPinId,
        ULONG ulOutputPinId,
        ULONG ulNodeType,
        IUnknown **ppControlNode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_Topology, 0x79b56888, 0x7fea, 0x4690, 0xb4,0x5d, 0x38,0xfd,0x3c,0x78,0x49,0xbe)
#endif
#else
typedef struct IBDA_TopologyVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_Topology *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_Topology *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_Topology *This);

    /*** IBDA_Topology methods ***/
    HRESULT (STDMETHODCALLTYPE *GetNodeTypes)(
        IBDA_Topology *This,
        ULONG *pulcNodeTypes,
        ULONG ulcNodeTypesMax,
        ULONG rgulNodeTypes[]);

    HRESULT (STDMETHODCALLTYPE *GetNodeDescriptors)(
        IBDA_Topology *This,
        ULONG *ulcNodeDescriptors,
        ULONG ulcNodeDescriptorsMax,
        BDANODE_DESCRIPTOR rgNodeDescriptors[]);

    HRESULT (STDMETHODCALLTYPE *GetNodeInterfaces)(
        IBDA_Topology *This,
        ULONG ulNodeType,
        ULONG *pulcInterfaces,
        ULONG ulcInterfacesMax,
        GUID rgguidInterfaces[]);

    HRESULT (STDMETHODCALLTYPE *GetPinTypes)(
        IBDA_Topology *This,
        ULONG *pulcPinTypes,
        ULONG ulcPinTypesMax,
        ULONG rgulPinTypes[]);

    HRESULT (STDMETHODCALLTYPE *GetTemplateConnections)(
        IBDA_Topology *This,
        ULONG *pulcConnections,
        ULONG ulcConnectionsMax,
        BDA_TEMPLATE_CONNECTION rgConnections[]);

    HRESULT (STDMETHODCALLTYPE *CreatePin)(
        IBDA_Topology *This,
        ULONG ulPinType,
        ULONG *pulPinId);

    HRESULT (STDMETHODCALLTYPE *DeletePin)(
        IBDA_Topology *This,
        ULONG ulPinId);

    HRESULT (STDMETHODCALLTYPE *SetMediaType)(
        IBDA_Topology *This,
        ULONG ulPinId,
        AM_MEDIA_TYPE *pMediaType);

    HRESULT (STDMETHODCALLTYPE *SetMedium)(
        IBDA_Topology *This,
        ULONG ulPinId,
        REGPINMEDIUM *pMedium);

    HRESULT (STDMETHODCALLTYPE *CreateTopology)(
        IBDA_Topology *This,
        ULONG ulInputPinId,
        ULONG ulOutputPinId);

    HRESULT (STDMETHODCALLTYPE *GetControlNode)(
        IBDA_Topology *This,
        ULONG ulInputPinId,
        ULONG ulOutputPinId,
        ULONG ulNodeType,
        IUnknown **ppControlNode);

    END_INTERFACE
} IBDA_TopologyVtbl;

interface IBDA_Topology {
    CONST_VTBL IBDA_TopologyVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_Topology_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_Topology_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_Topology_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_Topology methods ***/
#define IBDA_Topology_GetNodeTypes(This,pulcNodeTypes,ulcNodeTypesMax,rgulNodeTypes) (This)->lpVtbl->GetNodeTypes(This,pulcNodeTypes,ulcNodeTypesMax,rgulNodeTypes)
#define IBDA_Topology_GetNodeDescriptors(This,ulcNodeDescriptors,ulcNodeDescriptorsMax,rgNodeDescriptors) (This)->lpVtbl->GetNodeDescriptors(This,ulcNodeDescriptors,ulcNodeDescriptorsMax,rgNodeDescriptors)
#define IBDA_Topology_GetNodeInterfaces(This,ulNodeType,pulcInterfaces,ulcInterfacesMax,rgguidInterfaces) (This)->lpVtbl->GetNodeInterfaces(This,ulNodeType,pulcInterfaces,ulcInterfacesMax,rgguidInterfaces)
#define IBDA_Topology_GetPinTypes(This,pulcPinTypes,ulcPinTypesMax,rgulPinTypes) (This)->lpVtbl->GetPinTypes(This,pulcPinTypes,ulcPinTypesMax,rgulPinTypes)
#define IBDA_Topology_GetTemplateConnections(This,pulcConnections,ulcConnectionsMax,rgConnections) (This)->lpVtbl->GetTemplateConnections(This,pulcConnections,ulcConnectionsMax,rgConnections)
#define IBDA_Topology_CreatePin(This,ulPinType,pulPinId) (This)->lpVtbl->CreatePin(This,ulPinType,pulPinId)
#define IBDA_Topology_DeletePin(This,ulPinId) (This)->lpVtbl->DeletePin(This,ulPinId)
#define IBDA_Topology_SetMediaType(This,ulPinId,pMediaType) (This)->lpVtbl->SetMediaType(This,ulPinId,pMediaType)
#define IBDA_Topology_SetMedium(This,ulPinId,pMedium) (This)->lpVtbl->SetMedium(This,ulPinId,pMedium)
#define IBDA_Topology_CreateTopology(This,ulInputPinId,ulOutputPinId) (This)->lpVtbl->CreateTopology(This,ulInputPinId,ulOutputPinId)
#define IBDA_Topology_GetControlNode(This,ulInputPinId,ulOutputPinId,ulNodeType,ppControlNode) (This)->lpVtbl->GetControlNode(This,ulInputPinId,ulOutputPinId,ulNodeType,ppControlNode)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_Topology_QueryInterface(IBDA_Topology* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_Topology_AddRef(IBDA_Topology* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_Topology_Release(IBDA_Topology* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_Topology methods ***/
static FORCEINLINE HRESULT IBDA_Topology_GetNodeTypes(IBDA_Topology* This,ULONG *pulcNodeTypes,ULONG ulcNodeTypesMax,ULONG rgulNodeTypes[]) {
    return This->lpVtbl->GetNodeTypes(This,pulcNodeTypes,ulcNodeTypesMax,rgulNodeTypes);
}
static FORCEINLINE HRESULT IBDA_Topology_GetNodeDescriptors(IBDA_Topology* This,ULONG *ulcNodeDescriptors,ULONG ulcNodeDescriptorsMax,BDANODE_DESCRIPTOR rgNodeDescriptors[]) {
    return This->lpVtbl->GetNodeDescriptors(This,ulcNodeDescriptors,ulcNodeDescriptorsMax,rgNodeDescriptors);
}
static FORCEINLINE HRESULT IBDA_Topology_GetNodeInterfaces(IBDA_Topology* This,ULONG ulNodeType,ULONG *pulcInterfaces,ULONG ulcInterfacesMax,GUID rgguidInterfaces[]) {
    return This->lpVtbl->GetNodeInterfaces(This,ulNodeType,pulcInterfaces,ulcInterfacesMax,rgguidInterfaces);
}
static FORCEINLINE HRESULT IBDA_Topology_GetPinTypes(IBDA_Topology* This,ULONG *pulcPinTypes,ULONG ulcPinTypesMax,ULONG rgulPinTypes[]) {
    return This->lpVtbl->GetPinTypes(This,pulcPinTypes,ulcPinTypesMax,rgulPinTypes);
}
static FORCEINLINE HRESULT IBDA_Topology_GetTemplateConnections(IBDA_Topology* This,ULONG *pulcConnections,ULONG ulcConnectionsMax,BDA_TEMPLATE_CONNECTION rgConnections[]) {
    return This->lpVtbl->GetTemplateConnections(This,pulcConnections,ulcConnectionsMax,rgConnections);
}
static FORCEINLINE HRESULT IBDA_Topology_CreatePin(IBDA_Topology* This,ULONG ulPinType,ULONG *pulPinId) {
    return This->lpVtbl->CreatePin(This,ulPinType,pulPinId);
}
static FORCEINLINE HRESULT IBDA_Topology_DeletePin(IBDA_Topology* This,ULONG ulPinId) {
    return This->lpVtbl->DeletePin(This,ulPinId);
}
static FORCEINLINE HRESULT IBDA_Topology_SetMediaType(IBDA_Topology* This,ULONG ulPinId,AM_MEDIA_TYPE *pMediaType) {
    return This->lpVtbl->SetMediaType(This,ulPinId,pMediaType);
}
static FORCEINLINE HRESULT IBDA_Topology_SetMedium(IBDA_Topology* This,ULONG ulPinId,REGPINMEDIUM *pMedium) {
    return This->lpVtbl->SetMedium(This,ulPinId,pMedium);
}
static FORCEINLINE HRESULT IBDA_Topology_CreateTopology(IBDA_Topology* This,ULONG ulInputPinId,ULONG ulOutputPinId) {
    return This->lpVtbl->CreateTopology(This,ulInputPinId,ulOutputPinId);
}
static FORCEINLINE HRESULT IBDA_Topology_GetControlNode(IBDA_Topology* This,ULONG ulInputPinId,ULONG ulOutputPinId,ULONG ulNodeType,IUnknown **ppControlNode) {
    return This->lpVtbl->GetControlNode(This,ulInputPinId,ulOutputPinId,ulNodeType,ppControlNode);
}
#endif
#endif

#endif


#endif  /* __IBDA_Topology_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_VoidTransform interface
 */
#ifndef __IBDA_VoidTransform_INTERFACE_DEFINED__
#define __IBDA_VoidTransform_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_VoidTransform, 0x71985f46, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("71985f46-1ca1-11d3-9cc8-00c04f7971e0")
IBDA_VoidTransform : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Start(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Stop(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_VoidTransform, 0x71985f46, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0)
#endif
#else
typedef struct IBDA_VoidTransformVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_VoidTransform *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_VoidTransform *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_VoidTransform *This);

    /*** IBDA_VoidTransform methods ***/
    HRESULT (STDMETHODCALLTYPE *Start)(
        IBDA_VoidTransform *This);

    HRESULT (STDMETHODCALLTYPE *Stop)(
        IBDA_VoidTransform *This);

    END_INTERFACE
} IBDA_VoidTransformVtbl;

interface IBDA_VoidTransform {
    CONST_VTBL IBDA_VoidTransformVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_VoidTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_VoidTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_VoidTransform_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_VoidTransform methods ***/
#define IBDA_VoidTransform_Start(This) (This)->lpVtbl->Start(This)
#define IBDA_VoidTransform_Stop(This) (This)->lpVtbl->Stop(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_VoidTransform_QueryInterface(IBDA_VoidTransform* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_VoidTransform_AddRef(IBDA_VoidTransform* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_VoidTransform_Release(IBDA_VoidTransform* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_VoidTransform methods ***/
static FORCEINLINE HRESULT IBDA_VoidTransform_Start(IBDA_VoidTransform* This) {
    return This->lpVtbl->Start(This);
}
static FORCEINLINE HRESULT IBDA_VoidTransform_Stop(IBDA_VoidTransform* This) {
    return This->lpVtbl->Stop(This);
}
#endif
#endif

#endif


#endif  /* __IBDA_VoidTransform_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_NullTransform interface
 */
#ifndef __IBDA_NullTransform_INTERFACE_DEFINED__
#define __IBDA_NullTransform_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_NullTransform, 0xddf15b0d, 0xbd25, 0x11d2, 0x9c,0xa0, 0x00,0xc0,0x4f,0x79,0x71,0xe0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ddf15b0d-bd25-11d2-9ca0-00c04f7971e0")
IBDA_NullTransform : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Start(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Stop(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_NullTransform, 0xddf15b0d, 0xbd25, 0x11d2, 0x9c,0xa0, 0x00,0xc0,0x4f,0x79,0x71,0xe0)
#endif
#else
typedef struct IBDA_NullTransformVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_NullTransform *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_NullTransform *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_NullTransform *This);

    /*** IBDA_NullTransform methods ***/
    HRESULT (STDMETHODCALLTYPE *Start)(
        IBDA_NullTransform *This);

    HRESULT (STDMETHODCALLTYPE *Stop)(
        IBDA_NullTransform *This);

    END_INTERFACE
} IBDA_NullTransformVtbl;

interface IBDA_NullTransform {
    CONST_VTBL IBDA_NullTransformVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_NullTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_NullTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_NullTransform_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_NullTransform methods ***/
#define IBDA_NullTransform_Start(This) (This)->lpVtbl->Start(This)
#define IBDA_NullTransform_Stop(This) (This)->lpVtbl->Stop(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_NullTransform_QueryInterface(IBDA_NullTransform* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_NullTransform_AddRef(IBDA_NullTransform* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_NullTransform_Release(IBDA_NullTransform* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_NullTransform methods ***/
static FORCEINLINE HRESULT IBDA_NullTransform_Start(IBDA_NullTransform* This) {
    return This->lpVtbl->Start(This);
}
static FORCEINLINE HRESULT IBDA_NullTransform_Stop(IBDA_NullTransform* This) {
    return This->lpVtbl->Stop(This);
}
#endif
#endif

#endif


#endif  /* __IBDA_NullTransform_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_FrequencyFilter interface
 */
#ifndef __IBDA_FrequencyFilter_INTERFACE_DEFINED__
#define __IBDA_FrequencyFilter_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_FrequencyFilter, 0x71985f47, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("71985f47-1ca1-11d3-9cc8-00c04f7971e0")
IBDA_FrequencyFilter : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE put_Autotune(
        ULONG ulTransponder) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Autotune(
        ULONG *pulTransponder) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Frequency(
        ULONG ulFrequency) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Frequency(
        ULONG *pulFrequency) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Polarity(
        Polarisation Polarity) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Polarity(
        Polarisation *pPolarity) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Range(
        ULONG ulRange) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Range(
        ULONG *pulRange) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Bandwidth(
        ULONG ulBandwidth) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Bandwidth(
        ULONG *pulBandwidth) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_FrequencyMultiplier(
        ULONG ulMultiplier) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FrequencyMultiplier(
        ULONG *pulMultiplier) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_FrequencyFilter, 0x71985f47, 0x1ca1, 0x11d3, 0x9c,0xc8, 0x00,0xc0,0x4f,0x79,0x71,0xe0)
#endif
#else
typedef struct IBDA_FrequencyFilterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_FrequencyFilter *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_FrequencyFilter *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_FrequencyFilter *This);

    /*** IBDA_FrequencyFilter methods ***/
    HRESULT (STDMETHODCALLTYPE *put_Autotune)(
        IBDA_FrequencyFilter *This,
        ULONG ulTransponder);

    HRESULT (STDMETHODCALLTYPE *get_Autotune)(
        IBDA_FrequencyFilter *This,
        ULONG *pulTransponder);

    HRESULT (STDMETHODCALLTYPE *put_Frequency)(
        IBDA_FrequencyFilter *This,
        ULONG ulFrequency);

    HRESULT (STDMETHODCALLTYPE *get_Frequency)(
        IBDA_FrequencyFilter *This,
        ULONG *pulFrequency);

    HRESULT (STDMETHODCALLTYPE *put_Polarity)(
        IBDA_FrequencyFilter *This,
        Polarisation Polarity);

    HRESULT (STDMETHODCALLTYPE *get_Polarity)(
        IBDA_FrequencyFilter *This,
        Polarisation *pPolarity);

    HRESULT (STDMETHODCALLTYPE *put_Range)(
        IBDA_FrequencyFilter *This,
        ULONG ulRange);

    HRESULT (STDMETHODCALLTYPE *get_Range)(
        IBDA_FrequencyFilter *This,
        ULONG *pulRange);

    HRESULT (STDMETHODCALLTYPE *put_Bandwidth)(
        IBDA_FrequencyFilter *This,
        ULONG ulBandwidth);

    HRESULT (STDMETHODCALLTYPE *get_Bandwidth)(
        IBDA_FrequencyFilter *This,
        ULONG *pulBandwidth);

    HRESULT (STDMETHODCALLTYPE *put_FrequencyMultiplier)(
        IBDA_FrequencyFilter *This,
        ULONG ulMultiplier);

    HRESULT (STDMETHODCALLTYPE *get_FrequencyMultiplier)(
        IBDA_FrequencyFilter *This,
        ULONG *pulMultiplier);

    END_INTERFACE
} IBDA_FrequencyFilterVtbl;

interface IBDA_FrequencyFilter {
    CONST_VTBL IBDA_FrequencyFilterVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_FrequencyFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_FrequencyFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_FrequencyFilter_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_FrequencyFilter methods ***/
#define IBDA_FrequencyFilter_put_Autotune(This,ulTransponder) (This)->lpVtbl->put_Autotune(This,ulTransponder)
#define IBDA_FrequencyFilter_get_Autotune(This,pulTransponder) (This)->lpVtbl->get_Autotune(This,pulTransponder)
#define IBDA_FrequencyFilter_put_Frequency(This,ulFrequency) (This)->lpVtbl->put_Frequency(This,ulFrequency)
#define IBDA_FrequencyFilter_get_Frequency(This,pulFrequency) (This)->lpVtbl->get_Frequency(This,pulFrequency)
#define IBDA_FrequencyFilter_put_Polarity(This,Polarity) (This)->lpVtbl->put_Polarity(This,Polarity)
#define IBDA_FrequencyFilter_get_Polarity(This,pPolarity) (This)->lpVtbl->get_Polarity(This,pPolarity)
#define IBDA_FrequencyFilter_put_Range(This,ulRange) (This)->lpVtbl->put_Range(This,ulRange)
#define IBDA_FrequencyFilter_get_Range(This,pulRange) (This)->lpVtbl->get_Range(This,pulRange)
#define IBDA_FrequencyFilter_put_Bandwidth(This,ulBandwidth) (This)->lpVtbl->put_Bandwidth(This,ulBandwidth)
#define IBDA_FrequencyFilter_get_Bandwidth(This,pulBandwidth) (This)->lpVtbl->get_Bandwidth(This,pulBandwidth)
#define IBDA_FrequencyFilter_put_FrequencyMultiplier(This,ulMultiplier) (This)->lpVtbl->put_FrequencyMultiplier(This,ulMultiplier)
#define IBDA_FrequencyFilter_get_FrequencyMultiplier(This,pulMultiplier) (This)->lpVtbl->get_FrequencyMultiplier(This,pulMultiplier)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_FrequencyFilter_QueryInterface(IBDA_FrequencyFilter* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_FrequencyFilter_AddRef(IBDA_FrequencyFilter* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_FrequencyFilter_Release(IBDA_FrequencyFilter* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_FrequencyFilter methods ***/
static FORCEINLINE HRESULT IBDA_FrequencyFilter_put_Autotune(IBDA_FrequencyFilter* This,ULONG ulTransponder) {
    return This->lpVtbl->put_Autotune(This,ulTransponder);
}
static FORCEINLINE HRESULT IBDA_FrequencyFilter_get_Autotune(IBDA_FrequencyFilter* This,ULONG *pulTransponder) {
    return This->lpVtbl->get_Autotune(This,pulTransponder);
}
static FORCEINLINE HRESULT IBDA_FrequencyFilter_put_Frequency(IBDA_FrequencyFilter* This,ULONG ulFrequency) {
    return This->lpVtbl->put_Frequency(This,ulFrequency);
}
static FORCEINLINE HRESULT IBDA_FrequencyFilter_get_Frequency(IBDA_FrequencyFilter* This,ULONG *pulFrequency) {
    return This->lpVtbl->get_Frequency(This,pulFrequency);
}
static FORCEINLINE HRESULT IBDA_FrequencyFilter_put_Polarity(IBDA_FrequencyFilter* This,Polarisation Polarity) {
    return This->lpVtbl->put_Polarity(This,Polarity);
}
static FORCEINLINE HRESULT IBDA_FrequencyFilter_get_Polarity(IBDA_FrequencyFilter* This,Polarisation *pPolarity) {
    return This->lpVtbl->get_Polarity(This,pPolarity);
}
static FORCEINLINE HRESULT IBDA_FrequencyFilter_put_Range(IBDA_FrequencyFilter* This,ULONG ulRange) {
    return This->lpVtbl->put_Range(This,ulRange);
}
static FORCEINLINE HRESULT IBDA_FrequencyFilter_get_Range(IBDA_FrequencyFilter* This,ULONG *pulRange) {
    return This->lpVtbl->get_Range(This,pulRange);
}
static FORCEINLINE HRESULT IBDA_FrequencyFilter_put_Bandwidth(IBDA_FrequencyFilter* This,ULONG ulBandwidth) {
    return This->lpVtbl->put_Bandwidth(This,ulBandwidth);
}
static FORCEINLINE HRESULT IBDA_FrequencyFilter_get_Bandwidth(IBDA_FrequencyFilter* This,ULONG *pulBandwidth) {
    return This->lpVtbl->get_Bandwidth(This,pulBandwidth);
}
static FORCEINLINE HRESULT IBDA_FrequencyFilter_put_FrequencyMultiplier(IBDA_FrequencyFilter* This,ULONG ulMultiplier) {
    return This->lpVtbl->put_FrequencyMultiplier(This,ulMultiplier);
}
static FORCEINLINE HRESULT IBDA_FrequencyFilter_get_FrequencyMultiplier(IBDA_FrequencyFilter* This,ULONG *pulMultiplier) {
    return This->lpVtbl->get_FrequencyMultiplier(This,pulMultiplier);
}
#endif
#endif

#endif


#endif  /* __IBDA_FrequencyFilter_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_LNBInfo interface
 */
#ifndef __IBDA_LNBInfo_INTERFACE_DEFINED__
#define __IBDA_LNBInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_LNBInfo, 0x992cf102, 0x49f9, 0x4719, 0xa6,0x64, 0xc4,0xf2,0x3e,0x24,0x08,0xf4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("992cf102-49f9-4719-a664-c4f23e2408f4")
IBDA_LNBInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE put_LocalOscilatorFrequencyLowBand(
        ULONG ulLOFLow) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LocalOscilatorFrequencyLowBand(
        ULONG *pulLOFLow) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_LocalOscilatorFrequencyHighBand(
        ULONG ulLOFHigh) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LocalOscilatorFrequencyHighBand(
        ULONG *pulLOFHigh) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_HighLowSwitchFrequency(
        ULONG ulSwitchFrequency) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_HighLowSwitchFrequency(
        ULONG *pulSwitchFrequency) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_LNBInfo, 0x992cf102, 0x49f9, 0x4719, 0xa6,0x64, 0xc4,0xf2,0x3e,0x24,0x08,0xf4)
#endif
#else
typedef struct IBDA_LNBInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_LNBInfo *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_LNBInfo *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_LNBInfo *This);

    /*** IBDA_LNBInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *put_LocalOscilatorFrequencyLowBand)(
        IBDA_LNBInfo *This,
        ULONG ulLOFLow);

    HRESULT (STDMETHODCALLTYPE *get_LocalOscilatorFrequencyLowBand)(
        IBDA_LNBInfo *This,
        ULONG *pulLOFLow);

    HRESULT (STDMETHODCALLTYPE *put_LocalOscilatorFrequencyHighBand)(
        IBDA_LNBInfo *This,
        ULONG ulLOFHigh);

    HRESULT (STDMETHODCALLTYPE *get_LocalOscilatorFrequencyHighBand)(
        IBDA_LNBInfo *This,
        ULONG *pulLOFHigh);

    HRESULT (STDMETHODCALLTYPE *put_HighLowSwitchFrequency)(
        IBDA_LNBInfo *This,
        ULONG ulSwitchFrequency);

    HRESULT (STDMETHODCALLTYPE *get_HighLowSwitchFrequency)(
        IBDA_LNBInfo *This,
        ULONG *pulSwitchFrequency);

    END_INTERFACE
} IBDA_LNBInfoVtbl;

interface IBDA_LNBInfo {
    CONST_VTBL IBDA_LNBInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_LNBInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_LNBInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_LNBInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_LNBInfo methods ***/
#define IBDA_LNBInfo_put_LocalOscilatorFrequencyLowBand(This,ulLOFLow) (This)->lpVtbl->put_LocalOscilatorFrequencyLowBand(This,ulLOFLow)
#define IBDA_LNBInfo_get_LocalOscilatorFrequencyLowBand(This,pulLOFLow) (This)->lpVtbl->get_LocalOscilatorFrequencyLowBand(This,pulLOFLow)
#define IBDA_LNBInfo_put_LocalOscilatorFrequencyHighBand(This,ulLOFHigh) (This)->lpVtbl->put_LocalOscilatorFrequencyHighBand(This,ulLOFHigh)
#define IBDA_LNBInfo_get_LocalOscilatorFrequencyHighBand(This,pulLOFHigh) (This)->lpVtbl->get_LocalOscilatorFrequencyHighBand(This,pulLOFHigh)
#define IBDA_LNBInfo_put_HighLowSwitchFrequency(This,ulSwitchFrequency) (This)->lpVtbl->put_HighLowSwitchFrequency(This,ulSwitchFrequency)
#define IBDA_LNBInfo_get_HighLowSwitchFrequency(This,pulSwitchFrequency) (This)->lpVtbl->get_HighLowSwitchFrequency(This,pulSwitchFrequency)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_LNBInfo_QueryInterface(IBDA_LNBInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_LNBInfo_AddRef(IBDA_LNBInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_LNBInfo_Release(IBDA_LNBInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_LNBInfo methods ***/
static FORCEINLINE HRESULT IBDA_LNBInfo_put_LocalOscilatorFrequencyLowBand(IBDA_LNBInfo* This,ULONG ulLOFLow) {
    return This->lpVtbl->put_LocalOscilatorFrequencyLowBand(This,ulLOFLow);
}
static FORCEINLINE HRESULT IBDA_LNBInfo_get_LocalOscilatorFrequencyLowBand(IBDA_LNBInfo* This,ULONG *pulLOFLow) {
    return This->lpVtbl->get_LocalOscilatorFrequencyLowBand(This,pulLOFLow);
}
static FORCEINLINE HRESULT IBDA_LNBInfo_put_LocalOscilatorFrequencyHighBand(IBDA_LNBInfo* This,ULONG ulLOFHigh) {
    return This->lpVtbl->put_LocalOscilatorFrequencyHighBand(This,ulLOFHigh);
}
static FORCEINLINE HRESULT IBDA_LNBInfo_get_LocalOscilatorFrequencyHighBand(IBDA_LNBInfo* This,ULONG *pulLOFHigh) {
    return This->lpVtbl->get_LocalOscilatorFrequencyHighBand(This,pulLOFHigh);
}
static FORCEINLINE HRESULT IBDA_LNBInfo_put_HighLowSwitchFrequency(IBDA_LNBInfo* This,ULONG ulSwitchFrequency) {
    return This->lpVtbl->put_HighLowSwitchFrequency(This,ulSwitchFrequency);
}
static FORCEINLINE HRESULT IBDA_LNBInfo_get_HighLowSwitchFrequency(IBDA_LNBInfo* This,ULONG *pulSwitchFrequency) {
    return This->lpVtbl->get_HighLowSwitchFrequency(This,pulSwitchFrequency);
}
#endif
#endif

#endif


#endif  /* __IBDA_LNBInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_DiseqCommand interface
 */
#ifndef __IBDA_DiseqCommand_INTERFACE_DEFINED__
#define __IBDA_DiseqCommand_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_DiseqCommand, 0xf84e2ab0, 0x3c6b, 0x45e3, 0xa0,0xfc, 0x86,0x69,0xd4,0xb8,0x1f,0x11);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f84e2ab0-3c6b-45e3-a0fc-8669d4b81f11")
IBDA_DiseqCommand : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE put_EnableDiseqCommands(
        BOOLEAN bEnable) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DiseqLNBSource(
        ULONG ulLNBSource) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DiseqUseToneBurst(
        BOOLEAN bUseToneBurst) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DiseqRepeats(
        ULONG ulRepeats) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DiseqSendCommand(
        ULONG ulRequestId,
        ULONG ulcbCommandLen,
        BYTE *pbCommand) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DiseqResponse(
        ULONG ulRequestId,
        ULONG *pulcbResponseLen,
        BYTE pbResponse[]) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_DiseqCommand, 0xf84e2ab0, 0x3c6b, 0x45e3, 0xa0,0xfc, 0x86,0x69,0xd4,0xb8,0x1f,0x11)
#endif
#else
typedef struct IBDA_DiseqCommandVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_DiseqCommand *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_DiseqCommand *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_DiseqCommand *This);

    /*** IBDA_DiseqCommand methods ***/
    HRESULT (STDMETHODCALLTYPE *put_EnableDiseqCommands)(
        IBDA_DiseqCommand *This,
        BOOLEAN bEnable);

    HRESULT (STDMETHODCALLTYPE *put_DiseqLNBSource)(
        IBDA_DiseqCommand *This,
        ULONG ulLNBSource);

    HRESULT (STDMETHODCALLTYPE *put_DiseqUseToneBurst)(
        IBDA_DiseqCommand *This,
        BOOLEAN bUseToneBurst);

    HRESULT (STDMETHODCALLTYPE *put_DiseqRepeats)(
        IBDA_DiseqCommand *This,
        ULONG ulRepeats);

    HRESULT (STDMETHODCALLTYPE *put_DiseqSendCommand)(
        IBDA_DiseqCommand *This,
        ULONG ulRequestId,
        ULONG ulcbCommandLen,
        BYTE *pbCommand);

    HRESULT (STDMETHODCALLTYPE *get_DiseqResponse)(
        IBDA_DiseqCommand *This,
        ULONG ulRequestId,
        ULONG *pulcbResponseLen,
        BYTE pbResponse[]);

    END_INTERFACE
} IBDA_DiseqCommandVtbl;

interface IBDA_DiseqCommand {
    CONST_VTBL IBDA_DiseqCommandVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_DiseqCommand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_DiseqCommand_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_DiseqCommand_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_DiseqCommand methods ***/
#define IBDA_DiseqCommand_put_EnableDiseqCommands(This,bEnable) (This)->lpVtbl->put_EnableDiseqCommands(This,bEnable)
#define IBDA_DiseqCommand_put_DiseqLNBSource(This,ulLNBSource) (This)->lpVtbl->put_DiseqLNBSource(This,ulLNBSource)
#define IBDA_DiseqCommand_put_DiseqUseToneBurst(This,bUseToneBurst) (This)->lpVtbl->put_DiseqUseToneBurst(This,bUseToneBurst)
#define IBDA_DiseqCommand_put_DiseqRepeats(This,ulRepeats) (This)->lpVtbl->put_DiseqRepeats(This,ulRepeats)
#define IBDA_DiseqCommand_put_DiseqSendCommand(This,ulRequestId,ulcbCommandLen,pbCommand) (This)->lpVtbl->put_DiseqSendCommand(This,ulRequestId,ulcbCommandLen,pbCommand)
#define IBDA_DiseqCommand_get_DiseqResponse(This,ulRequestId,pulcbResponseLen,pbResponse) (This)->lpVtbl->get_DiseqResponse(This,ulRequestId,pulcbResponseLen,pbResponse)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_DiseqCommand_QueryInterface(IBDA_DiseqCommand* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_DiseqCommand_AddRef(IBDA_DiseqCommand* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_DiseqCommand_Release(IBDA_DiseqCommand* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_DiseqCommand methods ***/
static FORCEINLINE HRESULT IBDA_DiseqCommand_put_EnableDiseqCommands(IBDA_DiseqCommand* This,BOOLEAN bEnable) {
    return This->lpVtbl->put_EnableDiseqCommands(This,bEnable);
}
static FORCEINLINE HRESULT IBDA_DiseqCommand_put_DiseqLNBSource(IBDA_DiseqCommand* This,ULONG ulLNBSource) {
    return This->lpVtbl->put_DiseqLNBSource(This,ulLNBSource);
}
static FORCEINLINE HRESULT IBDA_DiseqCommand_put_DiseqUseToneBurst(IBDA_DiseqCommand* This,BOOLEAN bUseToneBurst) {
    return This->lpVtbl->put_DiseqUseToneBurst(This,bUseToneBurst);
}
static FORCEINLINE HRESULT IBDA_DiseqCommand_put_DiseqRepeats(IBDA_DiseqCommand* This,ULONG ulRepeats) {
    return This->lpVtbl->put_DiseqRepeats(This,ulRepeats);
}
static FORCEINLINE HRESULT IBDA_DiseqCommand_put_DiseqSendCommand(IBDA_DiseqCommand* This,ULONG ulRequestId,ULONG ulcbCommandLen,BYTE *pbCommand) {
    return This->lpVtbl->put_DiseqSendCommand(This,ulRequestId,ulcbCommandLen,pbCommand);
}
static FORCEINLINE HRESULT IBDA_DiseqCommand_get_DiseqResponse(IBDA_DiseqCommand* This,ULONG ulRequestId,ULONG *pulcbResponseLen,BYTE pbResponse[]) {
    return This->lpVtbl->get_DiseqResponse(This,ulRequestId,pulcbResponseLen,pbResponse);
}
#endif
#endif

#endif


#endif  /* __IBDA_DiseqCommand_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_AutoDemodulate interface
 */
#ifndef __IBDA_AutoDemodulate_INTERFACE_DEFINED__
#define __IBDA_AutoDemodulate_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_AutoDemodulate, 0xddf15b12, 0xbd25, 0x11d2, 0x9c,0xa0, 0x00,0xc0,0x4f,0x79,0x71,0xe0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ddf15b12-bd25-11d2-9ca0-00c04f7971e0")
IBDA_AutoDemodulate : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE put_AutoDemodulate(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_AutoDemodulate, 0xddf15b12, 0xbd25, 0x11d2, 0x9c,0xa0, 0x00,0xc0,0x4f,0x79,0x71,0xe0)
#endif
#else
typedef struct IBDA_AutoDemodulateVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_AutoDemodulate *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_AutoDemodulate *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_AutoDemodulate *This);

    /*** IBDA_AutoDemodulate methods ***/
    HRESULT (STDMETHODCALLTYPE *put_AutoDemodulate)(
        IBDA_AutoDemodulate *This);

    END_INTERFACE
} IBDA_AutoDemodulateVtbl;

interface IBDA_AutoDemodulate {
    CONST_VTBL IBDA_AutoDemodulateVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_AutoDemodulate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_AutoDemodulate_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_AutoDemodulate_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_AutoDemodulate methods ***/
#define IBDA_AutoDemodulate_put_AutoDemodulate(This) (This)->lpVtbl->put_AutoDemodulate(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_AutoDemodulate_QueryInterface(IBDA_AutoDemodulate* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_AutoDemodulate_AddRef(IBDA_AutoDemodulate* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_AutoDemodulate_Release(IBDA_AutoDemodulate* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_AutoDemodulate methods ***/
static FORCEINLINE HRESULT IBDA_AutoDemodulate_put_AutoDemodulate(IBDA_AutoDemodulate* This) {
    return This->lpVtbl->put_AutoDemodulate(This);
}
#endif
#endif

#endif


#endif  /* __IBDA_AutoDemodulate_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_AutoDemodulateEx interface
 */
#ifndef __IBDA_AutoDemodulateEx_INTERFACE_DEFINED__
#define __IBDA_AutoDemodulateEx_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_AutoDemodulateEx, 0x34518d13, 0x1182, 0x48e6, 0xb2,0x8f, 0xb2,0x49,0x87,0x78,0x73,0x26);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("34518d13-1182-48e6-b28f-b24987787326")
IBDA_AutoDemodulateEx : public IBDA_AutoDemodulate
{
    virtual HRESULT STDMETHODCALLTYPE get_SupportedDeviceNodeTypes(
        ULONG ulcDeviceNodeTypesMax,
        ULONG *pulcDeviceNodeTypes,
        GUID *pguidDeviceNodeTypes) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SupportedVideoFormats(
        ULONG *pulAMTunerModeType,
        ULONG *pulAnalogVideoStandard) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AuxInputCount(
        ULONG *pulCompositeCount,
        ULONG *pulSvideoCount) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_AutoDemodulateEx, 0x34518d13, 0x1182, 0x48e6, 0xb2,0x8f, 0xb2,0x49,0x87,0x78,0x73,0x26)
#endif
#else
typedef struct IBDA_AutoDemodulateExVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_AutoDemodulateEx *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_AutoDemodulateEx *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_AutoDemodulateEx *This);

    /*** IBDA_AutoDemodulate methods ***/
    HRESULT (STDMETHODCALLTYPE *put_AutoDemodulate)(
        IBDA_AutoDemodulateEx *This);

    /*** IBDA_AutoDemodulateEx methods ***/
    HRESULT (STDMETHODCALLTYPE *get_SupportedDeviceNodeTypes)(
        IBDA_AutoDemodulateEx *This,
        ULONG ulcDeviceNodeTypesMax,
        ULONG *pulcDeviceNodeTypes,
        GUID *pguidDeviceNodeTypes);

    HRESULT (STDMETHODCALLTYPE *get_SupportedVideoFormats)(
        IBDA_AutoDemodulateEx *This,
        ULONG *pulAMTunerModeType,
        ULONG *pulAnalogVideoStandard);

    HRESULT (STDMETHODCALLTYPE *get_AuxInputCount)(
        IBDA_AutoDemodulateEx *This,
        ULONG *pulCompositeCount,
        ULONG *pulSvideoCount);

    END_INTERFACE
} IBDA_AutoDemodulateExVtbl;

interface IBDA_AutoDemodulateEx {
    CONST_VTBL IBDA_AutoDemodulateExVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_AutoDemodulateEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_AutoDemodulateEx_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_AutoDemodulateEx_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_AutoDemodulate methods ***/
#define IBDA_AutoDemodulateEx_put_AutoDemodulate(This) (This)->lpVtbl->put_AutoDemodulate(This)
/*** IBDA_AutoDemodulateEx methods ***/
#define IBDA_AutoDemodulateEx_get_SupportedDeviceNodeTypes(This,ulcDeviceNodeTypesMax,pulcDeviceNodeTypes,pguidDeviceNodeTypes) (This)->lpVtbl->get_SupportedDeviceNodeTypes(This,ulcDeviceNodeTypesMax,pulcDeviceNodeTypes,pguidDeviceNodeTypes)
#define IBDA_AutoDemodulateEx_get_SupportedVideoFormats(This,pulAMTunerModeType,pulAnalogVideoStandard) (This)->lpVtbl->get_SupportedVideoFormats(This,pulAMTunerModeType,pulAnalogVideoStandard)
#define IBDA_AutoDemodulateEx_get_AuxInputCount(This,pulCompositeCount,pulSvideoCount) (This)->lpVtbl->get_AuxInputCount(This,pulCompositeCount,pulSvideoCount)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_AutoDemodulateEx_QueryInterface(IBDA_AutoDemodulateEx* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_AutoDemodulateEx_AddRef(IBDA_AutoDemodulateEx* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_AutoDemodulateEx_Release(IBDA_AutoDemodulateEx* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_AutoDemodulate methods ***/
static FORCEINLINE HRESULT IBDA_AutoDemodulateEx_put_AutoDemodulate(IBDA_AutoDemodulateEx* This) {
    return This->lpVtbl->put_AutoDemodulate(This);
}
/*** IBDA_AutoDemodulateEx methods ***/
static FORCEINLINE HRESULT IBDA_AutoDemodulateEx_get_SupportedDeviceNodeTypes(IBDA_AutoDemodulateEx* This,ULONG ulcDeviceNodeTypesMax,ULONG *pulcDeviceNodeTypes,GUID *pguidDeviceNodeTypes) {
    return This->lpVtbl->get_SupportedDeviceNodeTypes(This,ulcDeviceNodeTypesMax,pulcDeviceNodeTypes,pguidDeviceNodeTypes);
}
static FORCEINLINE HRESULT IBDA_AutoDemodulateEx_get_SupportedVideoFormats(IBDA_AutoDemodulateEx* This,ULONG *pulAMTunerModeType,ULONG *pulAnalogVideoStandard) {
    return This->lpVtbl->get_SupportedVideoFormats(This,pulAMTunerModeType,pulAnalogVideoStandard);
}
static FORCEINLINE HRESULT IBDA_AutoDemodulateEx_get_AuxInputCount(IBDA_AutoDemodulateEx* This,ULONG *pulCompositeCount,ULONG *pulSvideoCount) {
    return This->lpVtbl->get_AuxInputCount(This,pulCompositeCount,pulSvideoCount);
}
#endif
#endif

#endif


#endif  /* __IBDA_AutoDemodulateEx_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_DigitalDemodulator interface
 */
#ifndef __IBDA_DigitalDemodulator_INTERFACE_DEFINED__
#define __IBDA_DigitalDemodulator_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_DigitalDemodulator, 0xef30f379, 0x985b, 0x4d10, 0xb6,0x40, 0xa7,0x9d,0x5e,0x04,0xe1,0xe0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ef30f379-985b-4d10-b640-a79d5e04e1e0")
IBDA_DigitalDemodulator : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE put_ModulationType(
        ModulationType *pModulationType) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ModulationType(
        ModulationType *pModulationType) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_InnerFECMethod(
        FECMethod *pFECMethod) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_InnerFECMethod(
        FECMethod *pFECMethod) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_InnerFECRate(
        BinaryConvolutionCodeRate *pFECRate) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_InnerFECRate(
        BinaryConvolutionCodeRate *pFECRate) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_OuterFECMethod(
        FECMethod *pFECMethod) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_OuterFECMethod(
        FECMethod *pFECMethod) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_OuterFECRate(
        BinaryConvolutionCodeRate *pFECRate) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_OuterFECRate(
        BinaryConvolutionCodeRate *pFECRate) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SymbolRate(
        ULONG *pSymbolRate) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SymbolRate(
        ULONG *pSymbolRate) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SpectralInversion(
        SpectralInversion *pSpectralInversion) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SpectralInversion(
        SpectralInversion *pSpectralInversion) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_DigitalDemodulator, 0xef30f379, 0x985b, 0x4d10, 0xb6,0x40, 0xa7,0x9d,0x5e,0x04,0xe1,0xe0)
#endif
#else
typedef struct IBDA_DigitalDemodulatorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_DigitalDemodulator *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_DigitalDemodulator *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_DigitalDemodulator *This);

    /*** IBDA_DigitalDemodulator methods ***/
    HRESULT (STDMETHODCALLTYPE *put_ModulationType)(
        IBDA_DigitalDemodulator *This,
        ModulationType *pModulationType);

    HRESULT (STDMETHODCALLTYPE *get_ModulationType)(
        IBDA_DigitalDemodulator *This,
        ModulationType *pModulationType);

    HRESULT (STDMETHODCALLTYPE *put_InnerFECMethod)(
        IBDA_DigitalDemodulator *This,
        FECMethod *pFECMethod);

    HRESULT (STDMETHODCALLTYPE *get_InnerFECMethod)(
        IBDA_DigitalDemodulator *This,
        FECMethod *pFECMethod);

    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
        IBDA_DigitalDemodulator *This,
        BinaryConvolutionCodeRate *pFECRate);

    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
        IBDA_DigitalDemodulator *This,
        BinaryConvolutionCodeRate *pFECRate);

    HRESULT (STDMETHODCALLTYPE *put_OuterFECMethod)(
        IBDA_DigitalDemodulator *This,
        FECMethod *pFECMethod);

    HRESULT (STDMETHODCALLTYPE *get_OuterFECMethod)(
        IBDA_DigitalDemodulator *This,
        FECMethod *pFECMethod);

    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
        IBDA_DigitalDemodulator *This,
        BinaryConvolutionCodeRate *pFECRate);

    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
        IBDA_DigitalDemodulator *This,
        BinaryConvolutionCodeRate *pFECRate);

    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
        IBDA_DigitalDemodulator *This,
        ULONG *pSymbolRate);

    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
        IBDA_DigitalDemodulator *This,
        ULONG *pSymbolRate);

    HRESULT (STDMETHODCALLTYPE *put_SpectralInversion)(
        IBDA_DigitalDemodulator *This,
        SpectralInversion *pSpectralInversion);

    HRESULT (STDMETHODCALLTYPE *get_SpectralInversion)(
        IBDA_DigitalDemodulator *This,
        SpectralInversion *pSpectralInversion);

    END_INTERFACE
} IBDA_DigitalDemodulatorVtbl;

interface IBDA_DigitalDemodulator {
    CONST_VTBL IBDA_DigitalDemodulatorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_DigitalDemodulator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_DigitalDemodulator_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_DigitalDemodulator_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_DigitalDemodulator methods ***/
#define IBDA_DigitalDemodulator_put_ModulationType(This,pModulationType) (This)->lpVtbl->put_ModulationType(This,pModulationType)
#define IBDA_DigitalDemodulator_get_ModulationType(This,pModulationType) (This)->lpVtbl->get_ModulationType(This,pModulationType)
#define IBDA_DigitalDemodulator_put_InnerFECMethod(This,pFECMethod) (This)->lpVtbl->put_InnerFECMethod(This,pFECMethod)
#define IBDA_DigitalDemodulator_get_InnerFECMethod(This,pFECMethod) (This)->lpVtbl->get_InnerFECMethod(This,pFECMethod)
#define IBDA_DigitalDemodulator_put_InnerFECRate(This,pFECRate) (This)->lpVtbl->put_InnerFECRate(This,pFECRate)
#define IBDA_DigitalDemodulator_get_InnerFECRate(This,pFECRate) (This)->lpVtbl->get_InnerFECRate(This,pFECRate)
#define IBDA_DigitalDemodulator_put_OuterFECMethod(This,pFECMethod) (This)->lpVtbl->put_OuterFECMethod(This,pFECMethod)
#define IBDA_DigitalDemodulator_get_OuterFECMethod(This,pFECMethod) (This)->lpVtbl->get_OuterFECMethod(This,pFECMethod)
#define IBDA_DigitalDemodulator_put_OuterFECRate(This,pFECRate) (This)->lpVtbl->put_OuterFECRate(This,pFECRate)
#define IBDA_DigitalDemodulator_get_OuterFECRate(This,pFECRate) (This)->lpVtbl->get_OuterFECRate(This,pFECRate)
#define IBDA_DigitalDemodulator_put_SymbolRate(This,pSymbolRate) (This)->lpVtbl->put_SymbolRate(This,pSymbolRate)
#define IBDA_DigitalDemodulator_get_SymbolRate(This,pSymbolRate) (This)->lpVtbl->get_SymbolRate(This,pSymbolRate)
#define IBDA_DigitalDemodulator_put_SpectralInversion(This,pSpectralInversion) (This)->lpVtbl->put_SpectralInversion(This,pSpectralInversion)
#define IBDA_DigitalDemodulator_get_SpectralInversion(This,pSpectralInversion) (This)->lpVtbl->get_SpectralInversion(This,pSpectralInversion)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_QueryInterface(IBDA_DigitalDemodulator* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_DigitalDemodulator_AddRef(IBDA_DigitalDemodulator* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_DigitalDemodulator_Release(IBDA_DigitalDemodulator* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_DigitalDemodulator methods ***/
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_put_ModulationType(IBDA_DigitalDemodulator* This,ModulationType *pModulationType) {
    return This->lpVtbl->put_ModulationType(This,pModulationType);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_get_ModulationType(IBDA_DigitalDemodulator* This,ModulationType *pModulationType) {
    return This->lpVtbl->get_ModulationType(This,pModulationType);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_put_InnerFECMethod(IBDA_DigitalDemodulator* This,FECMethod *pFECMethod) {
    return This->lpVtbl->put_InnerFECMethod(This,pFECMethod);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_get_InnerFECMethod(IBDA_DigitalDemodulator* This,FECMethod *pFECMethod) {
    return This->lpVtbl->get_InnerFECMethod(This,pFECMethod);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_put_InnerFECRate(IBDA_DigitalDemodulator* This,BinaryConvolutionCodeRate *pFECRate) {
    return This->lpVtbl->put_InnerFECRate(This,pFECRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_get_InnerFECRate(IBDA_DigitalDemodulator* This,BinaryConvolutionCodeRate *pFECRate) {
    return This->lpVtbl->get_InnerFECRate(This,pFECRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_put_OuterFECMethod(IBDA_DigitalDemodulator* This,FECMethod *pFECMethod) {
    return This->lpVtbl->put_OuterFECMethod(This,pFECMethod);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_get_OuterFECMethod(IBDA_DigitalDemodulator* This,FECMethod *pFECMethod) {
    return This->lpVtbl->get_OuterFECMethod(This,pFECMethod);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_put_OuterFECRate(IBDA_DigitalDemodulator* This,BinaryConvolutionCodeRate *pFECRate) {
    return This->lpVtbl->put_OuterFECRate(This,pFECRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_get_OuterFECRate(IBDA_DigitalDemodulator* This,BinaryConvolutionCodeRate *pFECRate) {
    return This->lpVtbl->get_OuterFECRate(This,pFECRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_put_SymbolRate(IBDA_DigitalDemodulator* This,ULONG *pSymbolRate) {
    return This->lpVtbl->put_SymbolRate(This,pSymbolRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_get_SymbolRate(IBDA_DigitalDemodulator* This,ULONG *pSymbolRate) {
    return This->lpVtbl->get_SymbolRate(This,pSymbolRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_put_SpectralInversion(IBDA_DigitalDemodulator* This,SpectralInversion *pSpectralInversion) {
    return This->lpVtbl->put_SpectralInversion(This,pSpectralInversion);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator_get_SpectralInversion(IBDA_DigitalDemodulator* This,SpectralInversion *pSpectralInversion) {
    return This->lpVtbl->get_SpectralInversion(This,pSpectralInversion);
}
#endif
#endif

#endif


#endif  /* __IBDA_DigitalDemodulator_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_DigitalDemodulator2 interface
 */
#ifndef __IBDA_DigitalDemodulator2_INTERFACE_DEFINED__
#define __IBDA_DigitalDemodulator2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_DigitalDemodulator2, 0x525ed3ee, 0x5cf3, 0x4e1e, 0x9a,0x06, 0x53,0x68,0xa8,0x4f,0x9a,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("525ed3ee-5cf3-4e1e-9a06-5368a84f9a6e")
IBDA_DigitalDemodulator2 : public IBDA_DigitalDemodulator
{
    virtual HRESULT STDMETHODCALLTYPE put_GuardInterval(
        GuardInterval *pGuardInterval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_GuardInterval(
        GuardInterval *pGuardInterval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_TransmissionMode(
        TransmissionMode *pTransmissionMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TransmissionMode(
        TransmissionMode *pTransmissionMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_RollOff(
        RollOff *pRollOff) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RollOff(
        RollOff *pRollOff) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Pilot(
        Pilot *pPilot) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Pilot(
        Pilot *pPilot) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_DigitalDemodulator2, 0x525ed3ee, 0x5cf3, 0x4e1e, 0x9a,0x06, 0x53,0x68,0xa8,0x4f,0x9a,0x6e)
#endif
#else
typedef struct IBDA_DigitalDemodulator2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_DigitalDemodulator2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_DigitalDemodulator2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_DigitalDemodulator2 *This);

    /*** IBDA_DigitalDemodulator methods ***/
    HRESULT (STDMETHODCALLTYPE *put_ModulationType)(
        IBDA_DigitalDemodulator2 *This,
        ModulationType *pModulationType);

    HRESULT (STDMETHODCALLTYPE *get_ModulationType)(
        IBDA_DigitalDemodulator2 *This,
        ModulationType *pModulationType);

    HRESULT (STDMETHODCALLTYPE *put_InnerFECMethod)(
        IBDA_DigitalDemodulator2 *This,
        FECMethod *pFECMethod);

    HRESULT (STDMETHODCALLTYPE *get_InnerFECMethod)(
        IBDA_DigitalDemodulator2 *This,
        FECMethod *pFECMethod);

    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
        IBDA_DigitalDemodulator2 *This,
        BinaryConvolutionCodeRate *pFECRate);

    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
        IBDA_DigitalDemodulator2 *This,
        BinaryConvolutionCodeRate *pFECRate);

    HRESULT (STDMETHODCALLTYPE *put_OuterFECMethod)(
        IBDA_DigitalDemodulator2 *This,
        FECMethod *pFECMethod);

    HRESULT (STDMETHODCALLTYPE *get_OuterFECMethod)(
        IBDA_DigitalDemodulator2 *This,
        FECMethod *pFECMethod);

    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
        IBDA_DigitalDemodulator2 *This,
        BinaryConvolutionCodeRate *pFECRate);

    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
        IBDA_DigitalDemodulator2 *This,
        BinaryConvolutionCodeRate *pFECRate);

    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
        IBDA_DigitalDemodulator2 *This,
        ULONG *pSymbolRate);

    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
        IBDA_DigitalDemodulator2 *This,
        ULONG *pSymbolRate);

    HRESULT (STDMETHODCALLTYPE *put_SpectralInversion)(
        IBDA_DigitalDemodulator2 *This,
        SpectralInversion *pSpectralInversion);

    HRESULT (STDMETHODCALLTYPE *get_SpectralInversion)(
        IBDA_DigitalDemodulator2 *This,
        SpectralInversion *pSpectralInversion);

    /*** IBDA_DigitalDemodulator2 methods ***/
    HRESULT (STDMETHODCALLTYPE *put_GuardInterval)(
        IBDA_DigitalDemodulator2 *This,
        GuardInterval *pGuardInterval);

    HRESULT (STDMETHODCALLTYPE *get_GuardInterval)(
        IBDA_DigitalDemodulator2 *This,
        GuardInterval *pGuardInterval);

    HRESULT (STDMETHODCALLTYPE *put_TransmissionMode)(
        IBDA_DigitalDemodulator2 *This,
        TransmissionMode *pTransmissionMode);

    HRESULT (STDMETHODCALLTYPE *get_TransmissionMode)(
        IBDA_DigitalDemodulator2 *This,
        TransmissionMode *pTransmissionMode);

    HRESULT (STDMETHODCALLTYPE *put_RollOff)(
        IBDA_DigitalDemodulator2 *This,
        RollOff *pRollOff);

    HRESULT (STDMETHODCALLTYPE *get_RollOff)(
        IBDA_DigitalDemodulator2 *This,
        RollOff *pRollOff);

    HRESULT (STDMETHODCALLTYPE *put_Pilot)(
        IBDA_DigitalDemodulator2 *This,
        Pilot *pPilot);

    HRESULT (STDMETHODCALLTYPE *get_Pilot)(
        IBDA_DigitalDemodulator2 *This,
        Pilot *pPilot);

    END_INTERFACE
} IBDA_DigitalDemodulator2Vtbl;

interface IBDA_DigitalDemodulator2 {
    CONST_VTBL IBDA_DigitalDemodulator2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_DigitalDemodulator2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_DigitalDemodulator2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_DigitalDemodulator2_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_DigitalDemodulator methods ***/
#define IBDA_DigitalDemodulator2_put_ModulationType(This,pModulationType) (This)->lpVtbl->put_ModulationType(This,pModulationType)
#define IBDA_DigitalDemodulator2_get_ModulationType(This,pModulationType) (This)->lpVtbl->get_ModulationType(This,pModulationType)
#define IBDA_DigitalDemodulator2_put_InnerFECMethod(This,pFECMethod) (This)->lpVtbl->put_InnerFECMethod(This,pFECMethod)
#define IBDA_DigitalDemodulator2_get_InnerFECMethod(This,pFECMethod) (This)->lpVtbl->get_InnerFECMethod(This,pFECMethod)
#define IBDA_DigitalDemodulator2_put_InnerFECRate(This,pFECRate) (This)->lpVtbl->put_InnerFECRate(This,pFECRate)
#define IBDA_DigitalDemodulator2_get_InnerFECRate(This,pFECRate) (This)->lpVtbl->get_InnerFECRate(This,pFECRate)
#define IBDA_DigitalDemodulator2_put_OuterFECMethod(This,pFECMethod) (This)->lpVtbl->put_OuterFECMethod(This,pFECMethod)
#define IBDA_DigitalDemodulator2_get_OuterFECMethod(This,pFECMethod) (This)->lpVtbl->get_OuterFECMethod(This,pFECMethod)
#define IBDA_DigitalDemodulator2_put_OuterFECRate(This,pFECRate) (This)->lpVtbl->put_OuterFECRate(This,pFECRate)
#define IBDA_DigitalDemodulator2_get_OuterFECRate(This,pFECRate) (This)->lpVtbl->get_OuterFECRate(This,pFECRate)
#define IBDA_DigitalDemodulator2_put_SymbolRate(This,pSymbolRate) (This)->lpVtbl->put_SymbolRate(This,pSymbolRate)
#define IBDA_DigitalDemodulator2_get_SymbolRate(This,pSymbolRate) (This)->lpVtbl->get_SymbolRate(This,pSymbolRate)
#define IBDA_DigitalDemodulator2_put_SpectralInversion(This,pSpectralInversion) (This)->lpVtbl->put_SpectralInversion(This,pSpectralInversion)
#define IBDA_DigitalDemodulator2_get_SpectralInversion(This,pSpectralInversion) (This)->lpVtbl->get_SpectralInversion(This,pSpectralInversion)
/*** IBDA_DigitalDemodulator2 methods ***/
#define IBDA_DigitalDemodulator2_put_GuardInterval(This,pGuardInterval) (This)->lpVtbl->put_GuardInterval(This,pGuardInterval)
#define IBDA_DigitalDemodulator2_get_GuardInterval(This,pGuardInterval) (This)->lpVtbl->get_GuardInterval(This,pGuardInterval)
#define IBDA_DigitalDemodulator2_put_TransmissionMode(This,pTransmissionMode) (This)->lpVtbl->put_TransmissionMode(This,pTransmissionMode)
#define IBDA_DigitalDemodulator2_get_TransmissionMode(This,pTransmissionMode) (This)->lpVtbl->get_TransmissionMode(This,pTransmissionMode)
#define IBDA_DigitalDemodulator2_put_RollOff(This,pRollOff) (This)->lpVtbl->put_RollOff(This,pRollOff)
#define IBDA_DigitalDemodulator2_get_RollOff(This,pRollOff) (This)->lpVtbl->get_RollOff(This,pRollOff)
#define IBDA_DigitalDemodulator2_put_Pilot(This,pPilot) (This)->lpVtbl->put_Pilot(This,pPilot)
#define IBDA_DigitalDemodulator2_get_Pilot(This,pPilot) (This)->lpVtbl->get_Pilot(This,pPilot)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_QueryInterface(IBDA_DigitalDemodulator2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_DigitalDemodulator2_AddRef(IBDA_DigitalDemodulator2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_DigitalDemodulator2_Release(IBDA_DigitalDemodulator2* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_DigitalDemodulator methods ***/
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_ModulationType(IBDA_DigitalDemodulator2* This,ModulationType *pModulationType) {
    return This->lpVtbl->put_ModulationType(This,pModulationType);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_ModulationType(IBDA_DigitalDemodulator2* This,ModulationType *pModulationType) {
    return This->lpVtbl->get_ModulationType(This,pModulationType);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_InnerFECMethod(IBDA_DigitalDemodulator2* This,FECMethod *pFECMethod) {
    return This->lpVtbl->put_InnerFECMethod(This,pFECMethod);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_InnerFECMethod(IBDA_DigitalDemodulator2* This,FECMethod *pFECMethod) {
    return This->lpVtbl->get_InnerFECMethod(This,pFECMethod);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_InnerFECRate(IBDA_DigitalDemodulator2* This,BinaryConvolutionCodeRate *pFECRate) {
    return This->lpVtbl->put_InnerFECRate(This,pFECRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_InnerFECRate(IBDA_DigitalDemodulator2* This,BinaryConvolutionCodeRate *pFECRate) {
    return This->lpVtbl->get_InnerFECRate(This,pFECRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_OuterFECMethod(IBDA_DigitalDemodulator2* This,FECMethod *pFECMethod) {
    return This->lpVtbl->put_OuterFECMethod(This,pFECMethod);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_OuterFECMethod(IBDA_DigitalDemodulator2* This,FECMethod *pFECMethod) {
    return This->lpVtbl->get_OuterFECMethod(This,pFECMethod);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_OuterFECRate(IBDA_DigitalDemodulator2* This,BinaryConvolutionCodeRate *pFECRate) {
    return This->lpVtbl->put_OuterFECRate(This,pFECRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_OuterFECRate(IBDA_DigitalDemodulator2* This,BinaryConvolutionCodeRate *pFECRate) {
    return This->lpVtbl->get_OuterFECRate(This,pFECRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_SymbolRate(IBDA_DigitalDemodulator2* This,ULONG *pSymbolRate) {
    return This->lpVtbl->put_SymbolRate(This,pSymbolRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_SymbolRate(IBDA_DigitalDemodulator2* This,ULONG *pSymbolRate) {
    return This->lpVtbl->get_SymbolRate(This,pSymbolRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_SpectralInversion(IBDA_DigitalDemodulator2* This,SpectralInversion *pSpectralInversion) {
    return This->lpVtbl->put_SpectralInversion(This,pSpectralInversion);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_SpectralInversion(IBDA_DigitalDemodulator2* This,SpectralInversion *pSpectralInversion) {
    return This->lpVtbl->get_SpectralInversion(This,pSpectralInversion);
}
/*** IBDA_DigitalDemodulator2 methods ***/
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_GuardInterval(IBDA_DigitalDemodulator2* This,GuardInterval *pGuardInterval) {
    return This->lpVtbl->put_GuardInterval(This,pGuardInterval);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_GuardInterval(IBDA_DigitalDemodulator2* This,GuardInterval *pGuardInterval) {
    return This->lpVtbl->get_GuardInterval(This,pGuardInterval);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_TransmissionMode(IBDA_DigitalDemodulator2* This,TransmissionMode *pTransmissionMode) {
    return This->lpVtbl->put_TransmissionMode(This,pTransmissionMode);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_TransmissionMode(IBDA_DigitalDemodulator2* This,TransmissionMode *pTransmissionMode) {
    return This->lpVtbl->get_TransmissionMode(This,pTransmissionMode);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_RollOff(IBDA_DigitalDemodulator2* This,RollOff *pRollOff) {
    return This->lpVtbl->put_RollOff(This,pRollOff);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_RollOff(IBDA_DigitalDemodulator2* This,RollOff *pRollOff) {
    return This->lpVtbl->get_RollOff(This,pRollOff);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_put_Pilot(IBDA_DigitalDemodulator2* This,Pilot *pPilot) {
    return This->lpVtbl->put_Pilot(This,pPilot);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator2_get_Pilot(IBDA_DigitalDemodulator2* This,Pilot *pPilot) {
    return This->lpVtbl->get_Pilot(This,pPilot);
}
#endif
#endif

#endif


#endif  /* __IBDA_DigitalDemodulator2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_DigitalDemodulator3 interface
 */
#ifndef __IBDA_DigitalDemodulator3_INTERFACE_DEFINED__
#define __IBDA_DigitalDemodulator3_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_DigitalDemodulator3, 0x13f19604, 0x7d32, 0x4359, 0x93,0xa2, 0xa0,0x52,0x05,0xd9,0x0a,0xc9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("13f19604-7d32-4359-93a2-a05205d90ac9")
IBDA_DigitalDemodulator3 : public IBDA_DigitalDemodulator2
{
    virtual HRESULT STDMETHODCALLTYPE put_SignalTimeouts(
        BDA_SIGNAL_TIMEOUTS *pSignalTimeouts) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SignalTimeouts(
        BDA_SIGNAL_TIMEOUTS *pSignalTimeouts) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_PLPNumber(
        ULONG *pPLPNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PLPNumber(
        ULONG *pPLPNumber) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_DigitalDemodulator3, 0x13f19604, 0x7d32, 0x4359, 0x93,0xa2, 0xa0,0x52,0x05,0xd9,0x0a,0xc9)
#endif
#else
typedef struct IBDA_DigitalDemodulator3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_DigitalDemodulator3 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_DigitalDemodulator3 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_DigitalDemodulator3 *This);

    /*** IBDA_DigitalDemodulator methods ***/
    HRESULT (STDMETHODCALLTYPE *put_ModulationType)(
        IBDA_DigitalDemodulator3 *This,
        ModulationType *pModulationType);

    HRESULT (STDMETHODCALLTYPE *get_ModulationType)(
        IBDA_DigitalDemodulator3 *This,
        ModulationType *pModulationType);

    HRESULT (STDMETHODCALLTYPE *put_InnerFECMethod)(
        IBDA_DigitalDemodulator3 *This,
        FECMethod *pFECMethod);

    HRESULT (STDMETHODCALLTYPE *get_InnerFECMethod)(
        IBDA_DigitalDemodulator3 *This,
        FECMethod *pFECMethod);

    HRESULT (STDMETHODCALLTYPE *put_InnerFECRate)(
        IBDA_DigitalDemodulator3 *This,
        BinaryConvolutionCodeRate *pFECRate);

    HRESULT (STDMETHODCALLTYPE *get_InnerFECRate)(
        IBDA_DigitalDemodulator3 *This,
        BinaryConvolutionCodeRate *pFECRate);

    HRESULT (STDMETHODCALLTYPE *put_OuterFECMethod)(
        IBDA_DigitalDemodulator3 *This,
        FECMethod *pFECMethod);

    HRESULT (STDMETHODCALLTYPE *get_OuterFECMethod)(
        IBDA_DigitalDemodulator3 *This,
        FECMethod *pFECMethod);

    HRESULT (STDMETHODCALLTYPE *put_OuterFECRate)(
        IBDA_DigitalDemodulator3 *This,
        BinaryConvolutionCodeRate *pFECRate);

    HRESULT (STDMETHODCALLTYPE *get_OuterFECRate)(
        IBDA_DigitalDemodulator3 *This,
        BinaryConvolutionCodeRate *pFECRate);

    HRESULT (STDMETHODCALLTYPE *put_SymbolRate)(
        IBDA_DigitalDemodulator3 *This,
        ULONG *pSymbolRate);

    HRESULT (STDMETHODCALLTYPE *get_SymbolRate)(
        IBDA_DigitalDemodulator3 *This,
        ULONG *pSymbolRate);

    HRESULT (STDMETHODCALLTYPE *put_SpectralInversion)(
        IBDA_DigitalDemodulator3 *This,
        SpectralInversion *pSpectralInversion);

    HRESULT (STDMETHODCALLTYPE *get_SpectralInversion)(
        IBDA_DigitalDemodulator3 *This,
        SpectralInversion *pSpectralInversion);

    /*** IBDA_DigitalDemodulator2 methods ***/
    HRESULT (STDMETHODCALLTYPE *put_GuardInterval)(
        IBDA_DigitalDemodulator3 *This,
        GuardInterval *pGuardInterval);

    HRESULT (STDMETHODCALLTYPE *get_GuardInterval)(
        IBDA_DigitalDemodulator3 *This,
        GuardInterval *pGuardInterval);

    HRESULT (STDMETHODCALLTYPE *put_TransmissionMode)(
        IBDA_DigitalDemodulator3 *This,
        TransmissionMode *pTransmissionMode);

    HRESULT (STDMETHODCALLTYPE *get_TransmissionMode)(
        IBDA_DigitalDemodulator3 *This,
        TransmissionMode *pTransmissionMode);

    HRESULT (STDMETHODCALLTYPE *put_RollOff)(
        IBDA_DigitalDemodulator3 *This,
        RollOff *pRollOff);

    HRESULT (STDMETHODCALLTYPE *get_RollOff)(
        IBDA_DigitalDemodulator3 *This,
        RollOff *pRollOff);

    HRESULT (STDMETHODCALLTYPE *put_Pilot)(
        IBDA_DigitalDemodulator3 *This,
        Pilot *pPilot);

    HRESULT (STDMETHODCALLTYPE *get_Pilot)(
        IBDA_DigitalDemodulator3 *This,
        Pilot *pPilot);

    /*** IBDA_DigitalDemodulator3 methods ***/
    HRESULT (STDMETHODCALLTYPE *put_SignalTimeouts)(
        IBDA_DigitalDemodulator3 *This,
        BDA_SIGNAL_TIMEOUTS *pSignalTimeouts);

    HRESULT (STDMETHODCALLTYPE *get_SignalTimeouts)(
        IBDA_DigitalDemodulator3 *This,
        BDA_SIGNAL_TIMEOUTS *pSignalTimeouts);

    HRESULT (STDMETHODCALLTYPE *put_PLPNumber)(
        IBDA_DigitalDemodulator3 *This,
        ULONG *pPLPNumber);

    HRESULT (STDMETHODCALLTYPE *get_PLPNumber)(
        IBDA_DigitalDemodulator3 *This,
        ULONG *pPLPNumber);

    END_INTERFACE
} IBDA_DigitalDemodulator3Vtbl;

interface IBDA_DigitalDemodulator3 {
    CONST_VTBL IBDA_DigitalDemodulator3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_DigitalDemodulator3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_DigitalDemodulator3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_DigitalDemodulator3_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_DigitalDemodulator methods ***/
#define IBDA_DigitalDemodulator3_put_ModulationType(This,pModulationType) (This)->lpVtbl->put_ModulationType(This,pModulationType)
#define IBDA_DigitalDemodulator3_get_ModulationType(This,pModulationType) (This)->lpVtbl->get_ModulationType(This,pModulationType)
#define IBDA_DigitalDemodulator3_put_InnerFECMethod(This,pFECMethod) (This)->lpVtbl->put_InnerFECMethod(This,pFECMethod)
#define IBDA_DigitalDemodulator3_get_InnerFECMethod(This,pFECMethod) (This)->lpVtbl->get_InnerFECMethod(This,pFECMethod)
#define IBDA_DigitalDemodulator3_put_InnerFECRate(This,pFECRate) (This)->lpVtbl->put_InnerFECRate(This,pFECRate)
#define IBDA_DigitalDemodulator3_get_InnerFECRate(This,pFECRate) (This)->lpVtbl->get_InnerFECRate(This,pFECRate)
#define IBDA_DigitalDemodulator3_put_OuterFECMethod(This,pFECMethod) (This)->lpVtbl->put_OuterFECMethod(This,pFECMethod)
#define IBDA_DigitalDemodulator3_get_OuterFECMethod(This,pFECMethod) (This)->lpVtbl->get_OuterFECMethod(This,pFECMethod)
#define IBDA_DigitalDemodulator3_put_OuterFECRate(This,pFECRate) (This)->lpVtbl->put_OuterFECRate(This,pFECRate)
#define IBDA_DigitalDemodulator3_get_OuterFECRate(This,pFECRate) (This)->lpVtbl->get_OuterFECRate(This,pFECRate)
#define IBDA_DigitalDemodulator3_put_SymbolRate(This,pSymbolRate) (This)->lpVtbl->put_SymbolRate(This,pSymbolRate)
#define IBDA_DigitalDemodulator3_get_SymbolRate(This,pSymbolRate) (This)->lpVtbl->get_SymbolRate(This,pSymbolRate)
#define IBDA_DigitalDemodulator3_put_SpectralInversion(This,pSpectralInversion) (This)->lpVtbl->put_SpectralInversion(This,pSpectralInversion)
#define IBDA_DigitalDemodulator3_get_SpectralInversion(This,pSpectralInversion) (This)->lpVtbl->get_SpectralInversion(This,pSpectralInversion)
/*** IBDA_DigitalDemodulator2 methods ***/
#define IBDA_DigitalDemodulator3_put_GuardInterval(This,pGuardInterval) (This)->lpVtbl->put_GuardInterval(This,pGuardInterval)
#define IBDA_DigitalDemodulator3_get_GuardInterval(This,pGuardInterval) (This)->lpVtbl->get_GuardInterval(This,pGuardInterval)
#define IBDA_DigitalDemodulator3_put_TransmissionMode(This,pTransmissionMode) (This)->lpVtbl->put_TransmissionMode(This,pTransmissionMode)
#define IBDA_DigitalDemodulator3_get_TransmissionMode(This,pTransmissionMode) (This)->lpVtbl->get_TransmissionMode(This,pTransmissionMode)
#define IBDA_DigitalDemodulator3_put_RollOff(This,pRollOff) (This)->lpVtbl->put_RollOff(This,pRollOff)
#define IBDA_DigitalDemodulator3_get_RollOff(This,pRollOff) (This)->lpVtbl->get_RollOff(This,pRollOff)
#define IBDA_DigitalDemodulator3_put_Pilot(This,pPilot) (This)->lpVtbl->put_Pilot(This,pPilot)
#define IBDA_DigitalDemodulator3_get_Pilot(This,pPilot) (This)->lpVtbl->get_Pilot(This,pPilot)
/*** IBDA_DigitalDemodulator3 methods ***/
#define IBDA_DigitalDemodulator3_put_SignalTimeouts(This,pSignalTimeouts) (This)->lpVtbl->put_SignalTimeouts(This,pSignalTimeouts)
#define IBDA_DigitalDemodulator3_get_SignalTimeouts(This,pSignalTimeouts) (This)->lpVtbl->get_SignalTimeouts(This,pSignalTimeouts)
#define IBDA_DigitalDemodulator3_put_PLPNumber(This,pPLPNumber) (This)->lpVtbl->put_PLPNumber(This,pPLPNumber)
#define IBDA_DigitalDemodulator3_get_PLPNumber(This,pPLPNumber) (This)->lpVtbl->get_PLPNumber(This,pPLPNumber)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_QueryInterface(IBDA_DigitalDemodulator3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_DigitalDemodulator3_AddRef(IBDA_DigitalDemodulator3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_DigitalDemodulator3_Release(IBDA_DigitalDemodulator3* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_DigitalDemodulator methods ***/
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_ModulationType(IBDA_DigitalDemodulator3* This,ModulationType *pModulationType) {
    return This->lpVtbl->put_ModulationType(This,pModulationType);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_ModulationType(IBDA_DigitalDemodulator3* This,ModulationType *pModulationType) {
    return This->lpVtbl->get_ModulationType(This,pModulationType);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_InnerFECMethod(IBDA_DigitalDemodulator3* This,FECMethod *pFECMethod) {
    return This->lpVtbl->put_InnerFECMethod(This,pFECMethod);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_InnerFECMethod(IBDA_DigitalDemodulator3* This,FECMethod *pFECMethod) {
    return This->lpVtbl->get_InnerFECMethod(This,pFECMethod);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_InnerFECRate(IBDA_DigitalDemodulator3* This,BinaryConvolutionCodeRate *pFECRate) {
    return This->lpVtbl->put_InnerFECRate(This,pFECRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_InnerFECRate(IBDA_DigitalDemodulator3* This,BinaryConvolutionCodeRate *pFECRate) {
    return This->lpVtbl->get_InnerFECRate(This,pFECRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_OuterFECMethod(IBDA_DigitalDemodulator3* This,FECMethod *pFECMethod) {
    return This->lpVtbl->put_OuterFECMethod(This,pFECMethod);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_OuterFECMethod(IBDA_DigitalDemodulator3* This,FECMethod *pFECMethod) {
    return This->lpVtbl->get_OuterFECMethod(This,pFECMethod);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_OuterFECRate(IBDA_DigitalDemodulator3* This,BinaryConvolutionCodeRate *pFECRate) {
    return This->lpVtbl->put_OuterFECRate(This,pFECRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_OuterFECRate(IBDA_DigitalDemodulator3* This,BinaryConvolutionCodeRate *pFECRate) {
    return This->lpVtbl->get_OuterFECRate(This,pFECRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_SymbolRate(IBDA_DigitalDemodulator3* This,ULONG *pSymbolRate) {
    return This->lpVtbl->put_SymbolRate(This,pSymbolRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_SymbolRate(IBDA_DigitalDemodulator3* This,ULONG *pSymbolRate) {
    return This->lpVtbl->get_SymbolRate(This,pSymbolRate);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_SpectralInversion(IBDA_DigitalDemodulator3* This,SpectralInversion *pSpectralInversion) {
    return This->lpVtbl->put_SpectralInversion(This,pSpectralInversion);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_SpectralInversion(IBDA_DigitalDemodulator3* This,SpectralInversion *pSpectralInversion) {
    return This->lpVtbl->get_SpectralInversion(This,pSpectralInversion);
}
/*** IBDA_DigitalDemodulator2 methods ***/
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_GuardInterval(IBDA_DigitalDemodulator3* This,GuardInterval *pGuardInterval) {
    return This->lpVtbl->put_GuardInterval(This,pGuardInterval);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_GuardInterval(IBDA_DigitalDemodulator3* This,GuardInterval *pGuardInterval) {
    return This->lpVtbl->get_GuardInterval(This,pGuardInterval);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_TransmissionMode(IBDA_DigitalDemodulator3* This,TransmissionMode *pTransmissionMode) {
    return This->lpVtbl->put_TransmissionMode(This,pTransmissionMode);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_TransmissionMode(IBDA_DigitalDemodulator3* This,TransmissionMode *pTransmissionMode) {
    return This->lpVtbl->get_TransmissionMode(This,pTransmissionMode);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_RollOff(IBDA_DigitalDemodulator3* This,RollOff *pRollOff) {
    return This->lpVtbl->put_RollOff(This,pRollOff);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_RollOff(IBDA_DigitalDemodulator3* This,RollOff *pRollOff) {
    return This->lpVtbl->get_RollOff(This,pRollOff);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_Pilot(IBDA_DigitalDemodulator3* This,Pilot *pPilot) {
    return This->lpVtbl->put_Pilot(This,pPilot);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_Pilot(IBDA_DigitalDemodulator3* This,Pilot *pPilot) {
    return This->lpVtbl->get_Pilot(This,pPilot);
}
/*** IBDA_DigitalDemodulator3 methods ***/
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_SignalTimeouts(IBDA_DigitalDemodulator3* This,BDA_SIGNAL_TIMEOUTS *pSignalTimeouts) {
    return This->lpVtbl->put_SignalTimeouts(This,pSignalTimeouts);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_SignalTimeouts(IBDA_DigitalDemodulator3* This,BDA_SIGNAL_TIMEOUTS *pSignalTimeouts) {
    return This->lpVtbl->get_SignalTimeouts(This,pSignalTimeouts);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_put_PLPNumber(IBDA_DigitalDemodulator3* This,ULONG *pPLPNumber) {
    return This->lpVtbl->put_PLPNumber(This,pPLPNumber);
}
static FORCEINLINE HRESULT IBDA_DigitalDemodulator3_get_PLPNumber(IBDA_DigitalDemodulator3* This,ULONG *pPLPNumber) {
    return This->lpVtbl->get_PLPNumber(This,pPLPNumber);
}
#endif
#endif

#endif


#endif  /* __IBDA_DigitalDemodulator3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICCSubStreamFiltering interface
 */
#ifndef __ICCSubStreamFiltering_INTERFACE_DEFINED__
#define __ICCSubStreamFiltering_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICCSubStreamFiltering, 0x4b2bd7ea, 0x8347, 0x467b, 0x8d,0xbf, 0x62,0xf7,0x84,0x92,0x9c,0xc3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4b2bd7ea-8347-467b-8dbf-62f784929cc3")
ICCSubStreamFiltering : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_SubstreamTypes(
        LONG *pTypes) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SubstreamTypes(
        LONG Types) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICCSubStreamFiltering, 0x4b2bd7ea, 0x8347, 0x467b, 0x8d,0xbf, 0x62,0xf7,0x84,0x92,0x9c,0xc3)
#endif
#else
typedef struct ICCSubStreamFilteringVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICCSubStreamFiltering *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICCSubStreamFiltering *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICCSubStreamFiltering *This);

    /*** ICCSubStreamFiltering methods ***/
    HRESULT (STDMETHODCALLTYPE *get_SubstreamTypes)(
        ICCSubStreamFiltering *This,
        LONG *pTypes);

    HRESULT (STDMETHODCALLTYPE *put_SubstreamTypes)(
        ICCSubStreamFiltering *This,
        LONG Types);

    END_INTERFACE
} ICCSubStreamFilteringVtbl;

interface ICCSubStreamFiltering {
    CONST_VTBL ICCSubStreamFilteringVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICCSubStreamFiltering_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICCSubStreamFiltering_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICCSubStreamFiltering_Release(This) (This)->lpVtbl->Release(This)
/*** ICCSubStreamFiltering methods ***/
#define ICCSubStreamFiltering_get_SubstreamTypes(This,pTypes) (This)->lpVtbl->get_SubstreamTypes(This,pTypes)
#define ICCSubStreamFiltering_put_SubstreamTypes(This,Types) (This)->lpVtbl->put_SubstreamTypes(This,Types)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICCSubStreamFiltering_QueryInterface(ICCSubStreamFiltering* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICCSubStreamFiltering_AddRef(ICCSubStreamFiltering* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICCSubStreamFiltering_Release(ICCSubStreamFiltering* This) {
    return This->lpVtbl->Release(This);
}
/*** ICCSubStreamFiltering methods ***/
static FORCEINLINE HRESULT ICCSubStreamFiltering_get_SubstreamTypes(ICCSubStreamFiltering* This,LONG *pTypes) {
    return This->lpVtbl->get_SubstreamTypes(This,pTypes);
}
static FORCEINLINE HRESULT ICCSubStreamFiltering_put_SubstreamTypes(ICCSubStreamFiltering* This,LONG Types) {
    return This->lpVtbl->put_SubstreamTypes(This,Types);
}
#endif
#endif

#endif


#endif  /* __ICCSubStreamFiltering_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_IPSinkControl interface
 */
#ifndef __IBDA_IPSinkControl_INTERFACE_DEFINED__
#define __IBDA_IPSinkControl_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_IPSinkControl, 0x3f4dc8e2, 0x4050, 0x11d3, 0x8f,0x4b, 0x00,0xc0,0x4f,0x79,0x71,0xe2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3f4dc8e2-4050-11d3-8f4b-00c04f7971e2")
IBDA_IPSinkControl : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetMulticastList(
        ULONG *pulcbSize,
        BYTE **pbBuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAdapterIPAddress(
        ULONG *pulcbSize,
        BYTE **pbBuffer) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_IPSinkControl, 0x3f4dc8e2, 0x4050, 0x11d3, 0x8f,0x4b, 0x00,0xc0,0x4f,0x79,0x71,0xe2)
#endif
#else
typedef struct IBDA_IPSinkControlVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_IPSinkControl *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_IPSinkControl *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_IPSinkControl *This);

    /*** IBDA_IPSinkControl methods ***/
    HRESULT (STDMETHODCALLTYPE *GetMulticastList)(
        IBDA_IPSinkControl *This,
        ULONG *pulcbSize,
        BYTE **pbBuffer);

    HRESULT (STDMETHODCALLTYPE *GetAdapterIPAddress)(
        IBDA_IPSinkControl *This,
        ULONG *pulcbSize,
        BYTE **pbBuffer);

    END_INTERFACE
} IBDA_IPSinkControlVtbl;

interface IBDA_IPSinkControl {
    CONST_VTBL IBDA_IPSinkControlVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_IPSinkControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_IPSinkControl_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_IPSinkControl_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_IPSinkControl methods ***/
#define IBDA_IPSinkControl_GetMulticastList(This,pulcbSize,pbBuffer) (This)->lpVtbl->GetMulticastList(This,pulcbSize,pbBuffer)
#define IBDA_IPSinkControl_GetAdapterIPAddress(This,pulcbSize,pbBuffer) (This)->lpVtbl->GetAdapterIPAddress(This,pulcbSize,pbBuffer)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_IPSinkControl_QueryInterface(IBDA_IPSinkControl* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_IPSinkControl_AddRef(IBDA_IPSinkControl* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_IPSinkControl_Release(IBDA_IPSinkControl* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_IPSinkControl methods ***/
static FORCEINLINE HRESULT IBDA_IPSinkControl_GetMulticastList(IBDA_IPSinkControl* This,ULONG *pulcbSize,BYTE **pbBuffer) {
    return This->lpVtbl->GetMulticastList(This,pulcbSize,pbBuffer);
}
static FORCEINLINE HRESULT IBDA_IPSinkControl_GetAdapterIPAddress(IBDA_IPSinkControl* This,ULONG *pulcbSize,BYTE **pbBuffer) {
    return This->lpVtbl->GetAdapterIPAddress(This,pulcbSize,pbBuffer);
}
#endif
#endif

#endif


#endif  /* __IBDA_IPSinkControl_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_IPSinkInfo interface
 */
#ifndef __IBDA_IPSinkInfo_INTERFACE_DEFINED__
#define __IBDA_IPSinkInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_IPSinkInfo, 0xa750108f, 0x492e, 0x4d51, 0x95,0xf7, 0x64,0x9b,0x23,0xff,0x7a,0xd7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a750108f-492e-4d51-95f7-649b23ff7ad7")
IBDA_IPSinkInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_MulticastList(
        ULONG *pulcbAddresses,
        BYTE **ppbAddressList) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AdapterIPAddress(
        BSTR *pbstrBuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AdapterDescription(
        BSTR *pbstrBuffer) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_IPSinkInfo, 0xa750108f, 0x492e, 0x4d51, 0x95,0xf7, 0x64,0x9b,0x23,0xff,0x7a,0xd7)
#endif
#else
typedef struct IBDA_IPSinkInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_IPSinkInfo *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_IPSinkInfo *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_IPSinkInfo *This);

    /*** IBDA_IPSinkInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *get_MulticastList)(
        IBDA_IPSinkInfo *This,
        ULONG *pulcbAddresses,
        BYTE **ppbAddressList);

    HRESULT (STDMETHODCALLTYPE *get_AdapterIPAddress)(
        IBDA_IPSinkInfo *This,
        BSTR *pbstrBuffer);

    HRESULT (STDMETHODCALLTYPE *get_AdapterDescription)(
        IBDA_IPSinkInfo *This,
        BSTR *pbstrBuffer);

    END_INTERFACE
} IBDA_IPSinkInfoVtbl;

interface IBDA_IPSinkInfo {
    CONST_VTBL IBDA_IPSinkInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_IPSinkInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_IPSinkInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_IPSinkInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_IPSinkInfo methods ***/
#define IBDA_IPSinkInfo_get_MulticastList(This,pulcbAddresses,ppbAddressList) (This)->lpVtbl->get_MulticastList(This,pulcbAddresses,ppbAddressList)
#define IBDA_IPSinkInfo_get_AdapterIPAddress(This,pbstrBuffer) (This)->lpVtbl->get_AdapterIPAddress(This,pbstrBuffer)
#define IBDA_IPSinkInfo_get_AdapterDescription(This,pbstrBuffer) (This)->lpVtbl->get_AdapterDescription(This,pbstrBuffer)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_IPSinkInfo_QueryInterface(IBDA_IPSinkInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_IPSinkInfo_AddRef(IBDA_IPSinkInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_IPSinkInfo_Release(IBDA_IPSinkInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_IPSinkInfo methods ***/
static FORCEINLINE HRESULT IBDA_IPSinkInfo_get_MulticastList(IBDA_IPSinkInfo* This,ULONG *pulcbAddresses,BYTE **ppbAddressList) {
    return This->lpVtbl->get_MulticastList(This,pulcbAddresses,ppbAddressList);
}
static FORCEINLINE HRESULT IBDA_IPSinkInfo_get_AdapterIPAddress(IBDA_IPSinkInfo* This,BSTR *pbstrBuffer) {
    return This->lpVtbl->get_AdapterIPAddress(This,pbstrBuffer);
}
static FORCEINLINE HRESULT IBDA_IPSinkInfo_get_AdapterDescription(IBDA_IPSinkInfo* This,BSTR *pbstrBuffer) {
    return This->lpVtbl->get_AdapterDescription(This,pbstrBuffer);
}
#endif
#endif

#endif


#endif  /* __IBDA_IPSinkInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IEnumPIDMap interface
 */
#ifndef __IEnumPIDMap_INTERFACE_DEFINED__
#define __IEnumPIDMap_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumPIDMap, 0xafb6c2a2, 0x2c41, 0x11d3, 0x8a,0x60, 0x00,0x00,0xf8,0x1e,0x0e,0x4a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("afb6c2a2-2c41-11d3-8a60-0000f81e0e4a")
IEnumPIDMap : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG cRequest,
        PID_MAP *pPIDMap,
        ULONG *pcReceived) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG cRecords) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumPIDMap **ppIEnumPIDMap) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumPIDMap, 0xafb6c2a2, 0x2c41, 0x11d3, 0x8a,0x60, 0x00,0x00,0xf8,0x1e,0x0e,0x4a)
#endif
#else
typedef struct IEnumPIDMapVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IEnumPIDMap *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IEnumPIDMap *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IEnumPIDMap *This);

    /*** IEnumPIDMap methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumPIDMap *This,
        ULONG cRequest,
        PID_MAP *pPIDMap,
        ULONG *pcReceived);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        IEnumPIDMap *This,
        ULONG cRecords);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        IEnumPIDMap *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumPIDMap *This,
        IEnumPIDMap **ppIEnumPIDMap);

    END_INTERFACE
} IEnumPIDMapVtbl;

interface IEnumPIDMap {
    CONST_VTBL IEnumPIDMapVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumPIDMap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumPIDMap_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumPIDMap_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumPIDMap methods ***/
#define IEnumPIDMap_Next(This,cRequest,pPIDMap,pcReceived) (This)->lpVtbl->Next(This,cRequest,pPIDMap,pcReceived)
#define IEnumPIDMap_Skip(This,cRecords) (This)->lpVtbl->Skip(This,cRecords)
#define IEnumPIDMap_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumPIDMap_Clone(This,ppIEnumPIDMap) (This)->lpVtbl->Clone(This,ppIEnumPIDMap)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IEnumPIDMap_QueryInterface(IEnumPIDMap* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IEnumPIDMap_AddRef(IEnumPIDMap* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IEnumPIDMap_Release(IEnumPIDMap* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumPIDMap methods ***/
static FORCEINLINE HRESULT IEnumPIDMap_Next(IEnumPIDMap* This,ULONG cRequest,PID_MAP *pPIDMap,ULONG *pcReceived) {
    return This->lpVtbl->Next(This,cRequest,pPIDMap,pcReceived);
}
static FORCEINLINE HRESULT IEnumPIDMap_Skip(IEnumPIDMap* This,ULONG cRecords) {
    return This->lpVtbl->Skip(This,cRecords);
}
static FORCEINLINE HRESULT IEnumPIDMap_Reset(IEnumPIDMap* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT IEnumPIDMap_Clone(IEnumPIDMap* This,IEnumPIDMap **ppIEnumPIDMap) {
    return This->lpVtbl->Clone(This,ppIEnumPIDMap);
}
#endif
#endif

#endif


#endif  /* __IEnumPIDMap_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IMPEG2PIDMap interface
 */
#ifndef __IMPEG2PIDMap_INTERFACE_DEFINED__
#define __IMPEG2PIDMap_INTERFACE_DEFINED__

DEFINE_GUID(IID_IMPEG2PIDMap, 0xafb6c2a1, 0x2c41, 0x11d3, 0x8a,0x60, 0x00,0x00,0xf8,0x1e,0x0e,0x4a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("afb6c2a1-2c41-11d3-8a60-0000f81e0e4a")
IMPEG2PIDMap : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE MapPID(
        ULONG culPID,
        ULONG *pulPID,
        MEDIA_SAMPLE_CONTENT MediaSampleContent) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnmapPID(
        ULONG culPID,
        ULONG *pulPID) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumPIDMap(
        IEnumPIDMap **pIEnumPIDMap) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IMPEG2PIDMap, 0xafb6c2a1, 0x2c41, 0x11d3, 0x8a,0x60, 0x00,0x00,0xf8,0x1e,0x0e,0x4a)
#endif
#else
typedef struct IMPEG2PIDMapVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IMPEG2PIDMap *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IMPEG2PIDMap *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IMPEG2PIDMap *This);

    /*** IMPEG2PIDMap methods ***/
    HRESULT (STDMETHODCALLTYPE *MapPID)(
        IMPEG2PIDMap *This,
        ULONG culPID,
        ULONG *pulPID,
        MEDIA_SAMPLE_CONTENT MediaSampleContent);

    HRESULT (STDMETHODCALLTYPE *UnmapPID)(
        IMPEG2PIDMap *This,
        ULONG culPID,
        ULONG *pulPID);

    HRESULT (STDMETHODCALLTYPE *EnumPIDMap)(
        IMPEG2PIDMap *This,
        IEnumPIDMap **pIEnumPIDMap);

    END_INTERFACE
} IMPEG2PIDMapVtbl;

interface IMPEG2PIDMap {
    CONST_VTBL IMPEG2PIDMapVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IMPEG2PIDMap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMPEG2PIDMap_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMPEG2PIDMap_Release(This) (This)->lpVtbl->Release(This)
/*** IMPEG2PIDMap methods ***/
#define IMPEG2PIDMap_MapPID(This,culPID,pulPID,MediaSampleContent) (This)->lpVtbl->MapPID(This,culPID,pulPID,MediaSampleContent)
#define IMPEG2PIDMap_UnmapPID(This,culPID,pulPID) (This)->lpVtbl->UnmapPID(This,culPID,pulPID)
#define IMPEG2PIDMap_EnumPIDMap(This,pIEnumPIDMap) (This)->lpVtbl->EnumPIDMap(This,pIEnumPIDMap)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IMPEG2PIDMap_QueryInterface(IMPEG2PIDMap* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IMPEG2PIDMap_AddRef(IMPEG2PIDMap* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IMPEG2PIDMap_Release(IMPEG2PIDMap* This) {
    return This->lpVtbl->Release(This);
}
/*** IMPEG2PIDMap methods ***/
static FORCEINLINE HRESULT IMPEG2PIDMap_MapPID(IMPEG2PIDMap* This,ULONG culPID,ULONG *pulPID,MEDIA_SAMPLE_CONTENT MediaSampleContent) {
    return This->lpVtbl->MapPID(This,culPID,pulPID,MediaSampleContent);
}
static FORCEINLINE HRESULT IMPEG2PIDMap_UnmapPID(IMPEG2PIDMap* This,ULONG culPID,ULONG *pulPID) {
    return This->lpVtbl->UnmapPID(This,culPID,pulPID);
}
static FORCEINLINE HRESULT IMPEG2PIDMap_EnumPIDMap(IMPEG2PIDMap* This,IEnumPIDMap **pIEnumPIDMap) {
    return This->lpVtbl->EnumPIDMap(This,pIEnumPIDMap);
}
#endif
#endif

#endif


#endif  /* __IMPEG2PIDMap_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IFrequencyMap interface
 */
#ifndef __IFrequencyMap_INTERFACE_DEFINED__
#define __IFrequencyMap_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFrequencyMap, 0x06fb45c1, 0x693c, 0x4ea7, 0xb7,0x9f, 0x7a,0x6a,0x54,0xd8,0xde,0xf2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("06fb45c1-693c-4ea7-b79f-7a6a54d8def2")
IFrequencyMap : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_FrequencyMapping(
        ULONG *ulCount,
        ULONG **ppulList) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_FrequencyMapping(
        ULONG ulCount,
        ULONG pList[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CountryCode(
        ULONG *pulCountryCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_CountryCode(
        ULONG ulCountryCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DefaultFrequencyMapping(
        ULONG ulCountryCode,
        ULONG *pulCount,
        ULONG **ppulList) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CountryCodeList(
        ULONG *pulCount,
        ULONG **ppulList) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFrequencyMap, 0x06fb45c1, 0x693c, 0x4ea7, 0xb7,0x9f, 0x7a,0x6a,0x54,0xd8,0xde,0xf2)
#endif
#else
typedef struct IFrequencyMapVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IFrequencyMap *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IFrequencyMap *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IFrequencyMap *This);

    /*** IFrequencyMap methods ***/
    HRESULT (STDMETHODCALLTYPE *get_FrequencyMapping)(
        IFrequencyMap *This,
        ULONG *ulCount,
        ULONG **ppulList);

    HRESULT (STDMETHODCALLTYPE *put_FrequencyMapping)(
        IFrequencyMap *This,
        ULONG ulCount,
        ULONG pList[]);

    HRESULT (STDMETHODCALLTYPE *get_CountryCode)(
        IFrequencyMap *This,
        ULONG *pulCountryCode);

    HRESULT (STDMETHODCALLTYPE *put_CountryCode)(
        IFrequencyMap *This,
        ULONG ulCountryCode);

    HRESULT (STDMETHODCALLTYPE *get_DefaultFrequencyMapping)(
        IFrequencyMap *This,
        ULONG ulCountryCode,
        ULONG *pulCount,
        ULONG **ppulList);

    HRESULT (STDMETHODCALLTYPE *get_CountryCodeList)(
        IFrequencyMap *This,
        ULONG *pulCount,
        ULONG **ppulList);

    END_INTERFACE
} IFrequencyMapVtbl;

interface IFrequencyMap {
    CONST_VTBL IFrequencyMapVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFrequencyMap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFrequencyMap_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFrequencyMap_Release(This) (This)->lpVtbl->Release(This)
/*** IFrequencyMap methods ***/
#define IFrequencyMap_get_FrequencyMapping(This,ulCount,ppulList) (This)->lpVtbl->get_FrequencyMapping(This,ulCount,ppulList)
#define IFrequencyMap_put_FrequencyMapping(This,ulCount,pList) (This)->lpVtbl->put_FrequencyMapping(This,ulCount,pList)
#define IFrequencyMap_get_CountryCode(This,pulCountryCode) (This)->lpVtbl->get_CountryCode(This,pulCountryCode)
#define IFrequencyMap_put_CountryCode(This,ulCountryCode) (This)->lpVtbl->put_CountryCode(This,ulCountryCode)
#define IFrequencyMap_get_DefaultFrequencyMapping(This,ulCountryCode,pulCount,ppulList) (This)->lpVtbl->get_DefaultFrequencyMapping(This,ulCountryCode,pulCount,ppulList)
#define IFrequencyMap_get_CountryCodeList(This,pulCount,ppulList) (This)->lpVtbl->get_CountryCodeList(This,pulCount,ppulList)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IFrequencyMap_QueryInterface(IFrequencyMap* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IFrequencyMap_AddRef(IFrequencyMap* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IFrequencyMap_Release(IFrequencyMap* This) {
    return This->lpVtbl->Release(This);
}
/*** IFrequencyMap methods ***/
static FORCEINLINE HRESULT IFrequencyMap_get_FrequencyMapping(IFrequencyMap* This,ULONG *ulCount,ULONG **ppulList) {
    return This->lpVtbl->get_FrequencyMapping(This,ulCount,ppulList);
}
static FORCEINLINE HRESULT IFrequencyMap_put_FrequencyMapping(IFrequencyMap* This,ULONG ulCount,ULONG pList[]) {
    return This->lpVtbl->put_FrequencyMapping(This,ulCount,pList);
}
static FORCEINLINE HRESULT IFrequencyMap_get_CountryCode(IFrequencyMap* This,ULONG *pulCountryCode) {
    return This->lpVtbl->get_CountryCode(This,pulCountryCode);
}
static FORCEINLINE HRESULT IFrequencyMap_put_CountryCode(IFrequencyMap* This,ULONG ulCountryCode) {
    return This->lpVtbl->put_CountryCode(This,ulCountryCode);
}
static FORCEINLINE HRESULT IFrequencyMap_get_DefaultFrequencyMapping(IFrequencyMap* This,ULONG ulCountryCode,ULONG *pulCount,ULONG **ppulList) {
    return This->lpVtbl->get_DefaultFrequencyMapping(This,ulCountryCode,pulCount,ppulList);
}
static FORCEINLINE HRESULT IFrequencyMap_get_CountryCodeList(IFrequencyMap* This,ULONG *pulCount,ULONG **ppulList) {
    return This->lpVtbl->get_CountryCodeList(This,pulCount,ppulList);
}
#endif
#endif

#endif


#endif  /* __IFrequencyMap_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_EasMessage interface
 */
#ifndef __IBDA_EasMessage_INTERFACE_DEFINED__
#define __IBDA_EasMessage_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_EasMessage, 0xd806973d, 0x3ebe, 0x46de, 0x8f,0xbb, 0x63,0x58,0xfe,0x78,0x42,0x08);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d806973d-3ebe-46de-8fbb-6358fe784208")
IBDA_EasMessage : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_EasMessage(
        ULONG ulEventID,
        IUnknown **ppEASObject) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_EasMessage, 0xd806973d, 0x3ebe, 0x46de, 0x8f,0xbb, 0x63,0x58,0xfe,0x78,0x42,0x08)
#endif
#else
typedef struct IBDA_EasMessageVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_EasMessage *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_EasMessage *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_EasMessage *This);

    /*** IBDA_EasMessage methods ***/
    HRESULT (STDMETHODCALLTYPE *get_EasMessage)(
        IBDA_EasMessage *This,
        ULONG ulEventID,
        IUnknown **ppEASObject);

    END_INTERFACE
} IBDA_EasMessageVtbl;

interface IBDA_EasMessage {
    CONST_VTBL IBDA_EasMessageVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_EasMessage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_EasMessage_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_EasMessage_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_EasMessage methods ***/
#define IBDA_EasMessage_get_EasMessage(This,ulEventID,ppEASObject) (This)->lpVtbl->get_EasMessage(This,ulEventID,ppEASObject)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_EasMessage_QueryInterface(IBDA_EasMessage* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_EasMessage_AddRef(IBDA_EasMessage* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_EasMessage_Release(IBDA_EasMessage* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_EasMessage methods ***/
static FORCEINLINE HRESULT IBDA_EasMessage_get_EasMessage(IBDA_EasMessage* This,ULONG ulEventID,IUnknown **ppEASObject) {
    return This->lpVtbl->get_EasMessage(This,ulEventID,ppEASObject);
}
#endif
#endif

#endif


#endif  /* __IBDA_EasMessage_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_TransportStreamInfo interface
 */
#ifndef __IBDA_TransportStreamInfo_INTERFACE_DEFINED__
#define __IBDA_TransportStreamInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_TransportStreamInfo, 0x8e882535, 0x5f86, 0x47ab, 0x86,0xcf, 0xc2,0x81,0xa7,0x2a,0x05,0x49);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8e882535-5f86-47ab-86cf-c281a72a0549")
IBDA_TransportStreamInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_PatTableTickCount(
        ULONG *pPatTickCount) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_TransportStreamInfo, 0x8e882535, 0x5f86, 0x47ab, 0x86,0xcf, 0xc2,0x81,0xa7,0x2a,0x05,0x49)
#endif
#else
typedef struct IBDA_TransportStreamInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_TransportStreamInfo *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_TransportStreamInfo *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_TransportStreamInfo *This);

    /*** IBDA_TransportStreamInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *get_PatTableTickCount)(
        IBDA_TransportStreamInfo *This,
        ULONG *pPatTickCount);

    END_INTERFACE
} IBDA_TransportStreamInfoVtbl;

interface IBDA_TransportStreamInfo {
    CONST_VTBL IBDA_TransportStreamInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_TransportStreamInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_TransportStreamInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_TransportStreamInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_TransportStreamInfo methods ***/
#define IBDA_TransportStreamInfo_get_PatTableTickCount(This,pPatTickCount) (This)->lpVtbl->get_PatTableTickCount(This,pPatTickCount)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_TransportStreamInfo_QueryInterface(IBDA_TransportStreamInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_TransportStreamInfo_AddRef(IBDA_TransportStreamInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_TransportStreamInfo_Release(IBDA_TransportStreamInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_TransportStreamInfo methods ***/
static FORCEINLINE HRESULT IBDA_TransportStreamInfo_get_PatTableTickCount(IBDA_TransportStreamInfo* This,ULONG *pPatTickCount) {
    return This->lpVtbl->get_PatTableTickCount(This,pPatTickCount);
}
#endif
#endif

#endif


#endif  /* __IBDA_TransportStreamInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_ConditionalAccess interface
 */
#ifndef __IBDA_ConditionalAccess_INTERFACE_DEFINED__
#define __IBDA_ConditionalAccess_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_ConditionalAccess, 0xcd51f1e0, 0x7be9, 0x4123, 0x84,0x82, 0xa2,0xa7,0x96,0xc0,0xa6,0xb0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cd51f1e0-7be9-4123-8482-a2a796c0a6b0")
IBDA_ConditionalAccess : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_SmartCardStatus(
        SmartCardStatusType *pCardStatus,
        SmartCardAssociationType *pCardAssociation,
        BSTR *pbstrCardError,
        VARIANT_BOOL *pfOOBLocked) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SmartCardInfo(
        BSTR *pbstrCardName,
        BSTR *pbstrCardManufacturer,
        VARIANT_BOOL *pfDaylightSavings,
        BYTE *pbyRatingRegion,
        LONG *plTimeZoneOffsetMinutes,
        BSTR *pbstrLanguage,
        EALocationCodeType *pEALocationCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SmartCardApplications(
        ULONG *pulcApplications,
        ULONG ulcApplicationsMax,
        SmartCardApplication rgApplications[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Entitlement(
        USHORT usVirtualChannel,
        EntitlementType *pEntitlement) = 0;

    virtual HRESULT STDMETHODCALLTYPE TuneByChannel(
        USHORT usVirtualChannel) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetProgram(
        USHORT usProgramNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddProgram(
        USHORT usProgramNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveProgram(
        USHORT usProgramNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetModuleUI(
        BYTE byDialogNumber,
        BSTR *pbstrURL) = 0;

    virtual HRESULT STDMETHODCALLTYPE InformUIClosed(
        BYTE byDialogNumber,
        UICloseReasonType CloseReason) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_ConditionalAccess, 0xcd51f1e0, 0x7be9, 0x4123, 0x84,0x82, 0xa2,0xa7,0x96,0xc0,0xa6,0xb0)
#endif
#else
typedef struct IBDA_ConditionalAccessVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_ConditionalAccess *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_ConditionalAccess *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_ConditionalAccess *This);

    /*** IBDA_ConditionalAccess methods ***/
    HRESULT (STDMETHODCALLTYPE *get_SmartCardStatus)(
        IBDA_ConditionalAccess *This,
        SmartCardStatusType *pCardStatus,
        SmartCardAssociationType *pCardAssociation,
        BSTR *pbstrCardError,
        VARIANT_BOOL *pfOOBLocked);

    HRESULT (STDMETHODCALLTYPE *get_SmartCardInfo)(
        IBDA_ConditionalAccess *This,
        BSTR *pbstrCardName,
        BSTR *pbstrCardManufacturer,
        VARIANT_BOOL *pfDaylightSavings,
        BYTE *pbyRatingRegion,
        LONG *plTimeZoneOffsetMinutes,
        BSTR *pbstrLanguage,
        EALocationCodeType *pEALocationCode);

    HRESULT (STDMETHODCALLTYPE *get_SmartCardApplications)(
        IBDA_ConditionalAccess *This,
        ULONG *pulcApplications,
        ULONG ulcApplicationsMax,
        SmartCardApplication rgApplications[]);

    HRESULT (STDMETHODCALLTYPE *get_Entitlement)(
        IBDA_ConditionalAccess *This,
        USHORT usVirtualChannel,
        EntitlementType *pEntitlement);

    HRESULT (STDMETHODCALLTYPE *TuneByChannel)(
        IBDA_ConditionalAccess *This,
        USHORT usVirtualChannel);

    HRESULT (STDMETHODCALLTYPE *SetProgram)(
        IBDA_ConditionalAccess *This,
        USHORT usProgramNumber);

    HRESULT (STDMETHODCALLTYPE *AddProgram)(
        IBDA_ConditionalAccess *This,
        USHORT usProgramNumber);

    HRESULT (STDMETHODCALLTYPE *RemoveProgram)(
        IBDA_ConditionalAccess *This,
        USHORT usProgramNumber);

    HRESULT (STDMETHODCALLTYPE *GetModuleUI)(
        IBDA_ConditionalAccess *This,
        BYTE byDialogNumber,
        BSTR *pbstrURL);

    HRESULT (STDMETHODCALLTYPE *InformUIClosed)(
        IBDA_ConditionalAccess *This,
        BYTE byDialogNumber,
        UICloseReasonType CloseReason);

    END_INTERFACE
} IBDA_ConditionalAccessVtbl;

interface IBDA_ConditionalAccess {
    CONST_VTBL IBDA_ConditionalAccessVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_ConditionalAccess_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_ConditionalAccess_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_ConditionalAccess_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_ConditionalAccess methods ***/
#define IBDA_ConditionalAccess_get_SmartCardStatus(This,pCardStatus,pCardAssociation,pbstrCardError,pfOOBLocked) (This)->lpVtbl->get_SmartCardStatus(This,pCardStatus,pCardAssociation,pbstrCardError,pfOOBLocked)
#define IBDA_ConditionalAccess_get_SmartCardInfo(This,pbstrCardName,pbstrCardManufacturer,pfDaylightSavings,pbyRatingRegion,plTimeZoneOffsetMinutes,pbstrLanguage,pEALocationCode) (This)->lpVtbl->get_SmartCardInfo(This,pbstrCardName,pbstrCardManufacturer,pfDaylightSavings,pbyRatingRegion,plTimeZoneOffsetMinutes,pbstrLanguage,pEALocationCode)
#define IBDA_ConditionalAccess_get_SmartCardApplications(This,pulcApplications,ulcApplicationsMax,rgApplications) (This)->lpVtbl->get_SmartCardApplications(This,pulcApplications,ulcApplicationsMax,rgApplications)
#define IBDA_ConditionalAccess_get_Entitlement(This,usVirtualChannel,pEntitlement) (This)->lpVtbl->get_Entitlement(This,usVirtualChannel,pEntitlement)
#define IBDA_ConditionalAccess_TuneByChannel(This,usVirtualChannel) (This)->lpVtbl->TuneByChannel(This,usVirtualChannel)
#define IBDA_ConditionalAccess_SetProgram(This,usProgramNumber) (This)->lpVtbl->SetProgram(This,usProgramNumber)
#define IBDA_ConditionalAccess_AddProgram(This,usProgramNumber) (This)->lpVtbl->AddProgram(This,usProgramNumber)
#define IBDA_ConditionalAccess_RemoveProgram(This,usProgramNumber) (This)->lpVtbl->RemoveProgram(This,usProgramNumber)
#define IBDA_ConditionalAccess_GetModuleUI(This,byDialogNumber,pbstrURL) (This)->lpVtbl->GetModuleUI(This,byDialogNumber,pbstrURL)
#define IBDA_ConditionalAccess_InformUIClosed(This,byDialogNumber,CloseReason) (This)->lpVtbl->InformUIClosed(This,byDialogNumber,CloseReason)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_ConditionalAccess_QueryInterface(IBDA_ConditionalAccess* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_ConditionalAccess_AddRef(IBDA_ConditionalAccess* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_ConditionalAccess_Release(IBDA_ConditionalAccess* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_ConditionalAccess methods ***/
static FORCEINLINE HRESULT IBDA_ConditionalAccess_get_SmartCardStatus(IBDA_ConditionalAccess* This,SmartCardStatusType *pCardStatus,SmartCardAssociationType *pCardAssociation,BSTR *pbstrCardError,VARIANT_BOOL *pfOOBLocked) {
    return This->lpVtbl->get_SmartCardStatus(This,pCardStatus,pCardAssociation,pbstrCardError,pfOOBLocked);
}
static FORCEINLINE HRESULT IBDA_ConditionalAccess_get_SmartCardInfo(IBDA_ConditionalAccess* This,BSTR *pbstrCardName,BSTR *pbstrCardManufacturer,VARIANT_BOOL *pfDaylightSavings,BYTE *pbyRatingRegion,LONG *plTimeZoneOffsetMinutes,BSTR *pbstrLanguage,EALocationCodeType *pEALocationCode) {
    return This->lpVtbl->get_SmartCardInfo(This,pbstrCardName,pbstrCardManufacturer,pfDaylightSavings,pbyRatingRegion,plTimeZoneOffsetMinutes,pbstrLanguage,pEALocationCode);
}
static FORCEINLINE HRESULT IBDA_ConditionalAccess_get_SmartCardApplications(IBDA_ConditionalAccess* This,ULONG *pulcApplications,ULONG ulcApplicationsMax,SmartCardApplication rgApplications[]) {
    return This->lpVtbl->get_SmartCardApplications(This,pulcApplications,ulcApplicationsMax,rgApplications);
}
static FORCEINLINE HRESULT IBDA_ConditionalAccess_get_Entitlement(IBDA_ConditionalAccess* This,USHORT usVirtualChannel,EntitlementType *pEntitlement) {
    return This->lpVtbl->get_Entitlement(This,usVirtualChannel,pEntitlement);
}
static FORCEINLINE HRESULT IBDA_ConditionalAccess_TuneByChannel(IBDA_ConditionalAccess* This,USHORT usVirtualChannel) {
    return This->lpVtbl->TuneByChannel(This,usVirtualChannel);
}
static FORCEINLINE HRESULT IBDA_ConditionalAccess_SetProgram(IBDA_ConditionalAccess* This,USHORT usProgramNumber) {
    return This->lpVtbl->SetProgram(This,usProgramNumber);
}
static FORCEINLINE HRESULT IBDA_ConditionalAccess_AddProgram(IBDA_ConditionalAccess* This,USHORT usProgramNumber) {
    return This->lpVtbl->AddProgram(This,usProgramNumber);
}
static FORCEINLINE HRESULT IBDA_ConditionalAccess_RemoveProgram(IBDA_ConditionalAccess* This,USHORT usProgramNumber) {
    return This->lpVtbl->RemoveProgram(This,usProgramNumber);
}
static FORCEINLINE HRESULT IBDA_ConditionalAccess_GetModuleUI(IBDA_ConditionalAccess* This,BYTE byDialogNumber,BSTR *pbstrURL) {
    return This->lpVtbl->GetModuleUI(This,byDialogNumber,pbstrURL);
}
static FORCEINLINE HRESULT IBDA_ConditionalAccess_InformUIClosed(IBDA_ConditionalAccess* This,BYTE byDialogNumber,UICloseReasonType CloseReason) {
    return This->lpVtbl->InformUIClosed(This,byDialogNumber,CloseReason);
}
#endif
#endif

#endif


#endif  /* __IBDA_ConditionalAccess_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_DiagnosticProperties interface
 */
#ifndef __IBDA_DiagnosticProperties_INTERFACE_DEFINED__
#define __IBDA_DiagnosticProperties_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_DiagnosticProperties, 0x20e80cb5, 0xc543, 0x4c1b, 0x8e,0xb3, 0x49,0xe7,0x19,0xee,0xe7,0xd4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("20e80cb5-c543-4c1b-8eb3-49e719eee7d4")
IBDA_DiagnosticProperties : public IPropertyBag
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_DiagnosticProperties, 0x20e80cb5, 0xc543, 0x4c1b, 0x8e,0xb3, 0x49,0xe7,0x19,0xee,0xe7,0xd4)
#endif
#else
typedef struct IBDA_DiagnosticPropertiesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_DiagnosticProperties *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_DiagnosticProperties *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_DiagnosticProperties *This);

    /*** IPropertyBag methods ***/
    HRESULT (STDMETHODCALLTYPE *Read)(
        IBDA_DiagnosticProperties *This,
        LPCOLESTR pszPropName,
        VARIANT *pVar,
        IErrorLog *pErrorLog);

    HRESULT (STDMETHODCALLTYPE *Write)(
        IBDA_DiagnosticProperties *This,
        LPCOLESTR pszPropName,
        VARIANT *pVar);

    END_INTERFACE
} IBDA_DiagnosticPropertiesVtbl;

interface IBDA_DiagnosticProperties {
    CONST_VTBL IBDA_DiagnosticPropertiesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_DiagnosticProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_DiagnosticProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_DiagnosticProperties_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyBag methods ***/
#define IBDA_DiagnosticProperties_Read(This,pszPropName,pVar,pErrorLog) (This)->lpVtbl->Read(This,pszPropName,pVar,pErrorLog)
#define IBDA_DiagnosticProperties_Write(This,pszPropName,pVar) (This)->lpVtbl->Write(This,pszPropName,pVar)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_DiagnosticProperties_QueryInterface(IBDA_DiagnosticProperties* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_DiagnosticProperties_AddRef(IBDA_DiagnosticProperties* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_DiagnosticProperties_Release(IBDA_DiagnosticProperties* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyBag methods ***/
static FORCEINLINE HRESULT IBDA_DiagnosticProperties_Read(IBDA_DiagnosticProperties* This,LPCOLESTR pszPropName,VARIANT *pVar,IErrorLog *pErrorLog) {
    return This->lpVtbl->Read(This,pszPropName,pVar,pErrorLog);
}
static FORCEINLINE HRESULT IBDA_DiagnosticProperties_Write(IBDA_DiagnosticProperties* This,LPCOLESTR pszPropName,VARIANT *pVar) {
    return This->lpVtbl->Write(This,pszPropName,pVar);
}
#endif
#endif

#endif


#endif  /* __IBDA_DiagnosticProperties_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_DRM interface
 */
#ifndef __IBDA_DRM_INTERFACE_DEFINED__
#define __IBDA_DRM_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_DRM, 0xf98d88b0, 0x1992, 0x4cd6, 0xa6,0xd9, 0xb9,0xaf,0xab,0x99,0x33,0x0d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f98d88b0-1992-4cd6-a6d9-b9afab99330d")
IBDA_DRM : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetDRMPairingStatus(
        DWORD *pdwStatus,
        HRESULT *phError) = 0;

    virtual HRESULT STDMETHODCALLTYPE PerformDRMPairing(
        BOOL fSync) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_DRM, 0xf98d88b0, 0x1992, 0x4cd6, 0xa6,0xd9, 0xb9,0xaf,0xab,0x99,0x33,0x0d)
#endif
#else
typedef struct IBDA_DRMVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_DRM *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_DRM *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_DRM *This);

    /*** IBDA_DRM methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDRMPairingStatus)(
        IBDA_DRM *This,
        DWORD *pdwStatus,
        HRESULT *phError);

    HRESULT (STDMETHODCALLTYPE *PerformDRMPairing)(
        IBDA_DRM *This,
        BOOL fSync);

    END_INTERFACE
} IBDA_DRMVtbl;

interface IBDA_DRM {
    CONST_VTBL IBDA_DRMVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_DRM_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_DRM_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_DRM_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_DRM methods ***/
#define IBDA_DRM_GetDRMPairingStatus(This,pdwStatus,phError) (This)->lpVtbl->GetDRMPairingStatus(This,pdwStatus,phError)
#define IBDA_DRM_PerformDRMPairing(This,fSync) (This)->lpVtbl->PerformDRMPairing(This,fSync)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_DRM_QueryInterface(IBDA_DRM* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_DRM_AddRef(IBDA_DRM* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_DRM_Release(IBDA_DRM* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_DRM methods ***/
static FORCEINLINE HRESULT IBDA_DRM_GetDRMPairingStatus(IBDA_DRM* This,DWORD *pdwStatus,HRESULT *phError) {
    return This->lpVtbl->GetDRMPairingStatus(This,pdwStatus,phError);
}
static FORCEINLINE HRESULT IBDA_DRM_PerformDRMPairing(IBDA_DRM* This,BOOL fSync) {
    return This->lpVtbl->PerformDRMPairing(This,fSync);
}
#endif
#endif

#endif


#endif  /* __IBDA_DRM_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_NameValueService interface
 */
#ifndef __IBDA_NameValueService_INTERFACE_DEFINED__
#define __IBDA_NameValueService_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_NameValueService, 0x7f0b3150, 0x7b81, 0x4ad4, 0x98,0xe3, 0x7e,0x90,0x97,0x09,0x43,0x01);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7f0b3150-7b81-4ad4-98e3-7e9097094301")
IBDA_NameValueService : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetValueNameByIndex(
        ULONG ulIndex,
        BSTR *pbstrName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetValue(
        BSTR bstrName,
        BSTR bstrLanguage,
        BSTR *pbstrValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetValue(
        ULONG ulDialogRequest,
        BSTR bstrLanguage,
        BSTR bstrName,
        BSTR bstrValue,
        ULONG ulReserved) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_NameValueService, 0x7f0b3150, 0x7b81, 0x4ad4, 0x98,0xe3, 0x7e,0x90,0x97,0x09,0x43,0x01)
#endif
#else
typedef struct IBDA_NameValueServiceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_NameValueService *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_NameValueService *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_NameValueService *This);

    /*** IBDA_NameValueService methods ***/
    HRESULT (STDMETHODCALLTYPE *GetValueNameByIndex)(
        IBDA_NameValueService *This,
        ULONG ulIndex,
        BSTR *pbstrName);

    HRESULT (STDMETHODCALLTYPE *GetValue)(
        IBDA_NameValueService *This,
        BSTR bstrName,
        BSTR bstrLanguage,
        BSTR *pbstrValue);

    HRESULT (STDMETHODCALLTYPE *SetValue)(
        IBDA_NameValueService *This,
        ULONG ulDialogRequest,
        BSTR bstrLanguage,
        BSTR bstrName,
        BSTR bstrValue,
        ULONG ulReserved);

    END_INTERFACE
} IBDA_NameValueServiceVtbl;

interface IBDA_NameValueService {
    CONST_VTBL IBDA_NameValueServiceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_NameValueService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_NameValueService_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_NameValueService_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_NameValueService methods ***/
#define IBDA_NameValueService_GetValueNameByIndex(This,ulIndex,pbstrName) (This)->lpVtbl->GetValueNameByIndex(This,ulIndex,pbstrName)
#define IBDA_NameValueService_GetValue(This,bstrName,bstrLanguage,pbstrValue) (This)->lpVtbl->GetValue(This,bstrName,bstrLanguage,pbstrValue)
#define IBDA_NameValueService_SetValue(This,ulDialogRequest,bstrLanguage,bstrName,bstrValue,ulReserved) (This)->lpVtbl->SetValue(This,ulDialogRequest,bstrLanguage,bstrName,bstrValue,ulReserved)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_NameValueService_QueryInterface(IBDA_NameValueService* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_NameValueService_AddRef(IBDA_NameValueService* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_NameValueService_Release(IBDA_NameValueService* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_NameValueService methods ***/
static FORCEINLINE HRESULT IBDA_NameValueService_GetValueNameByIndex(IBDA_NameValueService* This,ULONG ulIndex,BSTR *pbstrName) {
    return This->lpVtbl->GetValueNameByIndex(This,ulIndex,pbstrName);
}
static FORCEINLINE HRESULT IBDA_NameValueService_GetValue(IBDA_NameValueService* This,BSTR bstrName,BSTR bstrLanguage,BSTR *pbstrValue) {
    return This->lpVtbl->GetValue(This,bstrName,bstrLanguage,pbstrValue);
}
static FORCEINLINE HRESULT IBDA_NameValueService_SetValue(IBDA_NameValueService* This,ULONG ulDialogRequest,BSTR bstrLanguage,BSTR bstrName,BSTR bstrValue,ULONG ulReserved) {
    return This->lpVtbl->SetValue(This,ulDialogRequest,bstrLanguage,bstrName,bstrValue,ulReserved);
}
#endif
#endif

#endif


#endif  /* __IBDA_NameValueService_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_ConditionalAccessEx interface
 */
#ifndef __IBDA_ConditionalAccessEx_INTERFACE_DEFINED__
#define __IBDA_ConditionalAccessEx_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_ConditionalAccessEx, 0x497c3418, 0x23cb, 0x44ba, 0xbb,0x62, 0x76,0x9f,0x50,0x6f,0xce,0xa7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("497c3418-23cb-44ba-bb62-769f506fcea7")
IBDA_ConditionalAccessEx : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CheckEntitlementToken(
        ULONG ulDialogRequest,
        BSTR bstrLanguage,
        BDA_CONDITIONALACCESS_REQUESTTYPE RequestType,
        ULONG ulcbEntitlementTokenLen,
        BYTE *pbEntitlementToken,
        ULONG *pulDescrambleStatus) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCaptureToken(
        ULONG ulcbCaptureTokenLen,
        BYTE *pbCaptureToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE OpenBroadcastMmi(
        ULONG ulDialogRequest,
        BSTR bstrLanguage,
        ULONG EventId) = 0;

    virtual HRESULT STDMETHODCALLTYPE CloseMmiDialog(
        ULONG ulDialogRequest,
        BSTR bstrLanguage,
        ULONG ulDialogNumber,
        BDA_CONDITIONALACCESS_MMICLOSEREASON ReasonCode,
        ULONG *pulSessionResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateDialogRequestNumber(
        ULONG *pulDialogRequestNumber) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_ConditionalAccessEx, 0x497c3418, 0x23cb, 0x44ba, 0xbb,0x62, 0x76,0x9f,0x50,0x6f,0xce,0xa7)
#endif
#else
typedef struct IBDA_ConditionalAccessExVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_ConditionalAccessEx *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_ConditionalAccessEx *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_ConditionalAccessEx *This);

    /*** IBDA_ConditionalAccessEx methods ***/
    HRESULT (STDMETHODCALLTYPE *CheckEntitlementToken)(
        IBDA_ConditionalAccessEx *This,
        ULONG ulDialogRequest,
        BSTR bstrLanguage,
        BDA_CONDITIONALACCESS_REQUESTTYPE RequestType,
        ULONG ulcbEntitlementTokenLen,
        BYTE *pbEntitlementToken,
        ULONG *pulDescrambleStatus);

    HRESULT (STDMETHODCALLTYPE *SetCaptureToken)(
        IBDA_ConditionalAccessEx *This,
        ULONG ulcbCaptureTokenLen,
        BYTE *pbCaptureToken);

    HRESULT (STDMETHODCALLTYPE *OpenBroadcastMmi)(
        IBDA_ConditionalAccessEx *This,
        ULONG ulDialogRequest,
        BSTR bstrLanguage,
        ULONG EventId);

    HRESULT (STDMETHODCALLTYPE *CloseMmiDialog)(
        IBDA_ConditionalAccessEx *This,
        ULONG ulDialogRequest,
        BSTR bstrLanguage,
        ULONG ulDialogNumber,
        BDA_CONDITIONALACCESS_MMICLOSEREASON ReasonCode,
        ULONG *pulSessionResult);

    HRESULT (STDMETHODCALLTYPE *CreateDialogRequestNumber)(
        IBDA_ConditionalAccessEx *This,
        ULONG *pulDialogRequestNumber);

    END_INTERFACE
} IBDA_ConditionalAccessExVtbl;

interface IBDA_ConditionalAccessEx {
    CONST_VTBL IBDA_ConditionalAccessExVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_ConditionalAccessEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_ConditionalAccessEx_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_ConditionalAccessEx_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_ConditionalAccessEx methods ***/
#define IBDA_ConditionalAccessEx_CheckEntitlementToken(This,ulDialogRequest,bstrLanguage,RequestType,ulcbEntitlementTokenLen,pbEntitlementToken,pulDescrambleStatus) (This)->lpVtbl->CheckEntitlementToken(This,ulDialogRequest,bstrLanguage,RequestType,ulcbEntitlementTokenLen,pbEntitlementToken,pulDescrambleStatus)
#define IBDA_ConditionalAccessEx_SetCaptureToken(This,ulcbCaptureTokenLen,pbCaptureToken) (This)->lpVtbl->SetCaptureToken(This,ulcbCaptureTokenLen,pbCaptureToken)
#define IBDA_ConditionalAccessEx_OpenBroadcastMmi(This,ulDialogRequest,bstrLanguage,EventId) (This)->lpVtbl->OpenBroadcastMmi(This,ulDialogRequest,bstrLanguage,EventId)
#define IBDA_ConditionalAccessEx_CloseMmiDialog(This,ulDialogRequest,bstrLanguage,ulDialogNumber,ReasonCode,pulSessionResult) (This)->lpVtbl->CloseMmiDialog(This,ulDialogRequest,bstrLanguage,ulDialogNumber,ReasonCode,pulSessionResult)
#define IBDA_ConditionalAccessEx_CreateDialogRequestNumber(This,pulDialogRequestNumber) (This)->lpVtbl->CreateDialogRequestNumber(This,pulDialogRequestNumber)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_ConditionalAccessEx_QueryInterface(IBDA_ConditionalAccessEx* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_ConditionalAccessEx_AddRef(IBDA_ConditionalAccessEx* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_ConditionalAccessEx_Release(IBDA_ConditionalAccessEx* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_ConditionalAccessEx methods ***/
static FORCEINLINE HRESULT IBDA_ConditionalAccessEx_CheckEntitlementToken(IBDA_ConditionalAccessEx* This,ULONG ulDialogRequest,BSTR bstrLanguage,BDA_CONDITIONALACCESS_REQUESTTYPE RequestType,ULONG ulcbEntitlementTokenLen,BYTE *pbEntitlementToken,ULONG *pulDescrambleStatus) {
    return This->lpVtbl->CheckEntitlementToken(This,ulDialogRequest,bstrLanguage,RequestType,ulcbEntitlementTokenLen,pbEntitlementToken,pulDescrambleStatus);
}
static FORCEINLINE HRESULT IBDA_ConditionalAccessEx_SetCaptureToken(IBDA_ConditionalAccessEx* This,ULONG ulcbCaptureTokenLen,BYTE *pbCaptureToken) {
    return This->lpVtbl->SetCaptureToken(This,ulcbCaptureTokenLen,pbCaptureToken);
}
static FORCEINLINE HRESULT IBDA_ConditionalAccessEx_OpenBroadcastMmi(IBDA_ConditionalAccessEx* This,ULONG ulDialogRequest,BSTR bstrLanguage,ULONG EventId) {
    return This->lpVtbl->OpenBroadcastMmi(This,ulDialogRequest,bstrLanguage,EventId);
}
static FORCEINLINE HRESULT IBDA_ConditionalAccessEx_CloseMmiDialog(IBDA_ConditionalAccessEx* This,ULONG ulDialogRequest,BSTR bstrLanguage,ULONG ulDialogNumber,BDA_CONDITIONALACCESS_MMICLOSEREASON ReasonCode,ULONG *pulSessionResult) {
    return This->lpVtbl->CloseMmiDialog(This,ulDialogRequest,bstrLanguage,ulDialogNumber,ReasonCode,pulSessionResult);
}
static FORCEINLINE HRESULT IBDA_ConditionalAccessEx_CreateDialogRequestNumber(IBDA_ConditionalAccessEx* This,ULONG *pulDialogRequestNumber) {
    return This->lpVtbl->CreateDialogRequestNumber(This,pulDialogRequestNumber);
}
#endif
#endif

#endif


#endif  /* __IBDA_ConditionalAccessEx_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_ISDBConditionalAccess interface
 */
#ifndef __IBDA_ISDBConditionalAccess_INTERFACE_DEFINED__
#define __IBDA_ISDBConditionalAccess_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_ISDBConditionalAccess, 0x5e68c627, 0x16c2, 0x4e6c, 0xb1,0xe2, 0xd0,0x01,0x70,0xcd,0xaa,0x0f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5e68c627-16c2-4e6c-b1e2-d00170cdaa0f")
IBDA_ISDBConditionalAccess : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetIsdbCasRequest(
        ULONG ulRequestId,
        ULONG ulcbRequestBufferLen,
        BYTE *pbRequestBuffer) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_ISDBConditionalAccess, 0x5e68c627, 0x16c2, 0x4e6c, 0xb1,0xe2, 0xd0,0x01,0x70,0xcd,0xaa,0x0f)
#endif
#else
typedef struct IBDA_ISDBConditionalAccessVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_ISDBConditionalAccess *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_ISDBConditionalAccess *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_ISDBConditionalAccess *This);

    /*** IBDA_ISDBConditionalAccess methods ***/
    HRESULT (STDMETHODCALLTYPE *SetIsdbCasRequest)(
        IBDA_ISDBConditionalAccess *This,
        ULONG ulRequestId,
        ULONG ulcbRequestBufferLen,
        BYTE *pbRequestBuffer);

    END_INTERFACE
} IBDA_ISDBConditionalAccessVtbl;

interface IBDA_ISDBConditionalAccess {
    CONST_VTBL IBDA_ISDBConditionalAccessVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_ISDBConditionalAccess_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_ISDBConditionalAccess_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_ISDBConditionalAccess_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_ISDBConditionalAccess methods ***/
#define IBDA_ISDBConditionalAccess_SetIsdbCasRequest(This,ulRequestId,ulcbRequestBufferLen,pbRequestBuffer) (This)->lpVtbl->SetIsdbCasRequest(This,ulRequestId,ulcbRequestBufferLen,pbRequestBuffer)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_ISDBConditionalAccess_QueryInterface(IBDA_ISDBConditionalAccess* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_ISDBConditionalAccess_AddRef(IBDA_ISDBConditionalAccess* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_ISDBConditionalAccess_Release(IBDA_ISDBConditionalAccess* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_ISDBConditionalAccess methods ***/
static FORCEINLINE HRESULT IBDA_ISDBConditionalAccess_SetIsdbCasRequest(IBDA_ISDBConditionalAccess* This,ULONG ulRequestId,ULONG ulcbRequestBufferLen,BYTE *pbRequestBuffer) {
    return This->lpVtbl->SetIsdbCasRequest(This,ulRequestId,ulcbRequestBufferLen,pbRequestBuffer);
}
#endif
#endif

#endif


#endif  /* __IBDA_ISDBConditionalAccess_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_EventingService interface
 */
#ifndef __IBDA_EventingService_INTERFACE_DEFINED__
#define __IBDA_EventingService_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_EventingService, 0x207c413f, 0x00dc, 0x4c61, 0xba,0xd6, 0x6f,0xee,0x1f,0xf0,0x70,0x64);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("207c413f-00dc-4c61-bad6-6fee1ff07064")
IBDA_EventingService : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CompleteEvent(
        ULONG ulEventID,
        ULONG ulEventResult) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_EventingService, 0x207c413f, 0x00dc, 0x4c61, 0xba,0xd6, 0x6f,0xee,0x1f,0xf0,0x70,0x64)
#endif
#else
typedef struct IBDA_EventingServiceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_EventingService *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_EventingService *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_EventingService *This);

    /*** IBDA_EventingService methods ***/
    HRESULT (STDMETHODCALLTYPE *CompleteEvent)(
        IBDA_EventingService *This,
        ULONG ulEventID,
        ULONG ulEventResult);

    END_INTERFACE
} IBDA_EventingServiceVtbl;

interface IBDA_EventingService {
    CONST_VTBL IBDA_EventingServiceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_EventingService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_EventingService_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_EventingService_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_EventingService methods ***/
#define IBDA_EventingService_CompleteEvent(This,ulEventID,ulEventResult) (This)->lpVtbl->CompleteEvent(This,ulEventID,ulEventResult)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_EventingService_QueryInterface(IBDA_EventingService* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_EventingService_AddRef(IBDA_EventingService* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_EventingService_Release(IBDA_EventingService* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_EventingService methods ***/
static FORCEINLINE HRESULT IBDA_EventingService_CompleteEvent(IBDA_EventingService* This,ULONG ulEventID,ULONG ulEventResult) {
    return This->lpVtbl->CompleteEvent(This,ulEventID,ulEventResult);
}
#endif
#endif

#endif


#endif  /* __IBDA_EventingService_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_AUX interface
 */
#ifndef __IBDA_AUX_INTERFACE_DEFINED__
#define __IBDA_AUX_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_AUX, 0x7def4c09, 0x6e66, 0x4567, 0xa8,0x19, 0xf0,0xe1,0x7f,0x4a,0x81,0xab);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7def4c09-6e66-4567-a819-f0e17f4a81ab")
IBDA_AUX : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE QueryCapabilities(
        DWORD *pdwNumAuxInputsBSTR) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumCapability(
        DWORD dwIndex,
        DWORD *dwInputID,
        GUID *pConnectorType,
        DWORD *ConnTypeNum,
        DWORD *NumVideoStds,
        ULONGLONG *AnalogStds) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_AUX, 0x7def4c09, 0x6e66, 0x4567, 0xa8,0x19, 0xf0,0xe1,0x7f,0x4a,0x81,0xab)
#endif
#else
typedef struct IBDA_AUXVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_AUX *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_AUX *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_AUX *This);

    /*** IBDA_AUX methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryCapabilities)(
        IBDA_AUX *This,
        DWORD *pdwNumAuxInputsBSTR);

    HRESULT (STDMETHODCALLTYPE *EnumCapability)(
        IBDA_AUX *This,
        DWORD dwIndex,
        DWORD *dwInputID,
        GUID *pConnectorType,
        DWORD *ConnTypeNum,
        DWORD *NumVideoStds,
        ULONGLONG *AnalogStds);

    END_INTERFACE
} IBDA_AUXVtbl;

interface IBDA_AUX {
    CONST_VTBL IBDA_AUXVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_AUX_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_AUX_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_AUX_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_AUX methods ***/
#define IBDA_AUX_QueryCapabilities(This,pdwNumAuxInputsBSTR) (This)->lpVtbl->QueryCapabilities(This,pdwNumAuxInputsBSTR)
#define IBDA_AUX_EnumCapability(This,dwIndex,dwInputID,pConnectorType,ConnTypeNum,NumVideoStds,AnalogStds) (This)->lpVtbl->EnumCapability(This,dwIndex,dwInputID,pConnectorType,ConnTypeNum,NumVideoStds,AnalogStds)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_AUX_QueryInterface(IBDA_AUX* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_AUX_AddRef(IBDA_AUX* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_AUX_Release(IBDA_AUX* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_AUX methods ***/
static FORCEINLINE HRESULT IBDA_AUX_QueryCapabilities(IBDA_AUX* This,DWORD *pdwNumAuxInputsBSTR) {
    return This->lpVtbl->QueryCapabilities(This,pdwNumAuxInputsBSTR);
}
static FORCEINLINE HRESULT IBDA_AUX_EnumCapability(IBDA_AUX* This,DWORD dwIndex,DWORD *dwInputID,GUID *pConnectorType,DWORD *ConnTypeNum,DWORD *NumVideoStds,ULONGLONG *AnalogStds) {
    return This->lpVtbl->EnumCapability(This,dwIndex,dwInputID,pConnectorType,ConnTypeNum,NumVideoStds,AnalogStds);
}
#endif
#endif

#endif


#endif  /* __IBDA_AUX_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_Encoder interface
 */
#ifndef __IBDA_Encoder_INTERFACE_DEFINED__
#define __IBDA_Encoder_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_Encoder, 0x3a8bad59, 0x59fe, 0x4559, 0xa0,0xba, 0x39,0x6c,0xfa,0xa9,0x8a,0xe3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3a8bad59-59fe-4559-a0ba-396cfaa98ae3")
IBDA_Encoder : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE QueryCapabilities(
        DWORD *NumAudioFmts,
        DWORD *NumVideoFmts) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumAudioCapability(
        DWORD FmtIndex,
        DWORD *MethodID,
        DWORD *AlgorithmType,
        DWORD *SamplingRate,
        DWORD *BitDepth,
        DWORD *NumChannels) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumVideoCapability(
        DWORD FmtIndex,
        DWORD *MethodID,
        DWORD *AlgorithmType,
        DWORD *VerticalSize,
        DWORD *HorizontalSize,
        DWORD *AspectRatio,
        DWORD *FrameRateCode,
        DWORD *ProgressiveSequence) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetParameters(
        DWORD AudioBitrateMode,
        DWORD AudioBitrate,
        DWORD AudioMethodID,
        DWORD AudioProgram,
        DWORD VideoBitrateMode,
        DWORD VideoBitrate,
        DWORD VideoMethodID) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetState(
        DWORD *AudioBitrateMax,
        DWORD *AudioBitrateMin,
        DWORD *AudioBitrateMode,
        DWORD *AudioBitrateStepping,
        DWORD *AudioBitrate,
        DWORD *AudioMethodID,
        DWORD *AvailableAudioPrograms,
        DWORD *AudioProgram,
        DWORD *VideoBitrateMax,
        DWORD *VideoBitrateMin,
        DWORD *VideoBitrateMode,
        DWORD *VideoBitrate,
        DWORD *VideoBitrateStepping,
        DWORD *VideoMethodID,
        DWORD *SignalSourceID,
        ULONGLONG *SignalFormat,
        BOOL *SignalLock,
        LONG *SignalLevel,
        DWORD *SignalToNoiseRatio) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_Encoder, 0x3a8bad59, 0x59fe, 0x4559, 0xa0,0xba, 0x39,0x6c,0xfa,0xa9,0x8a,0xe3)
#endif
#else
typedef struct IBDA_EncoderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_Encoder *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_Encoder *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_Encoder *This);

    /*** IBDA_Encoder methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryCapabilities)(
        IBDA_Encoder *This,
        DWORD *NumAudioFmts,
        DWORD *NumVideoFmts);

    HRESULT (STDMETHODCALLTYPE *EnumAudioCapability)(
        IBDA_Encoder *This,
        DWORD FmtIndex,
        DWORD *MethodID,
        DWORD *AlgorithmType,
        DWORD *SamplingRate,
        DWORD *BitDepth,
        DWORD *NumChannels);

    HRESULT (STDMETHODCALLTYPE *EnumVideoCapability)(
        IBDA_Encoder *This,
        DWORD FmtIndex,
        DWORD *MethodID,
        DWORD *AlgorithmType,
        DWORD *VerticalSize,
        DWORD *HorizontalSize,
        DWORD *AspectRatio,
        DWORD *FrameRateCode,
        DWORD *ProgressiveSequence);

    HRESULT (STDMETHODCALLTYPE *SetParameters)(
        IBDA_Encoder *This,
        DWORD AudioBitrateMode,
        DWORD AudioBitrate,
        DWORD AudioMethodID,
        DWORD AudioProgram,
        DWORD VideoBitrateMode,
        DWORD VideoBitrate,
        DWORD VideoMethodID);

    HRESULT (STDMETHODCALLTYPE *GetState)(
        IBDA_Encoder *This,
        DWORD *AudioBitrateMax,
        DWORD *AudioBitrateMin,
        DWORD *AudioBitrateMode,
        DWORD *AudioBitrateStepping,
        DWORD *AudioBitrate,
        DWORD *AudioMethodID,
        DWORD *AvailableAudioPrograms,
        DWORD *AudioProgram,
        DWORD *VideoBitrateMax,
        DWORD *VideoBitrateMin,
        DWORD *VideoBitrateMode,
        DWORD *VideoBitrate,
        DWORD *VideoBitrateStepping,
        DWORD *VideoMethodID,
        DWORD *SignalSourceID,
        ULONGLONG *SignalFormat,
        BOOL *SignalLock,
        LONG *SignalLevel,
        DWORD *SignalToNoiseRatio);

    END_INTERFACE
} IBDA_EncoderVtbl;

interface IBDA_Encoder {
    CONST_VTBL IBDA_EncoderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_Encoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_Encoder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_Encoder_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_Encoder methods ***/
#define IBDA_Encoder_QueryCapabilities(This,NumAudioFmts,NumVideoFmts) (This)->lpVtbl->QueryCapabilities(This,NumAudioFmts,NumVideoFmts)
#define IBDA_Encoder_EnumAudioCapability(This,FmtIndex,MethodID,AlgorithmType,SamplingRate,BitDepth,NumChannels) (This)->lpVtbl->EnumAudioCapability(This,FmtIndex,MethodID,AlgorithmType,SamplingRate,BitDepth,NumChannels)
#define IBDA_Encoder_EnumVideoCapability(This,FmtIndex,MethodID,AlgorithmType,VerticalSize,HorizontalSize,AspectRatio,FrameRateCode,ProgressiveSequence) (This)->lpVtbl->EnumVideoCapability(This,FmtIndex,MethodID,AlgorithmType,VerticalSize,HorizontalSize,AspectRatio,FrameRateCode,ProgressiveSequence)
#define IBDA_Encoder_SetParameters(This,AudioBitrateMode,AudioBitrate,AudioMethodID,AudioProgram,VideoBitrateMode,VideoBitrate,VideoMethodID) (This)->lpVtbl->SetParameters(This,AudioBitrateMode,AudioBitrate,AudioMethodID,AudioProgram,VideoBitrateMode,VideoBitrate,VideoMethodID)
#define IBDA_Encoder_GetState(This,AudioBitrateMax,AudioBitrateMin,AudioBitrateMode,AudioBitrateStepping,AudioBitrate,AudioMethodID,AvailableAudioPrograms,AudioProgram,VideoBitrateMax,VideoBitrateMin,VideoBitrateMode,VideoBitrate,VideoBitrateStepping,VideoMethodID,SignalSourceID,SignalFormat,SignalLock,SignalLevel,SignalToNoiseRatio) (This)->lpVtbl->GetState(This,AudioBitrateMax,AudioBitrateMin,AudioBitrateMode,AudioBitrateStepping,AudioBitrate,AudioMethodID,AvailableAudioPrograms,AudioProgram,VideoBitrateMax,VideoBitrateMin,VideoBitrateMode,VideoBitrate,VideoBitrateStepping,VideoMethodID,SignalSourceID,SignalFormat,SignalLock,SignalLevel,SignalToNoiseRatio)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_Encoder_QueryInterface(IBDA_Encoder* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_Encoder_AddRef(IBDA_Encoder* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_Encoder_Release(IBDA_Encoder* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_Encoder methods ***/
static FORCEINLINE HRESULT IBDA_Encoder_QueryCapabilities(IBDA_Encoder* This,DWORD *NumAudioFmts,DWORD *NumVideoFmts) {
    return This->lpVtbl->QueryCapabilities(This,NumAudioFmts,NumVideoFmts);
}
static FORCEINLINE HRESULT IBDA_Encoder_EnumAudioCapability(IBDA_Encoder* This,DWORD FmtIndex,DWORD *MethodID,DWORD *AlgorithmType,DWORD *SamplingRate,DWORD *BitDepth,DWORD *NumChannels) {
    return This->lpVtbl->EnumAudioCapability(This,FmtIndex,MethodID,AlgorithmType,SamplingRate,BitDepth,NumChannels);
}
static FORCEINLINE HRESULT IBDA_Encoder_EnumVideoCapability(IBDA_Encoder* This,DWORD FmtIndex,DWORD *MethodID,DWORD *AlgorithmType,DWORD *VerticalSize,DWORD *HorizontalSize,DWORD *AspectRatio,DWORD *FrameRateCode,DWORD *ProgressiveSequence) {
    return This->lpVtbl->EnumVideoCapability(This,FmtIndex,MethodID,AlgorithmType,VerticalSize,HorizontalSize,AspectRatio,FrameRateCode,ProgressiveSequence);
}
static FORCEINLINE HRESULT IBDA_Encoder_SetParameters(IBDA_Encoder* This,DWORD AudioBitrateMode,DWORD AudioBitrate,DWORD AudioMethodID,DWORD AudioProgram,DWORD VideoBitrateMode,DWORD VideoBitrate,DWORD VideoMethodID) {
    return This->lpVtbl->SetParameters(This,AudioBitrateMode,AudioBitrate,AudioMethodID,AudioProgram,VideoBitrateMode,VideoBitrate,VideoMethodID);
}
static FORCEINLINE HRESULT IBDA_Encoder_GetState(IBDA_Encoder* This,DWORD *AudioBitrateMax,DWORD *AudioBitrateMin,DWORD *AudioBitrateMode,DWORD *AudioBitrateStepping,DWORD *AudioBitrate,DWORD *AudioMethodID,DWORD *AvailableAudioPrograms,DWORD *AudioProgram,DWORD *VideoBitrateMax,DWORD *VideoBitrateMin,DWORD *VideoBitrateMode,DWORD *VideoBitrate,DWORD *VideoBitrateStepping,DWORD *VideoMethodID,DWORD *SignalSourceID,ULONGLONG *SignalFormat,BOOL *SignalLock,LONG *SignalLevel,DWORD *SignalToNoiseRatio) {
    return This->lpVtbl->GetState(This,AudioBitrateMax,AudioBitrateMin,AudioBitrateMode,AudioBitrateStepping,AudioBitrate,AudioMethodID,AvailableAudioPrograms,AudioProgram,VideoBitrateMax,VideoBitrateMin,VideoBitrateMode,VideoBitrate,VideoBitrateStepping,VideoMethodID,SignalSourceID,SignalFormat,SignalLock,SignalLevel,SignalToNoiseRatio);
}
#endif
#endif

#endif


#endif  /* __IBDA_Encoder_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_FDC interface
 */
#ifndef __IBDA_FDC_INTERFACE_DEFINED__
#define __IBDA_FDC_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_FDC, 0x138adc7e, 0x58ae, 0x437f, 0xb0,0xb4, 0xc9,0xfe,0x19,0xd5,0xb4,0xac);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("138adc7e-58ae-437f-b0b4-c9fe19d5b4ac")
IBDA_FDC : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetStatus(
        DWORD *CurrentBitrate,
        BOOL *CarrierLock,
        DWORD *CurrentFrequency,
        BOOL *CurrentSpectrumInversion,
        BSTR *CurrentPIDList,
        BSTR *CurrentTIDList,
        BOOL *Overflow) = 0;

    virtual HRESULT STDMETHODCALLTYPE RequestTables(
        BSTR TableIDs) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddPid(
        BSTR PidsToAdd,
        DWORD *RemainingFilterEntries) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemovePid(
        BSTR PidsToRemove) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddTid(
        BSTR TidsToAdd,
        BSTR *CurrentTidList) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveTid(
        BSTR TidsToRemove) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTableSection(
        DWORD *Pid,
        DWORD MaxBufferSize,
        DWORD *ActualSize,
        BYTE *SecBuffer) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_FDC, 0x138adc7e, 0x58ae, 0x437f, 0xb0,0xb4, 0xc9,0xfe,0x19,0xd5,0xb4,0xac)
#endif
#else
typedef struct IBDA_FDCVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_FDC *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_FDC *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_FDC *This);

    /*** IBDA_FDC methods ***/
    HRESULT (STDMETHODCALLTYPE *GetStatus)(
        IBDA_FDC *This,
        DWORD *CurrentBitrate,
        BOOL *CarrierLock,
        DWORD *CurrentFrequency,
        BOOL *CurrentSpectrumInversion,
        BSTR *CurrentPIDList,
        BSTR *CurrentTIDList,
        BOOL *Overflow);

    HRESULT (STDMETHODCALLTYPE *RequestTables)(
        IBDA_FDC *This,
        BSTR TableIDs);

    HRESULT (STDMETHODCALLTYPE *AddPid)(
        IBDA_FDC *This,
        BSTR PidsToAdd,
        DWORD *RemainingFilterEntries);

    HRESULT (STDMETHODCALLTYPE *RemovePid)(
        IBDA_FDC *This,
        BSTR PidsToRemove);

    HRESULT (STDMETHODCALLTYPE *AddTid)(
        IBDA_FDC *This,
        BSTR TidsToAdd,
        BSTR *CurrentTidList);

    HRESULT (STDMETHODCALLTYPE *RemoveTid)(
        IBDA_FDC *This,
        BSTR TidsToRemove);

    HRESULT (STDMETHODCALLTYPE *GetTableSection)(
        IBDA_FDC *This,
        DWORD *Pid,
        DWORD MaxBufferSize,
        DWORD *ActualSize,
        BYTE *SecBuffer);

    END_INTERFACE
} IBDA_FDCVtbl;

interface IBDA_FDC {
    CONST_VTBL IBDA_FDCVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_FDC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_FDC_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_FDC_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_FDC methods ***/
#define IBDA_FDC_GetStatus(This,CurrentBitrate,CarrierLock,CurrentFrequency,CurrentSpectrumInversion,CurrentPIDList,CurrentTIDList,Overflow) (This)->lpVtbl->GetStatus(This,CurrentBitrate,CarrierLock,CurrentFrequency,CurrentSpectrumInversion,CurrentPIDList,CurrentTIDList,Overflow)
#define IBDA_FDC_RequestTables(This,TableIDs) (This)->lpVtbl->RequestTables(This,TableIDs)
#define IBDA_FDC_AddPid(This,PidsToAdd,RemainingFilterEntries) (This)->lpVtbl->AddPid(This,PidsToAdd,RemainingFilterEntries)
#define IBDA_FDC_RemovePid(This,PidsToRemove) (This)->lpVtbl->RemovePid(This,PidsToRemove)
#define IBDA_FDC_AddTid(This,TidsToAdd,CurrentTidList) (This)->lpVtbl->AddTid(This,TidsToAdd,CurrentTidList)
#define IBDA_FDC_RemoveTid(This,TidsToRemove) (This)->lpVtbl->RemoveTid(This,TidsToRemove)
#define IBDA_FDC_GetTableSection(This,Pid,MaxBufferSize,ActualSize,SecBuffer) (This)->lpVtbl->GetTableSection(This,Pid,MaxBufferSize,ActualSize,SecBuffer)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_FDC_QueryInterface(IBDA_FDC* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_FDC_AddRef(IBDA_FDC* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_FDC_Release(IBDA_FDC* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_FDC methods ***/
static FORCEINLINE HRESULT IBDA_FDC_GetStatus(IBDA_FDC* This,DWORD *CurrentBitrate,BOOL *CarrierLock,DWORD *CurrentFrequency,BOOL *CurrentSpectrumInversion,BSTR *CurrentPIDList,BSTR *CurrentTIDList,BOOL *Overflow) {
    return This->lpVtbl->GetStatus(This,CurrentBitrate,CarrierLock,CurrentFrequency,CurrentSpectrumInversion,CurrentPIDList,CurrentTIDList,Overflow);
}
static FORCEINLINE HRESULT IBDA_FDC_RequestTables(IBDA_FDC* This,BSTR TableIDs) {
    return This->lpVtbl->RequestTables(This,TableIDs);
}
static FORCEINLINE HRESULT IBDA_FDC_AddPid(IBDA_FDC* This,BSTR PidsToAdd,DWORD *RemainingFilterEntries) {
    return This->lpVtbl->AddPid(This,PidsToAdd,RemainingFilterEntries);
}
static FORCEINLINE HRESULT IBDA_FDC_RemovePid(IBDA_FDC* This,BSTR PidsToRemove) {
    return This->lpVtbl->RemovePid(This,PidsToRemove);
}
static FORCEINLINE HRESULT IBDA_FDC_AddTid(IBDA_FDC* This,BSTR TidsToAdd,BSTR *CurrentTidList) {
    return This->lpVtbl->AddTid(This,TidsToAdd,CurrentTidList);
}
static FORCEINLINE HRESULT IBDA_FDC_RemoveTid(IBDA_FDC* This,BSTR TidsToRemove) {
    return This->lpVtbl->RemoveTid(This,TidsToRemove);
}
static FORCEINLINE HRESULT IBDA_FDC_GetTableSection(IBDA_FDC* This,DWORD *Pid,DWORD MaxBufferSize,DWORD *ActualSize,BYTE *SecBuffer) {
    return This->lpVtbl->GetTableSection(This,Pid,MaxBufferSize,ActualSize,SecBuffer);
}
#endif
#endif

#endif


#endif  /* __IBDA_FDC_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_GuideDataDeliveryService interface
 */
#ifndef __IBDA_GuideDataDeliveryService_INTERFACE_DEFINED__
#define __IBDA_GuideDataDeliveryService_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_GuideDataDeliveryService, 0xc0afcb73, 0x23e7, 0x4bc6, 0xba,0xfa, 0xfd,0xc1,0x67,0xb4,0x71,0x9f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c0afcb73-23e7-4bc6-bafa-fdc167b4719f")
IBDA_GuideDataDeliveryService : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetGuideDataType(
        GUID *pguidDataType) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGuideData(
        ULONG *pulcbBufferLen,
        BYTE *pbBuffer,
        ULONG *pulGuideDataPercentageProgress) = 0;

    virtual HRESULT STDMETHODCALLTYPE RequestGuideDataUpdate(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTuneXmlFromServiceIdx(
        ULONG64 ul64ServiceIdx,
        BSTR *pbstrTuneXml) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetServices(
        ULONG *pulcbBufferLen,
        BYTE *pbBuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetServiceInfoFromTuneXml(
        BSTR bstrTuneXml,
        BSTR *pbstrServiceDescription) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_GuideDataDeliveryService, 0xc0afcb73, 0x23e7, 0x4bc6, 0xba,0xfa, 0xfd,0xc1,0x67,0xb4,0x71,0x9f)
#endif
#else
typedef struct IBDA_GuideDataDeliveryServiceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_GuideDataDeliveryService *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_GuideDataDeliveryService *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_GuideDataDeliveryService *This);

    /*** IBDA_GuideDataDeliveryService methods ***/
    HRESULT (STDMETHODCALLTYPE *GetGuideDataType)(
        IBDA_GuideDataDeliveryService *This,
        GUID *pguidDataType);

    HRESULT (STDMETHODCALLTYPE *GetGuideData)(
        IBDA_GuideDataDeliveryService *This,
        ULONG *pulcbBufferLen,
        BYTE *pbBuffer,
        ULONG *pulGuideDataPercentageProgress);

    HRESULT (STDMETHODCALLTYPE *RequestGuideDataUpdate)(
        IBDA_GuideDataDeliveryService *This);

    HRESULT (STDMETHODCALLTYPE *GetTuneXmlFromServiceIdx)(
        IBDA_GuideDataDeliveryService *This,
        ULONG64 ul64ServiceIdx,
        BSTR *pbstrTuneXml);

    HRESULT (STDMETHODCALLTYPE *GetServices)(
        IBDA_GuideDataDeliveryService *This,
        ULONG *pulcbBufferLen,
        BYTE *pbBuffer);

    HRESULT (STDMETHODCALLTYPE *GetServiceInfoFromTuneXml)(
        IBDA_GuideDataDeliveryService *This,
        BSTR bstrTuneXml,
        BSTR *pbstrServiceDescription);

    END_INTERFACE
} IBDA_GuideDataDeliveryServiceVtbl;

interface IBDA_GuideDataDeliveryService {
    CONST_VTBL IBDA_GuideDataDeliveryServiceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_GuideDataDeliveryService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_GuideDataDeliveryService_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_GuideDataDeliveryService_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_GuideDataDeliveryService methods ***/
#define IBDA_GuideDataDeliveryService_GetGuideDataType(This,pguidDataType) (This)->lpVtbl->GetGuideDataType(This,pguidDataType)
#define IBDA_GuideDataDeliveryService_GetGuideData(This,pulcbBufferLen,pbBuffer,pulGuideDataPercentageProgress) (This)->lpVtbl->GetGuideData(This,pulcbBufferLen,pbBuffer,pulGuideDataPercentageProgress)
#define IBDA_GuideDataDeliveryService_RequestGuideDataUpdate(This) (This)->lpVtbl->RequestGuideDataUpdate(This)
#define IBDA_GuideDataDeliveryService_GetTuneXmlFromServiceIdx(This,ul64ServiceIdx,pbstrTuneXml) (This)->lpVtbl->GetTuneXmlFromServiceIdx(This,ul64ServiceIdx,pbstrTuneXml)
#define IBDA_GuideDataDeliveryService_GetServices(This,pulcbBufferLen,pbBuffer) (This)->lpVtbl->GetServices(This,pulcbBufferLen,pbBuffer)
#define IBDA_GuideDataDeliveryService_GetServiceInfoFromTuneXml(This,bstrTuneXml,pbstrServiceDescription) (This)->lpVtbl->GetServiceInfoFromTuneXml(This,bstrTuneXml,pbstrServiceDescription)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_GuideDataDeliveryService_QueryInterface(IBDA_GuideDataDeliveryService* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_GuideDataDeliveryService_AddRef(IBDA_GuideDataDeliveryService* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_GuideDataDeliveryService_Release(IBDA_GuideDataDeliveryService* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_GuideDataDeliveryService methods ***/
static FORCEINLINE HRESULT IBDA_GuideDataDeliveryService_GetGuideDataType(IBDA_GuideDataDeliveryService* This,GUID *pguidDataType) {
    return This->lpVtbl->GetGuideDataType(This,pguidDataType);
}
static FORCEINLINE HRESULT IBDA_GuideDataDeliveryService_GetGuideData(IBDA_GuideDataDeliveryService* This,ULONG *pulcbBufferLen,BYTE *pbBuffer,ULONG *pulGuideDataPercentageProgress) {
    return This->lpVtbl->GetGuideData(This,pulcbBufferLen,pbBuffer,pulGuideDataPercentageProgress);
}
static FORCEINLINE HRESULT IBDA_GuideDataDeliveryService_RequestGuideDataUpdate(IBDA_GuideDataDeliveryService* This) {
    return This->lpVtbl->RequestGuideDataUpdate(This);
}
static FORCEINLINE HRESULT IBDA_GuideDataDeliveryService_GetTuneXmlFromServiceIdx(IBDA_GuideDataDeliveryService* This,ULONG64 ul64ServiceIdx,BSTR *pbstrTuneXml) {
    return This->lpVtbl->GetTuneXmlFromServiceIdx(This,ul64ServiceIdx,pbstrTuneXml);
}
static FORCEINLINE HRESULT IBDA_GuideDataDeliveryService_GetServices(IBDA_GuideDataDeliveryService* This,ULONG *pulcbBufferLen,BYTE *pbBuffer) {
    return This->lpVtbl->GetServices(This,pulcbBufferLen,pbBuffer);
}
static FORCEINLINE HRESULT IBDA_GuideDataDeliveryService_GetServiceInfoFromTuneXml(IBDA_GuideDataDeliveryService* This,BSTR bstrTuneXml,BSTR *pbstrServiceDescription) {
    return This->lpVtbl->GetServiceInfoFromTuneXml(This,bstrTuneXml,pbstrServiceDescription);
}
#endif
#endif

#endif


#endif  /* __IBDA_GuideDataDeliveryService_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_DRMService interface
 */
#ifndef __IBDA_DRMService_INTERFACE_DEFINED__
#define __IBDA_DRMService_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_DRMService, 0xbff6b5bb, 0xb0ae, 0x484c, 0x9d,0xca, 0x73,0x52,0x8f,0xb0,0xb4,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bff6b5bb-b0ae-484c-9dca-73528fb0b46e")
IBDA_DRMService : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetDRM(
        GUID *puuidNewDrm) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDRMStatus(
        BSTR *pbstrDrmUuidList,
        GUID *DrmUuid) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_DRMService, 0xbff6b5bb, 0xb0ae, 0x484c, 0x9d,0xca, 0x73,0x52,0x8f,0xb0,0xb4,0x6e)
#endif
#else
typedef struct IBDA_DRMServiceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_DRMService *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_DRMService *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_DRMService *This);

    /*** IBDA_DRMService methods ***/
    HRESULT (STDMETHODCALLTYPE *SetDRM)(
        IBDA_DRMService *This,
        GUID *puuidNewDrm);

    HRESULT (STDMETHODCALLTYPE *GetDRMStatus)(
        IBDA_DRMService *This,
        BSTR *pbstrDrmUuidList,
        GUID *DrmUuid);

    END_INTERFACE
} IBDA_DRMServiceVtbl;

interface IBDA_DRMService {
    CONST_VTBL IBDA_DRMServiceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_DRMService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_DRMService_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_DRMService_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_DRMService methods ***/
#define IBDA_DRMService_SetDRM(This,puuidNewDrm) (This)->lpVtbl->SetDRM(This,puuidNewDrm)
#define IBDA_DRMService_GetDRMStatus(This,pbstrDrmUuidList,DrmUuid) (This)->lpVtbl->GetDRMStatus(This,pbstrDrmUuidList,DrmUuid)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_DRMService_QueryInterface(IBDA_DRMService* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_DRMService_AddRef(IBDA_DRMService* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_DRMService_Release(IBDA_DRMService* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_DRMService methods ***/
static FORCEINLINE HRESULT IBDA_DRMService_SetDRM(IBDA_DRMService* This,GUID *puuidNewDrm) {
    return This->lpVtbl->SetDRM(This,puuidNewDrm);
}
static FORCEINLINE HRESULT IBDA_DRMService_GetDRMStatus(IBDA_DRMService* This,BSTR *pbstrDrmUuidList,GUID *DrmUuid) {
    return This->lpVtbl->GetDRMStatus(This,pbstrDrmUuidList,DrmUuid);
}
#endif
#endif

#endif


#endif  /* __IBDA_DRMService_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_WMDRMSession interface
 */
#ifndef __IBDA_WMDRMSession_INTERFACE_DEFINED__
#define __IBDA_WMDRMSession_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_WMDRMSession, 0x4be6fa3d, 0x07cd, 0x4139, 0x8b,0x80, 0x8c,0x18,0xba,0x3a,0xec,0x88);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4be6fa3d-07cd-4139-8b80-8c18ba3aec88")
IBDA_WMDRMSession : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetStatus(
        ULONG *MaxCaptureToken,
        ULONG *MaxStreamingPid,
        ULONG *MaxLicense,
        ULONG *MinSecurityLevel,
        ULONG *RevInfoSequenceNumber,
        ULONGLONG *RevInfoIssuedTime,
        ULONG *RevInfoTTL,
        ULONG *RevListVersion,
        ULONG *ulState) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRevInfo(
        ULONG ulRevInfoLen,
        BYTE *pbRevInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCrl(
        ULONG ulCrlLen,
        BYTE *pbCrlLen) = 0;

    virtual HRESULT STDMETHODCALLTYPE TransactMessage(
        ULONG ulcbRequest,
        BYTE *pbRequest,
        ULONG *pulcbResponse,
        BYTE *pbResponse) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetLicense(
        GUID *uuidKey,
        ULONG *pulPackageLen,
        BYTE *pbPackage) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReissueLicense(
        GUID *uuidKey) = 0;

    virtual HRESULT STDMETHODCALLTYPE RenewLicense(
        ULONG ulInXmrLicenseLen,
        BYTE *pbInXmrLicense,
        ULONG ulEntitlementTokenLen,
        BYTE *pbEntitlementToken,
        ULONG *pulDescrambleStatus,
        ULONG *pulOutXmrLicenseLen,
        BYTE *pbOutXmrLicense) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetKeyInfo(
        ULONG *pulKeyInfoLen,
        BYTE *pbKeyInfo) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_WMDRMSession, 0x4be6fa3d, 0x07cd, 0x4139, 0x8b,0x80, 0x8c,0x18,0xba,0x3a,0xec,0x88)
#endif
#else
typedef struct IBDA_WMDRMSessionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_WMDRMSession *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_WMDRMSession *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_WMDRMSession *This);

    /*** IBDA_WMDRMSession methods ***/
    HRESULT (STDMETHODCALLTYPE *GetStatus)(
        IBDA_WMDRMSession *This,
        ULONG *MaxCaptureToken,
        ULONG *MaxStreamingPid,
        ULONG *MaxLicense,
        ULONG *MinSecurityLevel,
        ULONG *RevInfoSequenceNumber,
        ULONGLONG *RevInfoIssuedTime,
        ULONG *RevInfoTTL,
        ULONG *RevListVersion,
        ULONG *ulState);

    HRESULT (STDMETHODCALLTYPE *SetRevInfo)(
        IBDA_WMDRMSession *This,
        ULONG ulRevInfoLen,
        BYTE *pbRevInfo);

    HRESULT (STDMETHODCALLTYPE *SetCrl)(
        IBDA_WMDRMSession *This,
        ULONG ulCrlLen,
        BYTE *pbCrlLen);

    HRESULT (STDMETHODCALLTYPE *TransactMessage)(
        IBDA_WMDRMSession *This,
        ULONG ulcbRequest,
        BYTE *pbRequest,
        ULONG *pulcbResponse,
        BYTE *pbResponse);

    HRESULT (STDMETHODCALLTYPE *GetLicense)(
        IBDA_WMDRMSession *This,
        GUID *uuidKey,
        ULONG *pulPackageLen,
        BYTE *pbPackage);

    HRESULT (STDMETHODCALLTYPE *ReissueLicense)(
        IBDA_WMDRMSession *This,
        GUID *uuidKey);

    HRESULT (STDMETHODCALLTYPE *RenewLicense)(
        IBDA_WMDRMSession *This,
        ULONG ulInXmrLicenseLen,
        BYTE *pbInXmrLicense,
        ULONG ulEntitlementTokenLen,
        BYTE *pbEntitlementToken,
        ULONG *pulDescrambleStatus,
        ULONG *pulOutXmrLicenseLen,
        BYTE *pbOutXmrLicense);

    HRESULT (STDMETHODCALLTYPE *GetKeyInfo)(
        IBDA_WMDRMSession *This,
        ULONG *pulKeyInfoLen,
        BYTE *pbKeyInfo);

    END_INTERFACE
} IBDA_WMDRMSessionVtbl;

interface IBDA_WMDRMSession {
    CONST_VTBL IBDA_WMDRMSessionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_WMDRMSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_WMDRMSession_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_WMDRMSession_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_WMDRMSession methods ***/
#define IBDA_WMDRMSession_GetStatus(This,MaxCaptureToken,MaxStreamingPid,MaxLicense,MinSecurityLevel,RevInfoSequenceNumber,RevInfoIssuedTime,RevInfoTTL,RevListVersion,ulState) (This)->lpVtbl->GetStatus(This,MaxCaptureToken,MaxStreamingPid,MaxLicense,MinSecurityLevel,RevInfoSequenceNumber,RevInfoIssuedTime,RevInfoTTL,RevListVersion,ulState)
#define IBDA_WMDRMSession_SetRevInfo(This,ulRevInfoLen,pbRevInfo) (This)->lpVtbl->SetRevInfo(This,ulRevInfoLen,pbRevInfo)
#define IBDA_WMDRMSession_SetCrl(This,ulCrlLen,pbCrlLen) (This)->lpVtbl->SetCrl(This,ulCrlLen,pbCrlLen)
#define IBDA_WMDRMSession_TransactMessage(This,ulcbRequest,pbRequest,pulcbResponse,pbResponse) (This)->lpVtbl->TransactMessage(This,ulcbRequest,pbRequest,pulcbResponse,pbResponse)
#define IBDA_WMDRMSession_GetLicense(This,uuidKey,pulPackageLen,pbPackage) (This)->lpVtbl->GetLicense(This,uuidKey,pulPackageLen,pbPackage)
#define IBDA_WMDRMSession_ReissueLicense(This,uuidKey) (This)->lpVtbl->ReissueLicense(This,uuidKey)
#define IBDA_WMDRMSession_RenewLicense(This,ulInXmrLicenseLen,pbInXmrLicense,ulEntitlementTokenLen,pbEntitlementToken,pulDescrambleStatus,pulOutXmrLicenseLen,pbOutXmrLicense) (This)->lpVtbl->RenewLicense(This,ulInXmrLicenseLen,pbInXmrLicense,ulEntitlementTokenLen,pbEntitlementToken,pulDescrambleStatus,pulOutXmrLicenseLen,pbOutXmrLicense)
#define IBDA_WMDRMSession_GetKeyInfo(This,pulKeyInfoLen,pbKeyInfo) (This)->lpVtbl->GetKeyInfo(This,pulKeyInfoLen,pbKeyInfo)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_WMDRMSession_QueryInterface(IBDA_WMDRMSession* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_WMDRMSession_AddRef(IBDA_WMDRMSession* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_WMDRMSession_Release(IBDA_WMDRMSession* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_WMDRMSession methods ***/
static FORCEINLINE HRESULT IBDA_WMDRMSession_GetStatus(IBDA_WMDRMSession* This,ULONG *MaxCaptureToken,ULONG *MaxStreamingPid,ULONG *MaxLicense,ULONG *MinSecurityLevel,ULONG *RevInfoSequenceNumber,ULONGLONG *RevInfoIssuedTime,ULONG *RevInfoTTL,ULONG *RevListVersion,ULONG *ulState) {
    return This->lpVtbl->GetStatus(This,MaxCaptureToken,MaxStreamingPid,MaxLicense,MinSecurityLevel,RevInfoSequenceNumber,RevInfoIssuedTime,RevInfoTTL,RevListVersion,ulState);
}
static FORCEINLINE HRESULT IBDA_WMDRMSession_SetRevInfo(IBDA_WMDRMSession* This,ULONG ulRevInfoLen,BYTE *pbRevInfo) {
    return This->lpVtbl->SetRevInfo(This,ulRevInfoLen,pbRevInfo);
}
static FORCEINLINE HRESULT IBDA_WMDRMSession_SetCrl(IBDA_WMDRMSession* This,ULONG ulCrlLen,BYTE *pbCrlLen) {
    return This->lpVtbl->SetCrl(This,ulCrlLen,pbCrlLen);
}
static FORCEINLINE HRESULT IBDA_WMDRMSession_TransactMessage(IBDA_WMDRMSession* This,ULONG ulcbRequest,BYTE *pbRequest,ULONG *pulcbResponse,BYTE *pbResponse) {
    return This->lpVtbl->TransactMessage(This,ulcbRequest,pbRequest,pulcbResponse,pbResponse);
}
static FORCEINLINE HRESULT IBDA_WMDRMSession_GetLicense(IBDA_WMDRMSession* This,GUID *uuidKey,ULONG *pulPackageLen,BYTE *pbPackage) {
    return This->lpVtbl->GetLicense(This,uuidKey,pulPackageLen,pbPackage);
}
static FORCEINLINE HRESULT IBDA_WMDRMSession_ReissueLicense(IBDA_WMDRMSession* This,GUID *uuidKey) {
    return This->lpVtbl->ReissueLicense(This,uuidKey);
}
static FORCEINLINE HRESULT IBDA_WMDRMSession_RenewLicense(IBDA_WMDRMSession* This,ULONG ulInXmrLicenseLen,BYTE *pbInXmrLicense,ULONG ulEntitlementTokenLen,BYTE *pbEntitlementToken,ULONG *pulDescrambleStatus,ULONG *pulOutXmrLicenseLen,BYTE *pbOutXmrLicense) {
    return This->lpVtbl->RenewLicense(This,ulInXmrLicenseLen,pbInXmrLicense,ulEntitlementTokenLen,pbEntitlementToken,pulDescrambleStatus,pulOutXmrLicenseLen,pbOutXmrLicense);
}
static FORCEINLINE HRESULT IBDA_WMDRMSession_GetKeyInfo(IBDA_WMDRMSession* This,ULONG *pulKeyInfoLen,BYTE *pbKeyInfo) {
    return This->lpVtbl->GetKeyInfo(This,pulKeyInfoLen,pbKeyInfo);
}
#endif
#endif

#endif


#endif  /* __IBDA_WMDRMSession_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_WMDRMTuner interface
 */
#ifndef __IBDA_WMDRMTuner_INTERFACE_DEFINED__
#define __IBDA_WMDRMTuner_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_WMDRMTuner, 0x86d979cf, 0xa8a7, 0x4f94, 0xb5,0xfb, 0x14,0xc0,0xac,0xa6,0x8f,0xe6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("86d979cf-a8a7-4f94-b5fb-14c0aca68fe6")
IBDA_WMDRMTuner : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE PurchaseEntitlement(
        ULONG ulDialogRequest,
        BSTR bstrLanguage,
        ULONG ulPurchaseTokenLen,
        BYTE *pbPurchaseToken,
        ULONG *pulDescrambleStatus,
        ULONG *pulCaptureTokenLen,
        BYTE *pbCaptureToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE CancelCaptureToken(
        ULONG ulCaptureTokenLen,
        BYTE *pbCaptureToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPidProtection(
        ULONG ulPid,
        GUID *uuidKey) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPidProtection(
        ULONG pulPid,
        GUID *uuidKey) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSyncValue(
        ULONG ulSyncValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStartCodeProfile(
        ULONG *pulStartCodeProfileLen,
        BYTE *pbStartCodeProfile) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_WMDRMTuner, 0x86d979cf, 0xa8a7, 0x4f94, 0xb5,0xfb, 0x14,0xc0,0xac,0xa6,0x8f,0xe6)
#endif
#else
typedef struct IBDA_WMDRMTunerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_WMDRMTuner *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_WMDRMTuner *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_WMDRMTuner *This);

    /*** IBDA_WMDRMTuner methods ***/
    HRESULT (STDMETHODCALLTYPE *PurchaseEntitlement)(
        IBDA_WMDRMTuner *This,
        ULONG ulDialogRequest,
        BSTR bstrLanguage,
        ULONG ulPurchaseTokenLen,
        BYTE *pbPurchaseToken,
        ULONG *pulDescrambleStatus,
        ULONG *pulCaptureTokenLen,
        BYTE *pbCaptureToken);

    HRESULT (STDMETHODCALLTYPE *CancelCaptureToken)(
        IBDA_WMDRMTuner *This,
        ULONG ulCaptureTokenLen,
        BYTE *pbCaptureToken);

    HRESULT (STDMETHODCALLTYPE *SetPidProtection)(
        IBDA_WMDRMTuner *This,
        ULONG ulPid,
        GUID *uuidKey);

    HRESULT (STDMETHODCALLTYPE *GetPidProtection)(
        IBDA_WMDRMTuner *This,
        ULONG pulPid,
        GUID *uuidKey);

    HRESULT (STDMETHODCALLTYPE *SetSyncValue)(
        IBDA_WMDRMTuner *This,
        ULONG ulSyncValue);

    HRESULT (STDMETHODCALLTYPE *GetStartCodeProfile)(
        IBDA_WMDRMTuner *This,
        ULONG *pulStartCodeProfileLen,
        BYTE *pbStartCodeProfile);

    END_INTERFACE
} IBDA_WMDRMTunerVtbl;

interface IBDA_WMDRMTuner {
    CONST_VTBL IBDA_WMDRMTunerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_WMDRMTuner_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_WMDRMTuner_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_WMDRMTuner_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_WMDRMTuner methods ***/
#define IBDA_WMDRMTuner_PurchaseEntitlement(This,ulDialogRequest,bstrLanguage,ulPurchaseTokenLen,pbPurchaseToken,pulDescrambleStatus,pulCaptureTokenLen,pbCaptureToken) (This)->lpVtbl->PurchaseEntitlement(This,ulDialogRequest,bstrLanguage,ulPurchaseTokenLen,pbPurchaseToken,pulDescrambleStatus,pulCaptureTokenLen,pbCaptureToken)
#define IBDA_WMDRMTuner_CancelCaptureToken(This,ulCaptureTokenLen,pbCaptureToken) (This)->lpVtbl->CancelCaptureToken(This,ulCaptureTokenLen,pbCaptureToken)
#define IBDA_WMDRMTuner_SetPidProtection(This,ulPid,uuidKey) (This)->lpVtbl->SetPidProtection(This,ulPid,uuidKey)
#define IBDA_WMDRMTuner_GetPidProtection(This,pulPid,uuidKey) (This)->lpVtbl->GetPidProtection(This,pulPid,uuidKey)
#define IBDA_WMDRMTuner_SetSyncValue(This,ulSyncValue) (This)->lpVtbl->SetSyncValue(This,ulSyncValue)
#define IBDA_WMDRMTuner_GetStartCodeProfile(This,pulStartCodeProfileLen,pbStartCodeProfile) (This)->lpVtbl->GetStartCodeProfile(This,pulStartCodeProfileLen,pbStartCodeProfile)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_WMDRMTuner_QueryInterface(IBDA_WMDRMTuner* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_WMDRMTuner_AddRef(IBDA_WMDRMTuner* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_WMDRMTuner_Release(IBDA_WMDRMTuner* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_WMDRMTuner methods ***/
static FORCEINLINE HRESULT IBDA_WMDRMTuner_PurchaseEntitlement(IBDA_WMDRMTuner* This,ULONG ulDialogRequest,BSTR bstrLanguage,ULONG ulPurchaseTokenLen,BYTE *pbPurchaseToken,ULONG *pulDescrambleStatus,ULONG *pulCaptureTokenLen,BYTE *pbCaptureToken) {
    return This->lpVtbl->PurchaseEntitlement(This,ulDialogRequest,bstrLanguage,ulPurchaseTokenLen,pbPurchaseToken,pulDescrambleStatus,pulCaptureTokenLen,pbCaptureToken);
}
static FORCEINLINE HRESULT IBDA_WMDRMTuner_CancelCaptureToken(IBDA_WMDRMTuner* This,ULONG ulCaptureTokenLen,BYTE *pbCaptureToken) {
    return This->lpVtbl->CancelCaptureToken(This,ulCaptureTokenLen,pbCaptureToken);
}
static FORCEINLINE HRESULT IBDA_WMDRMTuner_SetPidProtection(IBDA_WMDRMTuner* This,ULONG ulPid,GUID *uuidKey) {
    return This->lpVtbl->SetPidProtection(This,ulPid,uuidKey);
}
static FORCEINLINE HRESULT IBDA_WMDRMTuner_GetPidProtection(IBDA_WMDRMTuner* This,ULONG pulPid,GUID *uuidKey) {
    return This->lpVtbl->GetPidProtection(This,pulPid,uuidKey);
}
static FORCEINLINE HRESULT IBDA_WMDRMTuner_SetSyncValue(IBDA_WMDRMTuner* This,ULONG ulSyncValue) {
    return This->lpVtbl->SetSyncValue(This,ulSyncValue);
}
static FORCEINLINE HRESULT IBDA_WMDRMTuner_GetStartCodeProfile(IBDA_WMDRMTuner* This,ULONG *pulStartCodeProfileLen,BYTE *pbStartCodeProfile) {
    return This->lpVtbl->GetStartCodeProfile(This,pulStartCodeProfileLen,pbStartCodeProfile);
}
#endif
#endif

#endif


#endif  /* __IBDA_WMDRMTuner_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_DRIDRMService interface
 */
#ifndef __IBDA_DRIDRMService_INTERFACE_DEFINED__
#define __IBDA_DRIDRMService_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_DRIDRMService, 0x1f9bc2a5, 0x44a3, 0x4c52, 0xaa,0xb1, 0x0b,0xbc,0xe5,0xa1,0x38,0x1d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1f9bc2a5-44a3-4c52-aab1-0bbce5a1381d")
IBDA_DRIDRMService : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetDRM(
        BSTR bstrNewDrm) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDRMStatus(
        BSTR *pbstrDrmUuidList,
        GUID *DrmUuid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPairingStatus(
        BDA_DrmPairingError *penumPairingStatus) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_DRIDRMService, 0x1f9bc2a5, 0x44a3, 0x4c52, 0xaa,0xb1, 0x0b,0xbc,0xe5,0xa1,0x38,0x1d)
#endif
#else
typedef struct IBDA_DRIDRMServiceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_DRIDRMService *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_DRIDRMService *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_DRIDRMService *This);

    /*** IBDA_DRIDRMService methods ***/
    HRESULT (STDMETHODCALLTYPE *SetDRM)(
        IBDA_DRIDRMService *This,
        BSTR bstrNewDrm);

    HRESULT (STDMETHODCALLTYPE *GetDRMStatus)(
        IBDA_DRIDRMService *This,
        BSTR *pbstrDrmUuidList,
        GUID *DrmUuid);

    HRESULT (STDMETHODCALLTYPE *GetPairingStatus)(
        IBDA_DRIDRMService *This,
        BDA_DrmPairingError *penumPairingStatus);

    END_INTERFACE
} IBDA_DRIDRMServiceVtbl;

interface IBDA_DRIDRMService {
    CONST_VTBL IBDA_DRIDRMServiceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_DRIDRMService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_DRIDRMService_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_DRIDRMService_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_DRIDRMService methods ***/
#define IBDA_DRIDRMService_SetDRM(This,bstrNewDrm) (This)->lpVtbl->SetDRM(This,bstrNewDrm)
#define IBDA_DRIDRMService_GetDRMStatus(This,pbstrDrmUuidList,DrmUuid) (This)->lpVtbl->GetDRMStatus(This,pbstrDrmUuidList,DrmUuid)
#define IBDA_DRIDRMService_GetPairingStatus(This,penumPairingStatus) (This)->lpVtbl->GetPairingStatus(This,penumPairingStatus)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_DRIDRMService_QueryInterface(IBDA_DRIDRMService* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_DRIDRMService_AddRef(IBDA_DRIDRMService* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_DRIDRMService_Release(IBDA_DRIDRMService* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_DRIDRMService methods ***/
static FORCEINLINE HRESULT IBDA_DRIDRMService_SetDRM(IBDA_DRIDRMService* This,BSTR bstrNewDrm) {
    return This->lpVtbl->SetDRM(This,bstrNewDrm);
}
static FORCEINLINE HRESULT IBDA_DRIDRMService_GetDRMStatus(IBDA_DRIDRMService* This,BSTR *pbstrDrmUuidList,GUID *DrmUuid) {
    return This->lpVtbl->GetDRMStatus(This,pbstrDrmUuidList,DrmUuid);
}
static FORCEINLINE HRESULT IBDA_DRIDRMService_GetPairingStatus(IBDA_DRIDRMService* This,BDA_DrmPairingError *penumPairingStatus) {
    return This->lpVtbl->GetPairingStatus(This,penumPairingStatus);
}
#endif
#endif

#endif


#endif  /* __IBDA_DRIDRMService_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_DRIWMDRMSession interface
 */
#ifndef __IBDA_DRIWMDRMSession_INTERFACE_DEFINED__
#define __IBDA_DRIWMDRMSession_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_DRIWMDRMSession, 0x05c690f8, 0x56db, 0x4bb2, 0xb0,0x53, 0x79,0xc1,0x20,0x98,0xbb,0x26);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("05c690f8-56db-4bb2-b053-79c12098bb26")
IBDA_DRIWMDRMSession : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AcknowledgeLicense(
        HRESULT hrLicenseAck) = 0;

    virtual HRESULT STDMETHODCALLTYPE ProcessLicenseChallenge(
        DWORD dwcbLicenseMessage,
        BYTE *pbLicenseMessage,
        DWORD *pdwcbLicenseResponse,
        BYTE **ppbLicenseResponse) = 0;

    virtual HRESULT STDMETHODCALLTYPE ProcessRegistrationChallenge(
        DWORD dwcbRegistrationMessage,
        BYTE *pbRegistrationMessage,
        DWORD *pdwcbRegistrationResponse,
        BYTE **ppbRegistrationResponse) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRevInfo(
        DWORD dwRevInfoLen,
        BYTE *pbRevInfo,
        DWORD *pdwResponse) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCrl(
        DWORD dwCrlLen,
        BYTE *pbCrlLen,
        DWORD *pdwResponse) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHMSAssociationData(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetLastCardeaError(
        DWORD *pdwError) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_DRIWMDRMSession, 0x05c690f8, 0x56db, 0x4bb2, 0xb0,0x53, 0x79,0xc1,0x20,0x98,0xbb,0x26)
#endif
#else
typedef struct IBDA_DRIWMDRMSessionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_DRIWMDRMSession *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_DRIWMDRMSession *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_DRIWMDRMSession *This);

    /*** IBDA_DRIWMDRMSession methods ***/
    HRESULT (STDMETHODCALLTYPE *AcknowledgeLicense)(
        IBDA_DRIWMDRMSession *This,
        HRESULT hrLicenseAck);

    HRESULT (STDMETHODCALLTYPE *ProcessLicenseChallenge)(
        IBDA_DRIWMDRMSession *This,
        DWORD dwcbLicenseMessage,
        BYTE *pbLicenseMessage,
        DWORD *pdwcbLicenseResponse,
        BYTE **ppbLicenseResponse);

    HRESULT (STDMETHODCALLTYPE *ProcessRegistrationChallenge)(
        IBDA_DRIWMDRMSession *This,
        DWORD dwcbRegistrationMessage,
        BYTE *pbRegistrationMessage,
        DWORD *pdwcbRegistrationResponse,
        BYTE **ppbRegistrationResponse);

    HRESULT (STDMETHODCALLTYPE *SetRevInfo)(
        IBDA_DRIWMDRMSession *This,
        DWORD dwRevInfoLen,
        BYTE *pbRevInfo,
        DWORD *pdwResponse);

    HRESULT (STDMETHODCALLTYPE *SetCrl)(
        IBDA_DRIWMDRMSession *This,
        DWORD dwCrlLen,
        BYTE *pbCrlLen,
        DWORD *pdwResponse);

    HRESULT (STDMETHODCALLTYPE *GetHMSAssociationData)(
        IBDA_DRIWMDRMSession *This);

    HRESULT (STDMETHODCALLTYPE *GetLastCardeaError)(
        IBDA_DRIWMDRMSession *This,
        DWORD *pdwError);

    END_INTERFACE
} IBDA_DRIWMDRMSessionVtbl;

interface IBDA_DRIWMDRMSession {
    CONST_VTBL IBDA_DRIWMDRMSessionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_DRIWMDRMSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_DRIWMDRMSession_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_DRIWMDRMSession_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_DRIWMDRMSession methods ***/
#define IBDA_DRIWMDRMSession_AcknowledgeLicense(This,hrLicenseAck) (This)->lpVtbl->AcknowledgeLicense(This,hrLicenseAck)
#define IBDA_DRIWMDRMSession_ProcessLicenseChallenge(This,dwcbLicenseMessage,pbLicenseMessage,pdwcbLicenseResponse,ppbLicenseResponse) (This)->lpVtbl->ProcessLicenseChallenge(This,dwcbLicenseMessage,pbLicenseMessage,pdwcbLicenseResponse,ppbLicenseResponse)
#define IBDA_DRIWMDRMSession_ProcessRegistrationChallenge(This,dwcbRegistrationMessage,pbRegistrationMessage,pdwcbRegistrationResponse,ppbRegistrationResponse) (This)->lpVtbl->ProcessRegistrationChallenge(This,dwcbRegistrationMessage,pbRegistrationMessage,pdwcbRegistrationResponse,ppbRegistrationResponse)
#define IBDA_DRIWMDRMSession_SetRevInfo(This,dwRevInfoLen,pbRevInfo,pdwResponse) (This)->lpVtbl->SetRevInfo(This,dwRevInfoLen,pbRevInfo,pdwResponse)
#define IBDA_DRIWMDRMSession_SetCrl(This,dwCrlLen,pbCrlLen,pdwResponse) (This)->lpVtbl->SetCrl(This,dwCrlLen,pbCrlLen,pdwResponse)
#define IBDA_DRIWMDRMSession_GetHMSAssociationData(This) (This)->lpVtbl->GetHMSAssociationData(This)
#define IBDA_DRIWMDRMSession_GetLastCardeaError(This,pdwError) (This)->lpVtbl->GetLastCardeaError(This,pdwError)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_QueryInterface(IBDA_DRIWMDRMSession* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_DRIWMDRMSession_AddRef(IBDA_DRIWMDRMSession* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_DRIWMDRMSession_Release(IBDA_DRIWMDRMSession* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_DRIWMDRMSession methods ***/
static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_AcknowledgeLicense(IBDA_DRIWMDRMSession* This,HRESULT hrLicenseAck) {
    return This->lpVtbl->AcknowledgeLicense(This,hrLicenseAck);
}
static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_ProcessLicenseChallenge(IBDA_DRIWMDRMSession* This,DWORD dwcbLicenseMessage,BYTE *pbLicenseMessage,DWORD *pdwcbLicenseResponse,BYTE **ppbLicenseResponse) {
    return This->lpVtbl->ProcessLicenseChallenge(This,dwcbLicenseMessage,pbLicenseMessage,pdwcbLicenseResponse,ppbLicenseResponse);
}
static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_ProcessRegistrationChallenge(IBDA_DRIWMDRMSession* This,DWORD dwcbRegistrationMessage,BYTE *pbRegistrationMessage,DWORD *pdwcbRegistrationResponse,BYTE **ppbRegistrationResponse) {
    return This->lpVtbl->ProcessRegistrationChallenge(This,dwcbRegistrationMessage,pbRegistrationMessage,pdwcbRegistrationResponse,ppbRegistrationResponse);
}
static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_SetRevInfo(IBDA_DRIWMDRMSession* This,DWORD dwRevInfoLen,BYTE *pbRevInfo,DWORD *pdwResponse) {
    return This->lpVtbl->SetRevInfo(This,dwRevInfoLen,pbRevInfo,pdwResponse);
}
static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_SetCrl(IBDA_DRIWMDRMSession* This,DWORD dwCrlLen,BYTE *pbCrlLen,DWORD *pdwResponse) {
    return This->lpVtbl->SetCrl(This,dwCrlLen,pbCrlLen,pdwResponse);
}
static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_GetHMSAssociationData(IBDA_DRIWMDRMSession* This) {
    return This->lpVtbl->GetHMSAssociationData(This);
}
static FORCEINLINE HRESULT IBDA_DRIWMDRMSession_GetLastCardeaError(IBDA_DRIWMDRMSession* This,DWORD *pdwError) {
    return This->lpVtbl->GetLastCardeaError(This,pdwError);
}
#endif
#endif

#endif


#endif  /* __IBDA_DRIWMDRMSession_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_MUX interface
 */
#ifndef __IBDA_MUX_INTERFACE_DEFINED__
#define __IBDA_MUX_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_MUX, 0x942aafec, 0x4c05, 0x4c74, 0xb8,0xeb, 0x87,0x06,0xc2,0xa4,0x94,0x3f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("942aafec-4c05-4c74-b8eb-8706c2a4943f")
IBDA_MUX : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetPidList(
        ULONG ulPidListCount,
        BDA_MUX_PIDLISTITEM *pbPidListBuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPidList(
        ULONG *pulPidListCount,
        BDA_MUX_PIDLISTITEM *pbPidListBuffer) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_MUX, 0x942aafec, 0x4c05, 0x4c74, 0xb8,0xeb, 0x87,0x06,0xc2,0xa4,0x94,0x3f)
#endif
#else
typedef struct IBDA_MUXVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_MUX *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_MUX *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_MUX *This);

    /*** IBDA_MUX methods ***/
    HRESULT (STDMETHODCALLTYPE *SetPidList)(
        IBDA_MUX *This,
        ULONG ulPidListCount,
        BDA_MUX_PIDLISTITEM *pbPidListBuffer);

    HRESULT (STDMETHODCALLTYPE *GetPidList)(
        IBDA_MUX *This,
        ULONG *pulPidListCount,
        BDA_MUX_PIDLISTITEM *pbPidListBuffer);

    END_INTERFACE
} IBDA_MUXVtbl;

interface IBDA_MUX {
    CONST_VTBL IBDA_MUXVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_MUX_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_MUX_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_MUX_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_MUX methods ***/
#define IBDA_MUX_SetPidList(This,ulPidListCount,pbPidListBuffer) (This)->lpVtbl->SetPidList(This,ulPidListCount,pbPidListBuffer)
#define IBDA_MUX_GetPidList(This,pulPidListCount,pbPidListBuffer) (This)->lpVtbl->GetPidList(This,pulPidListCount,pbPidListBuffer)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_MUX_QueryInterface(IBDA_MUX* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_MUX_AddRef(IBDA_MUX* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_MUX_Release(IBDA_MUX* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_MUX methods ***/
static FORCEINLINE HRESULT IBDA_MUX_SetPidList(IBDA_MUX* This,ULONG ulPidListCount,BDA_MUX_PIDLISTITEM *pbPidListBuffer) {
    return This->lpVtbl->SetPidList(This,ulPidListCount,pbPidListBuffer);
}
static FORCEINLINE HRESULT IBDA_MUX_GetPidList(IBDA_MUX* This,ULONG *pulPidListCount,BDA_MUX_PIDLISTITEM *pbPidListBuffer) {
    return This->lpVtbl->GetPidList(This,pulPidListCount,pbPidListBuffer);
}
#endif
#endif

#endif


#endif  /* __IBDA_MUX_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_TransportStreamSelector interface
 */
#ifndef __IBDA_TransportStreamSelector_INTERFACE_DEFINED__
#define __IBDA_TransportStreamSelector_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_TransportStreamSelector, 0x1dcfafe9, 0xb45e, 0x41b3, 0xbb,0x2a, 0x56,0x1e,0xb1,0x29,0xae,0x98);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1dcfafe9-b45e-41b3-bb2a-561eb129ae98")
IBDA_TransportStreamSelector : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetTSID(
        USHORT usTSID) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTSInformation(
        ULONG *pulTSInformationBufferLen,
        BYTE *pbTSInformationBuffer) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_TransportStreamSelector, 0x1dcfafe9, 0xb45e, 0x41b3, 0xbb,0x2a, 0x56,0x1e,0xb1,0x29,0xae,0x98)
#endif
#else
typedef struct IBDA_TransportStreamSelectorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_TransportStreamSelector *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_TransportStreamSelector *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_TransportStreamSelector *This);

    /*** IBDA_TransportStreamSelector methods ***/
    HRESULT (STDMETHODCALLTYPE *SetTSID)(
        IBDA_TransportStreamSelector *This,
        USHORT usTSID);

    HRESULT (STDMETHODCALLTYPE *GetTSInformation)(
        IBDA_TransportStreamSelector *This,
        ULONG *pulTSInformationBufferLen,
        BYTE *pbTSInformationBuffer);

    END_INTERFACE
} IBDA_TransportStreamSelectorVtbl;

interface IBDA_TransportStreamSelector {
    CONST_VTBL IBDA_TransportStreamSelectorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_TransportStreamSelector_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_TransportStreamSelector_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_TransportStreamSelector_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_TransportStreamSelector methods ***/
#define IBDA_TransportStreamSelector_SetTSID(This,usTSID) (This)->lpVtbl->SetTSID(This,usTSID)
#define IBDA_TransportStreamSelector_GetTSInformation(This,pulTSInformationBufferLen,pbTSInformationBuffer) (This)->lpVtbl->GetTSInformation(This,pulTSInformationBufferLen,pbTSInformationBuffer)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_TransportStreamSelector_QueryInterface(IBDA_TransportStreamSelector* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_TransportStreamSelector_AddRef(IBDA_TransportStreamSelector* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_TransportStreamSelector_Release(IBDA_TransportStreamSelector* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_TransportStreamSelector methods ***/
static FORCEINLINE HRESULT IBDA_TransportStreamSelector_SetTSID(IBDA_TransportStreamSelector* This,USHORT usTSID) {
    return This->lpVtbl->SetTSID(This,usTSID);
}
static FORCEINLINE HRESULT IBDA_TransportStreamSelector_GetTSInformation(IBDA_TransportStreamSelector* This,ULONG *pulTSInformationBufferLen,BYTE *pbTSInformationBuffer) {
    return This->lpVtbl->GetTSInformation(This,pulTSInformationBufferLen,pbTSInformationBuffer);
}
#endif
#endif

#endif


#endif  /* __IBDA_TransportStreamSelector_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBDA_UserActivityService interface
 */
#ifndef __IBDA_UserActivityService_INTERFACE_DEFINED__
#define __IBDA_UserActivityService_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBDA_UserActivityService, 0x53b14189, 0xe478, 0x4b7a, 0xa1,0xff, 0x50,0x6d,0xb4,0xb9,0x9d,0xfe);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("53b14189-e478-4b7a-a1ff-506db4b99dfe")
IBDA_UserActivityService : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetCurrentTunerUseReason(
        DWORD dwUseReason) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetUserActivityInterval(
        DWORD *pdwActivityInterval) = 0;

    virtual HRESULT STDMETHODCALLTYPE UserActivityDetected(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBDA_UserActivityService, 0x53b14189, 0xe478, 0x4b7a, 0xa1,0xff, 0x50,0x6d,0xb4,0xb9,0x9d,0xfe)
#endif
#else
typedef struct IBDA_UserActivityServiceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBDA_UserActivityService *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBDA_UserActivityService *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBDA_UserActivityService *This);

    /*** IBDA_UserActivityService methods ***/
    HRESULT (STDMETHODCALLTYPE *SetCurrentTunerUseReason)(
        IBDA_UserActivityService *This,
        DWORD dwUseReason);

    HRESULT (STDMETHODCALLTYPE *GetUserActivityInterval)(
        IBDA_UserActivityService *This,
        DWORD *pdwActivityInterval);

    HRESULT (STDMETHODCALLTYPE *UserActivityDetected)(
        IBDA_UserActivityService *This);

    END_INTERFACE
} IBDA_UserActivityServiceVtbl;

interface IBDA_UserActivityService {
    CONST_VTBL IBDA_UserActivityServiceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBDA_UserActivityService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBDA_UserActivityService_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBDA_UserActivityService_Release(This) (This)->lpVtbl->Release(This)
/*** IBDA_UserActivityService methods ***/
#define IBDA_UserActivityService_SetCurrentTunerUseReason(This,dwUseReason) (This)->lpVtbl->SetCurrentTunerUseReason(This,dwUseReason)
#define IBDA_UserActivityService_GetUserActivityInterval(This,pdwActivityInterval) (This)->lpVtbl->GetUserActivityInterval(This,pdwActivityInterval)
#define IBDA_UserActivityService_UserActivityDetected(This) (This)->lpVtbl->UserActivityDetected(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBDA_UserActivityService_QueryInterface(IBDA_UserActivityService* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBDA_UserActivityService_AddRef(IBDA_UserActivityService* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBDA_UserActivityService_Release(IBDA_UserActivityService* This) {
    return This->lpVtbl->Release(This);
}
/*** IBDA_UserActivityService methods ***/
static FORCEINLINE HRESULT IBDA_UserActivityService_SetCurrentTunerUseReason(IBDA_UserActivityService* This,DWORD dwUseReason) {
    return This->lpVtbl->SetCurrentTunerUseReason(This,dwUseReason);
}
static FORCEINLINE HRESULT IBDA_UserActivityService_GetUserActivityInterval(IBDA_UserActivityService* This,DWORD *pdwActivityInterval) {
    return This->lpVtbl->GetUserActivityInterval(This,pdwActivityInterval);
}
static FORCEINLINE HRESULT IBDA_UserActivityService_UserActivityDetected(IBDA_UserActivityService* This) {
    return This->lpVtbl->UserActivityDetected(This);
}
#endif
#endif

#endif


#endif  /* __IBDA_UserActivityService_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __bdaiface_h__ */
