/* This header file machine-generated by mktyplib.exe */
/* Interface to type library: MSBPCVideo */

#ifndef _MSBPCVideo_H_
#define _MSBPCVideo_H_

DEFINE_GUID(LIBID_MSBPCVideo,0x99D257C1L,0x97A9,0x11CF,0xA8,0x8F,0x44,0x45,0x53,0x54,0x00,0x00);
#ifndef BEGIN_INTERFACE
#define BEGIN_INTERFACE
#endif

typedef enum PURCHASEACTION {
    PAGETDETAILS,
    PAPURCHASETOVIEW,
    PAPURCHASETOTAPE,
    PACANCELVIEW,
    PACANCELTAPE,
    PAPREVIEW
} PURCHASEACTION;

typedef enum PURCHASESTATUS {
    PSVIEWTAKEN = 0,
    PSVIEWCANCELLED,
    PSVIEWREPORTED,
    PSPREVIEWTAKEN,
    PSVIEWAUTHORIZED,
    PSVIEWPURCHASED,
    PSTAPEPURCHASED,
    PSTAPEAUTHORIZED,
    PSTAPETAKEN,
    PSTAPECANCELLED,
    PSTAPEREPORTED,
    PSVIEWAVAILABLE,
    PSTAPEAVAILABLE,
    PSREVIEWAVAILABLE
} PURCHASESTATUS;

typedef enum PURCHASEREASON {
    PRSUCCESS = 0,
    PRNOCALLBACK,
    PRNOSUBSCRIBER,
    PRRATING,
    PRSPENDING,
    PRCREDIT,
    PRWRONGCARD,
    PRCARDFULL,
    PRBLOCKED,
    PRBLACKOUT,
    PRTOOLATE,
    PRREDUNDANT,
    PRPPVFAILURE,
    PRBADDATA,
    PRCONTENTION
} PURCHASEREASON;

typedef enum BpcVidsvrProgIds {
    BPC_IDS_VIDSVR_PROGID = 2100,
    BPC_IDS_COABPCDETAILS_PROGID = 2101
} BpcVidsvrProgIds;

typedef enum statustype {
    STATUS_PLAY = 2,
    STATUS_PAUSED = 8,
    STATUS_ACTIVE = 128
} STATUSTYPE;

typedef enum {
    movieDefaultSize,
    movieHalfSize,
    movieDoubleSize,
    movieMaximizeSize,
    movieFullScreen,
    moviePermitResizeWithAspect,
    moviePermitResizeNoRestrict
} MovieWindowSetting;

typedef enum {
    stateStopped,
    statePaused,
    stateRunning
} State;

typedef enum {
    modeTime,
    modeFrames
} DisplayMode;

DEFINE_GUID(IID_IBPCPurchase,0x40CA1AC0L,0xD66D,0x11CF,0xA8,0x8F,0x44,0x45,0x53,0x54,0x00,0x00);

/* Definition of interface: IBPCPurchase */
#undef INTERFACE
#define INTERFACE IBPCPurchase

DECLARE_INTERFACE_(IBPCPurchase, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IBPCPurchase methods */
    STDMETHOD(get_Channel)(THIS_ short FAR* Channel) PURE;
    STDMETHOD(put_Channel)(THIS_ short Channel) PURE;
    STDMETHOD(get_StartTime)(THIS_ DATE FAR* StartTime) PURE;
    STDMETHOD(put_StartTime)(THIS_ DATE StartTime) PURE;
    STDMETHOD(get_Expiry)(THIS_ DATE FAR* Expiry) PURE;
    STDMETHOD(put_Expiry)(THIS_ DATE Expiry) PURE;
    STDMETHOD(get_Duration)(THIS_ long FAR* Duration) PURE;
    STDMETHOD(put_Duration)(THIS_ long Duration) PURE;
    STDMETHOD(get_ItemID)(THIS_ long FAR* ItemID) PURE;
    STDMETHOD(put_ItemID)(THIS_ long ItemID) PURE;
    STDMETHOD(get_Location)(THIS_ long FAR* Location) PURE;
    STDMETHOD(put_Location)(THIS_ long Location) PURE;
    STDMETHOD(get_UserId)(THIS_ long FAR* UserId) PURE;
    STDMETHOD(put_UserId)(THIS_ long UserId) PURE;
    STDMETHOD(get_StorageId)(THIS_ long FAR* StorageId) PURE;
    STDMETHOD(put_StorageId)(THIS_ long StorageId) PURE;
    STDMETHOD(get_Title)(THIS_ BSTR FAR* Title) PURE;
    STDMETHOD(put_Title)(THIS_ BSTR Title) PURE;
    STDMETHOD(get_Rating)(THIS_ long FAR* Rating) PURE;
    STDMETHOD(put_Rating)(THIS_ long Rating) PURE;
    STDMETHOD(get_Year)(THIS_ BSTR FAR* Year) PURE;
    STDMETHOD(put_Year)(THIS_ BSTR Year) PURE;
    STDMETHOD(get_Description)(THIS_ BSTR FAR* Description) PURE;
    STDMETHOD(put_Description)(THIS_ BSTR Description) PURE;
    STDMETHOD(get_ViewCost)(THIS_ CY FAR* ViewCost) PURE;
    STDMETHOD(put_ViewCost)(THIS_ CY ViewCost) PURE;
    STDMETHOD(get_TapeCost)(THIS_ CY FAR* TapeCost) PURE;
    STDMETHOD(put_TapeCost)(THIS_ CY TapeCost) PURE;
    STDMETHOD(get_Action)(THIS_ long FAR* Action) PURE;
    STDMETHOD(put_Action)(THIS_ long Action) PURE;
    STDMETHOD(get_Status)(THIS_ long FAR* Status) PURE;
    STDMETHOD(put_Status)(THIS_ long Status) PURE;
    STDMETHOD(get_Reason)(THIS_ long FAR* Reason) PURE;
    STDMETHOD(put_Reason)(THIS_ long Reason) PURE;
    STDMETHOD(get_ReasonDesc)(THIS_ BSTR FAR* ReasonDesc) PURE;
    STDMETHOD(put_ReasonDesc)(THIS_ BSTR ReasonDesc) PURE;
    STDMETHOD(get_ProviderBuffer)(THIS_ BSTR FAR* Buffer) PURE;
};

DEFINE_GUID(CLSID_BPCPurchase,0x329301E1L,0xD0CA,0x11CF,0xA1,0x9E,0x00,0xAA,0x00,0xA2,0x86,0xA1);

#ifdef __cplusplus
class BPCPurchase;
#endif

DEFINE_GUID(IID_IBPCMessage,0xC043CF80L,0x6D5D,0x11D0,0xAB,0xCA,0x00,0xAA,0x00,0xB5,0x09,0x2C);

/* Definition of interface: IBPCMessage */
#undef INTERFACE
#define INTERFACE IBPCMessage

DECLARE_INTERFACE_(IBPCMessage, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IBPCMessage methods */
    STDMETHOD(get_Attributes)(THIS_ long FAR* Attrs) PURE;
    STDMETHOD(get_Msg)(THIS_ BSTR FAR* Text) PURE;
};

DEFINE_GUID(CLSID_BPCMessage,0xC043CF81L,0x6D5D,0x11D0,0xAB,0xCA,0x00,0xAA,0x00,0xB5,0x09,0x2C);

#ifdef __cplusplus
class BPCMessage;
#endif

DEFINE_GUID(IID_IBPCHistoryItemsCollection,0xFF93CA20L,0xD67F,0x11CF,0xA8,0x8F,0x44,0x45,0x53,0x54,0x00,0x00);

/* Definition of interface: IBPCHistoryItemsCollection */
#undef INTERFACE
#define INTERFACE IBPCHistoryItemsCollection

DECLARE_INTERFACE_(IBPCHistoryItemsCollection, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IBPCHistoryItemsCollection methods */
    STDMETHOD(get__NewEnum)(THIS_ IUnknown * FAR* pCollection) PURE;
    STDMETHOD(get_Count)(THIS_ long FAR* Count) PURE;
    STDMETHOD(Remove)(THIS_ VARIANT Index) PURE;
    STDMETHOD(Item)(THIS_ VARIANT Index, IBPCPurchase FAR* FAR* pItem) PURE;
};

DEFINE_GUID(CLSID_BPCHistoryItemsCollection,0x54F98D96L,0xCA2E,0x11CF,0xB0,0x8E,0x00,0xAA,0x00,0xB8,0xC3,0x2E);

#ifdef __cplusplus
class BPCHistoryItemsCollection;
#endif

DEFINE_GUID(IID_IBPCEmailMessage,0xD9BEE320L,0xC198,0x11D0,0x8D,0x13,0x00,0xAA,0x00,0xBD,0x83,0x39);

/* Definition of interface: IBPCEmailMessage */
#undef INTERFACE
#define INTERFACE IBPCEmailMessage

DECLARE_INTERFACE_(IBPCEmailMessage, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IBPCEmailMessage methods */
    STDMETHOD(get_MsgId)(THIS_ long FAR* MsgId) PURE;
    STDMETHOD(get_UserId)(THIS_ long FAR* UserId) PURE;
    STDMETHOD(get_IsRead)(THIS_ VARIANT_BOOL FAR* HasBeenRead) PURE;
    STDMETHOD(get_Received)(THIS_ DATE FAR* Received) PURE;
    STDMETHOD(get_Expires)(THIS_ DATE FAR* Expires) PURE;
    STDMETHOD(get_Title)(THIS_ BSTR FAR* Text) PURE;
    STDMETHOD(get_Msg)(THIS_ BSTR FAR* Text) PURE;
};

DEFINE_GUID(IID_IBPCEmailMessagesCollection,0xF92F8500L,0xD681,0x11CF,0xA8,0x8F,0x44,0x45,0x53,0x54,0x00,0x00);

/* Definition of interface: IBPCEmailMessagesCollection */
#undef INTERFACE
#define INTERFACE IBPCEmailMessagesCollection

DECLARE_INTERFACE_(IBPCEmailMessagesCollection, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IBPCEmailMessagesCollection methods */
    STDMETHOD(get__NewEnum)(THIS_ IUnknown * FAR* pCollection) PURE;
    STDMETHOD(get_Count)(THIS_ long FAR* Count) PURE;
    STDMETHOD(Item)(THIS_ VARIANT Index, IBPCEmailMessage FAR* FAR* pItem) PURE;
    STDMETHOD(Remove)(THIS_ VARIANT pMsg) PURE;
    STDMETHOD(MarkAsRead)(THIS_ IBPCEmailMessage FAR* pMsg) PURE;
};

DEFINE_GUID(CLSID_BPCEmailMessageItem,0xC26AAD80L,0xDDB3,0x11D0,0x8D,0x13,0x00,0xAA,0x00,0xBD,0x83,0x39);

#ifdef __cplusplus
class BPCEmailMessageItem;
#endif

DEFINE_GUID(CLSID_BPCEmailMessagesCollection,0x54F98D98L,0xCA2E,0x11CF,0xB0,0x8E,0x00,0xAA,0x00,0xB8,0xC3,0x2E);

#ifdef __cplusplus
class BPCEmailMessagesCollection;
#endif

interface IBPCDevices;

DEFINE_GUID(IID_IBPCDeviceBase,0x49224DE0L,0xB30F,0x11CF,0xA8,0x8F,0x44,0x45,0x53,0x54,0x00,0x00);

/* Definition of interface: IBPCDeviceBase */
#undef INTERFACE
#define INTERFACE IBPCDeviceBase

DECLARE_INTERFACE_(IBPCDeviceBase, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IBPCDeviceBase methods */
    STDMETHOD(get_Name)(THIS_ BSTR FAR* Name) PURE;
    STDMETHOD(get_HasFilename)(THIS_ VARIANT_BOOL FAR* HasFilename) PURE;
    STDMETHOD(get_HasCA)(THIS_ VARIANT_BOOL FAR* HasCA) PURE;
    STDMETHOD(get_IsInput)(THIS_ VARIANT_BOOL FAR* IsInput) PURE;
    STDMETHOD(get_IsOutput)(THIS_ VARIANT_BOOL FAR* IsOutput) PURE;
    STDMETHOD(get_HasChannel)(THIS_ VARIANT_BOOL FAR* HasChannel) PURE;
    STDMETHOD(get_Status)(THIS_ long FAR* Status) PURE;
    STDMETHOD(get_ProdName)(THIS_ BSTR FAR* ProdName) PURE;
    STDMETHOD(get_FileName)(THIS_ BSTR FAR* FileName) PURE;
    STDMETHOD(put_FileName)(THIS_ BSTR FileName) PURE;
    STDMETHOD(get_Channel)(THIS_ long FAR* Channel) PURE;
    STDMETHOD(put_Channel)(THIS_ long Channel) PURE;
    STDMETHOD(get_ImageSourceWidth)(THIS_ long FAR* x) PURE;
    STDMETHOD(get_ImageSourceHeight)(THIS_ long FAR* y) PURE;
    STDMETHOD(get_CurrentState)(THIS_ long FAR* CurrentState) PURE;
    STDMETHOD(get_CurrentPosition)(THIS_ double FAR* dPos) PURE;
    STDMETHOD(put_CurrentPosition)(THIS_ double dPos) PURE;
    STDMETHOD(get_Duration)(THIS_ double FAR* dPos) PURE;
    STDMETHOD(get_PrerollTime)(THIS_ double FAR* dPos) PURE;
    STDMETHOD(put_PrerollTime)(THIS_ double dPos) PURE;
    STDMETHOD(get_Rate)(THIS_ double FAR* dPos) PURE;
    STDMETHOD(put_Rate)(THIS_ double dPos) PURE;
    STDMETHOD(get_CountryCode)(THIS_ long FAR* lcc) PURE;
    STDMETHOD(put_CountryCode)(THIS_ long lcc) PURE;
    STDMETHOD(get_VideoFrequency)(THIS_ long FAR* lcc) PURE;
    STDMETHOD(get_AudioFrequency)(THIS_ long FAR* lcc) PURE;
    STDMETHOD(get_DefaultVideoType)(THIS_ long FAR* lcc) PURE;
    STDMETHOD(put_DefaultVideoType)(THIS_ long lcc) PURE;
    STDMETHOD(get_DefaultAudioType)(THIS_ long FAR* lcc) PURE;
    STDMETHOD(put_DefaultAudioType)(THIS_ long lcc) PURE;
    STDMETHOD(get_VideoSubchannel)(THIS_ long FAR* lcc) PURE;
    STDMETHOD(put_VideoSubchannel)(THIS_ long lcc) PURE;
    STDMETHOD(get_AudioSubchannel)(THIS_ long FAR* lcc) PURE;
    STDMETHOD(put_AudioSubchannel)(THIS_ long lcc) PURE;
    STDMETHOD(put_Volume)(THIS_ long lVol) PURE;
    STDMETHOD(get_Volume)(THIS_ long FAR* lVol) PURE;
    STDMETHOD(put_Balance)(THIS_ long lBal) PURE;
    STDMETHOD(get_Balance)(THIS_ long FAR* lBal) PURE;
    STDMETHOD(put_Power)(THIS_ VARIANT_BOOL bPower) PURE;
    STDMETHOD(get_Power)(THIS_ VARIANT_BOOL FAR* bPower) PURE;
    STDMETHOD(put_OverScan)(THIS_ long lPercent) PURE;
    STDMETHOD(get_OverScan)(THIS_ long FAR* plPercent) PURE;
    STDMETHOD(get_ProviderRating)(THIS_ long FAR* pRating) PURE;
    STDMETHOD(get_ProviderStatus)(THIS_ VARIANT_BOOL FAR* pStatus) PURE;
    STDMETHOD(get_ProviderEPGMask)(THIS_ long FAR* pMask) PURE;
    STDMETHOD(get_HistoryItems)(THIS_ IBPCHistoryItemsCollection FAR* FAR* ppHistoryItem) PURE;
    STDMETHOD(get_EmailMessages)(THIS_ IBPCEmailMessagesCollection FAR* FAR* ppEmailMsg) PURE;
    STDMETHOD(get_UserName)(THIS_ BSTR FAR* pUserName) PURE;
    STDMETHOD(put_UserName)(THIS_ BSTR UserName) PURE;
    STDMETHOD(get_UserArea)(THIS_ BSTR FAR* pUserArea) PURE;
    STDMETHOD(put_UserArea)(THIS_ BSTR UserArea) PURE;
    STDMETHOD(get_ItemDetails)(THIS_ long Priority, IBPCPurchase FAR* pInDetails, IBPCPurchase FAR* FAR* ppOutDetails) PURE;
    STDMETHOD(Run)(THIS) PURE;
    STDMETHOD(Pause)(THIS) PURE;
    STDMETHOD(Stop)(THIS) PURE;
    STDMETHOD(Refresh)(THIS) PURE;
    STDMETHOD(ChannelAvailable)(THIS_ long nChannel, long FAR* SignalStrength, VARIANT_BOOL FAR* fSignalPresent) PURE;
    STDMETHOD(ResetProviderSystem)(THIS) PURE;
    STDMETHOD(BuyItem)(THIS_ long Priority, IBPCPurchase FAR* pInDetails, IBPCPurchase FAR* FAR* ppOutDetails) PURE;
    STDMETHOD(CancelItem)(THIS_ IBPCPurchase FAR* pInDetails, IBPCPurchase FAR* FAR* ppOutDetails) PURE;
    STDMETHOD(DisplayConfigDialog)(THIS) PURE;
    STDMETHOD(HandleCardChaining)(THIS_ VARIANT_BOOL fOK) PURE;
};

DEFINE_GUID(IID_IBPCDeviceEvent,0xF4B33700L,0xBD9B,0x11CF,0xA8,0x8F,0x44,0x45,0x53,0x54,0x00,0x00);

/* Definition of interface: IBPCDeviceEvent */
#undef INTERFACE
#define INTERFACE IBPCDeviceEvent

DECLARE_INTERFACE_(IBPCDeviceEvent, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IBPCDeviceEvent methods */
    STDMETHOD(GotControl)(THIS) PURE;
    STDMETHOD(LostControl)(THIS) PURE;
    STDMETHOD(StateChange)(THIS_ IBPCDeviceBase FAR* lpd, long oldState, long newState) PURE;
    STDMETHOD(ErrorMessage)(THIS_ long iMessage, BSTR Text) PURE;
    STDMETHOD(CardMissing)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message) PURE;
    STDMETHOD(CardInvalid)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message) PURE;
    STDMETHOD(WrongCard)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message) PURE;
    STDMETHOD(BlackedOut)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message) PURE;
    STDMETHOD(RatingExceeded)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message) PURE;
    STDMETHOD(CostExceeded)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message) PURE;
    STDMETHOD(OSDRequest)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message) PURE;
    STDMETHOD(NoSubscriber)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message) PURE;
    STDMETHOD(CAFail)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message) PURE;
    STDMETHOD(CannotPurchase)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message) PURE;
    STDMETHOD(CASuccess)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message) PURE;
    STDMETHOD(Retry)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message) PURE;
    STDMETHOD(SignalLost)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority) PURE;
    STDMETHOD(NewEmail)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority) PURE;
    STDMETHOD(ColdStart)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority) PURE;
    STDMETHOD(Ready)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority) PURE;
    STDMETHOD(NotReady)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority) PURE;
    STDMETHOD(CAFault)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority) PURE;
    STDMETHOD(PasswordCleared)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority) PURE;
    STDMETHOD(TuningChanged)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority) PURE;
    STDMETHOD(HandlePurchaseOffer)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCPurchase FAR* pDetails) PURE;
    STDMETHOD(RevokeEvent)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority) PURE;
    STDMETHOD(CopyCard)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority) PURE;
    STDMETHOD(EPGFilterChanged)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority) PURE;
    STDMETHOD(TapingControlChanged)(THIS_ IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority) PURE;
};

DEFINE_GUID(IID_IBPCDevices,0xE323F120L,0xB484,0x11CF,0xA8,0x8F,0x44,0x45,0x53,0x54,0x00,0x00);

/* Definition of interface: IBPCDevices */
#undef INTERFACE
#define INTERFACE IBPCDevices

DECLARE_INTERFACE_(IBPCDevices, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IBPCDevices methods */
    STDMETHOD(get_Count)(THIS_ long FAR* lCount) PURE;
    STDMETHOD(get__NewEnum)(THIS_ IUnknown * FAR* pD) PURE;
    STDMETHOD(put_HWnd)(THIS_ long hwnd) PURE;
    STDMETHOD(put_LCID)(THIS_ long lcid) PURE;
    STDMETHOD(put_Notify)(THIS_ IBPCDeviceEvent FAR* pDeviceEvents) PURE;
    STDMETHOD(get_ColorKey)(THIS_ long FAR* lcc) PURE;
    STDMETHOD(put_ColorKey)(THIS_ long lcc) PURE;
    STDMETHOD(get_Priority)(THIS_ long FAR* lcc) PURE;
    STDMETHOD(put_Priority)(THIS_ long lcc) PURE;
    STDMETHOD(get_Input)(THIS_ IBPCDeviceBase FAR* FAR* ppInput) PURE;
    STDMETHOD(put_Input)(THIS_ IBPCDeviceBase FAR* pInput) PURE;
    STDMETHOD(get_Output)(THIS_ IBPCDeviceBase FAR* FAR* ppOutput) PURE;
    STDMETHOD(put_Output)(THIS_ IBPCDeviceBase FAR* pOutput) PURE;
    STDMETHOD(get_VideoOn)(THIS_ VARIANT_BOOL FAR* VideoOn) PURE;
    STDMETHOD(put_VideoOn)(THIS_ VARIANT_BOOL VideoOn) PURE;
    STDMETHOD(Item)(THIS_ VARIANT v, IBPCDeviceBase FAR* FAR* pDB) PURE;
    STDMETHOD(Tune)(THIS_ long lTuningSpace, long Channel, long VideoSubchannel, long AudioSubchannel) PURE;
    STDMETHOD(Login)(THIS_ BSTR UserName, BSTR Password) PURE;
    STDMETHOD(Logout)(THIS) PURE;
    STDMETHOD(Open)(THIS_ BSTR FileName) PURE;
    STDMETHOD(TSDeviceCount)(THIS_ long lTuningSpace, long FAR* count) PURE;
    STDMETHOD(AutoScan)(THIS_ long FAR* SignalStrength) PURE;
};

DEFINE_GUID(IID_IBPCVid,0x8AFAFD81L,0x31C3,0x11CF,0xA1,0xE9,0x00,0xAA,0x00,0x62,0xC7,0x97);

/* Definition of interface: IBPCVid */
#undef INTERFACE
#define INTERFACE IBPCVid

DECLARE_INTERFACE_(IBPCVid, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IBPCVid methods */
    STDMETHOD(get_Power)(THIS_ VARIANT_BOOL FAR* Power) PURE;
    STDMETHOD(put_Power)(THIS_ VARIANT_BOOL Power) PURE;
    STDMETHOD(get_StartTime)(THIS_ double FAR* StartTime) PURE;
    STDMETHOD(put_StartTime)(THIS_ double StartTime) PURE;
    STDMETHOD(get_StopTime)(THIS_ double FAR* StopTime) PURE;
    STDMETHOD(put_StopTime)(THIS_ double StopTime) PURE;
    STDMETHOD(get_VideoOn)(THIS_ VARIANT_BOOL FAR* VideoOn) PURE;
    STDMETHOD(put_VideoOn)(THIS_ VARIANT_BOOL VideoOn) PURE;
    STDMETHOD(get_ClosedCaption)(THIS_ VARIANT_BOOL FAR* ClosedCaption) PURE;
    STDMETHOD(put_ClosedCaption)(THIS_ VARIANT_BOOL ClosedCaption) PURE;
    STDMETHOD(get_Debug)(THIS_ VARIANT_BOOL FAR* Debug) PURE;
    STDMETHOD(put_Debug)(THIS_ VARIANT_BOOL Debug) PURE;
    STDMETHOD(get_DeviceCount)(THIS_ long FAR* DeviceCount) PURE;
    STDMETHOD(get_Input)(THIS_ IBPCDeviceBase FAR* FAR* Input) PURE;
    STDMETHOD(put_Input)(THIS_ IBPCDeviceBase FAR* Input) PURE;
    STDMETHOD(get_Output)(THIS_ IBPCDeviceBase FAR* FAR* Output) PURE;
    STDMETHOD(put_Output)(THIS_ IBPCDeviceBase FAR* Output) PURE;
    STDMETHOD(get_ColorKey)(THIS_ long FAR* ColorKey) PURE;
    STDMETHOD(put_ColorKey)(THIS_ long ColorKey) PURE;
    STDMETHOD(get_FileName)(THIS_ BSTR FAR* FileName) PURE;
    STDMETHOD(put_FileName)(THIS_ BSTR FileName) PURE;
    STDMETHOD(get_Priority)(THIS_ long FAR* Priority) PURE;
    STDMETHOD(put_Priority)(THIS_ long Priority) PURE;
    STDMETHOD(get_Volume)(THIS_ long FAR* Volume) PURE;
    STDMETHOD(put_Volume)(THIS_ long Volume) PURE;
    STDMETHOD(get_Balance)(THIS_ long FAR* Balance) PURE;
    STDMETHOD(put_Balance)(THIS_ long Balance) PURE;
    STDMETHOD(get_ImageSourceHeight)(THIS_ long FAR* ImageSourceHeight) PURE;
    STDMETHOD(get_ImageSourceWidth)(THIS_ long FAR* ImageSourceWidth) PURE;
    STDMETHOD(get_MovieWindowSetting)(THIS_ short FAR* MovieWindowSetting) PURE;
    STDMETHOD(put_MovieWindowSetting)(THIS_ short MovieWindowSetting) PURE;
    STDMETHOD(get_CurrentState)(THIS_ long FAR* CurrentState) PURE;
    STDMETHOD(get_CurrentPosition)(THIS_ double FAR* CurrentPosition) PURE;
    STDMETHOD(put_CurrentPosition)(THIS_ double CurrentPosition) PURE;
    STDMETHOD(get_Duration)(THIS_ double FAR* Duration) PURE;
    STDMETHOD(get_PrerollTime)(THIS_ double FAR* PrerollTime) PURE;
    STDMETHOD(put_PrerollTime)(THIS_ double PrerollTime) PURE;
    STDMETHOD(get_Rate)(THIS_ double FAR* Rate) PURE;
    STDMETHOD(put_Rate)(THIS_ double Rate) PURE;
    STDMETHOD(get_LocaleID)(THIS_ long FAR* LocaleID) PURE;
    STDMETHOD(put_LocaleID)(THIS_ long LocaleID) PURE;
    STDMETHOD(get_Font)(THIS_ IFontDisp FAR* FAR* Font) PURE;
    STDMETHOD(put_Font)(THIS_ IFontDisp FAR* Font) PURE;
    STDMETHOD(get_DisplayMode)(THIS_ short FAR* DisplayMode) PURE;
    STDMETHOD(put_DisplayMode)(THIS_ short DisplayMode) PURE;
    STDMETHOD(get_HWnd)(THIS_ OLE_HANDLE FAR* HWnd) PURE;
    STDMETHOD(get_Devices)(THIS_ IBPCDevices FAR* FAR* DeviceEnumerator) PURE;
    STDMETHOD(Run)(THIS) PURE;
    STDMETHOD(Pause)(THIS) PURE;
    STDMETHOD(Stop)(THIS) PURE;
    STDMETHOD(Close)(THIS) PURE;
    STDMETHOD(Open)(THIS_ BSTR FileName) PURE;
    STDMETHOD(Login)(THIS_ BSTR UserName, BSTR Password) PURE;
    STDMETHOD(Logout)(THIS) PURE;
    STDMETHOD(Tune)(THIS_ long lTuningSpace, long Channel, long VideoSubchannel, long AudioSubchannel) PURE;
    STDMETHOD(TSDeviceCount)(THIS_ long lTuningSpace, long FAR* count) PURE;
    STDMETHOD(Refresh)(THIS) PURE;
    STDMETHOD(AutoScan)(THIS_ long FAR* SignalStrength) PURE;
    STDMETHOD(AboutBox)(THIS) PURE;
};

DEFINE_GUID(DIID_DBPCVidEvents,0x8AFAFD82L,0x31C3,0x11CF,0xA1,0xE9,0x00,0xAA,0x00,0x62,0xC7,0x97);

/* Definition of dispatch interface: DBPCVidEvents */
#undef INTERFACE
#define INTERFACE DBPCVidEvents

DECLARE_INTERFACE_(DBPCVidEvents, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* DBPCVidEvents methods:
    void GotControl(void);
    void LostControl(void);
    void StateChange(IBPCDeviceBase FAR* lpdDevice, long oldState, long newState);
    void ErrorMessage(long iMessage, BSTR Text);
    void Click(void);
    void DblClick(void);
    void KeyDown(short FAR* KeyCode, short Shift);
    void KeyPress(short FAR* KeyAscii);
    void KeyUp(short FAR* KeyCode, short Shift);
    void MouseDown(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
    void MouseMove(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
    void MouseUp(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
    void Error(short Number, BSTR FAR* Description, long Scode, BSTR Source, BSTR HelpFile, long HelpContext, VARIANT_BOOL FAR* CancelDisplay);
    void CardMissing(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message, long FAR* HresultRC);
    void CardInvalid(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message, long FAR* HresultRC);
    void WrongCard(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message, long FAR* HresultRC);
    void BlackedOut(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message, long FAR* HresultRC);
    void RatingExceeded(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message, long FAR* HresultRC);
    void CostExceeded(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message, long FAR* HresultRC);
    void OSDRequest(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message, long FAR* HresultRC);
    void NoSubscriber(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message, long FAR* HresultRC);
    void CAFail(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message, long FAR* HresultRC);
    void CannotPurchase(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message, long FAR* HresultRC);
    void CASuccess(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message, long FAR* HresultRC);
    void Retry(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCMessage FAR* Message, long FAR* HresultRC);
    void SignalLost(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority);
    void NewEmail(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority);
    void ColdStart(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority);
    void Ready(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority);
    void NotReady(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority);
    void CAFault(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority);
    void PasswordCleared(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority);
    void TuningChanged(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority);
    void HandlePurchaseOffer(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, IBPCPurchase FAR* pDetails, long FAR* HresultRC);
    void RevokeEvent(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority);
    void CopyCard(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority, long FAR* HresultRC);
    void EPGFilterChanged(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority);
    void TapingControlChanged(IBPCDeviceBase FAR* lpdDevice, long SubEvent, long EventNumber, long ItemNumber, long Priority);
    */
};

DEFINE_GUID(CLSID_BPCVid,0x31263EC0L,0x2957,0x11CF,0xA1,0xE5,0x00,0xAA,0x9E,0xC7,0x97,0x00);

#ifdef __cplusplus
class BPCVid;
#endif

DEFINE_GUID(CLSID_BPCDeviceBase,0x833DE722L,0x31D5,0x11CF,0xA1,0xE9,0x00,0xAA,0x00,0x62,0xC7,0x97);

#ifdef __cplusplus
class BPCDeviceBase;
#endif

DEFINE_GUID(CLSID_BPCDevices,0xE323F121L,0xB484,0x11CF,0xA8,0x8F,0x44,0x45,0x53,0x54,0x00,0x00);

#ifdef __cplusplus
class BPCDevices;
#endif

DEFINE_GUID(IID_IBPCSuspend,0x887072E6L,0x45D6,0x11D1,0xB6,0xB0,0x00,0xC0,0x4F,0xBB,0xDE,0x6E);

/* Definition of interface: IBPCSuspend */
#undef INTERFACE
#define INTERFACE IBPCSuspend

DECLARE_INTERFACE_(IBPCSuspend, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IBPCSuspend methods */
    STDMETHOD(DeviceRelease)(THIS_ long priority, IDispatch * FAR* ppS) PURE;
};

DEFINE_GUID(CLSID_BPCSuspend,0x887072E7L,0x45D6,0x11D1,0xB6,0xB0,0x00,0xC0,0x4F,0xBB,0xDE,0x6E);

#ifdef __cplusplus
class BPCSuspend;
#endif

DEFINE_GUID(CLSID_BPCSuspended,0x887072E8L,0x45D6,0x11D1,0xB6,0xB0,0x00,0xC0,0x4F,0xBB,0xDE,0x6E);

#ifdef __cplusplus
class BPCSuspended;
#endif

#endif
