home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / vidsvr.odl < prev    next >
Text File  |  1998-04-25  |  36KB  |  530 lines

  1. // vidsvr.odl : type library source for vidsvr.exe
  2. // Copyright (c) Microsoft Corporation 1995-1997.
  3.  
  4. // This file will be processed by the Make Type Library (mktyplib) tool to
  5. // produce the type library (vidsvr.tlb).
  6.  
  7. #include <olectl.h>
  8.  
  9. #define ENABLE_OVERSCAN
  10.  
  11. [ uuid(99D257C1-97A9-11CF-A88F-444553540000), version(1.0),
  12.   helpstring("Microsoft BPC Video Server and Control module"), control ]
  13. library MSBPCVideo
  14. {
  15.  
  16.     importlib(STDOLE_TLB);
  17.     importlib(STDTYPE_TLB);
  18.  
  19. #ifdef __midl
  20.         import "ocidl.idl";
  21. #define boolean VARIANT_BOOL
  22. #endif
  23.  
  24. #define DISPID_NEWENUM (-4)
  25. #include "devtype.h"
  26.  
  27.     //  Primary dispatch interface for CBPCPurchase
  28.  
  29.     [ uuid(40ca1ac0-d66d-11cf-a88f-444553540000),
  30.       oleautomation, dual, hidden
  31.     ]
  32.     interface IBPCPurchase : IDispatch
  33.     {
  34.         [id(OABPCDETID_Channel), propget] HRESULT Channel([out, retval] short *Channel);
  35.         [id(OABPCDETID_Channel), propput] HRESULT Channel([in] short Channel);
  36.         [id(OABPCDETID_StartTime), propget] HRESULT StartTime([out, retval] DATE *StartTime);
  37.         [id(OABPCDETID_StartTime), propput] HRESULT StartTime([in] DATE StartTime);
  38.         [id(OABPCDETID_Expiry), propget] HRESULT Expiry([out, retval] DATE *Expiry);
  39.         [id(OABPCDETID_Expiry), propput] HRESULT Expiry([in] DATE Expiry);
  40.         [id(OABPCDETID_Duration), propget] HRESULT Duration([out, retval] long *Duration);
  41.         [id(OABPCDETID_Duration), propput] HRESULT Duration([in] long Duration);
  42.         [id(OABPCDETID_ItemID), propget] HRESULT ItemID([out, retval] long *ItemID);
  43.         [id(OABPCDETID_ItemID), propput] HRESULT ItemID([in] long ItemID);
  44.         [id(OABPCDETID_Location), propget] HRESULT Location([out, retval] long *Location);
  45.         [id(OABPCDETID_Location), propput] HRESULT Location([in] long Location);
  46.         [id(OABPCDETID_UserId), propget] HRESULT UserId([out, retval] long *UserId);
  47.         [id(OABPCDETID_UserId), propput] HRESULT UserId([in] long UserId);
  48.         [id(OABPCDETID_StorageId), propget] HRESULT StorageId([out, retval] long *StorageId);
  49.         [id(OABPCDETID_StorageId), propput] HRESULT StorageId([in] long StorageId);
  50.         [id(OABPCDETID_Title), propget] HRESULT Title([out, retval] BSTR *Title);
  51.         [id(OABPCDETID_Title), propput] HRESULT Title([in] BSTR Title);
  52.         [id(OABPCDETID_Rating), propget] HRESULT Rating([out, retval] long *Rating);
  53.         [id(OABPCDETID_Rating), propput] HRESULT Rating([in] long Rating);
  54.         [id(OABPCDETID_Year), propget] HRESULT Year([out, retval] BSTR *Year);
  55.         [id(OABPCDETID_Year), propput] HRESULT Year([in] BSTR Year);
  56.         [id(OABPCDETID_Description), propget] HRESULT Description([out, retval] BSTR *Description);
  57.         [id(OABPCDETID_Description), propput] HRESULT Description([in] BSTR Description);
  58.         [id(OABPCDETID_ViewCost), propget] HRESULT ViewCost([out, retval] CURRENCY *ViewCost);
  59.         [id(OABPCDETID_ViewCost), propput] HRESULT ViewCost([in] CURRENCY ViewCost);
  60.         [id(OABPCDETID_TapeCost), propget] HRESULT TapeCost([out, retval] CURRENCY *TapeCost);
  61.         [id(OABPCDETID_TapeCost), propput] HRESULT TapeCost([in] CURRENCY TapeCost);
  62.         [id(OABPCDETID_Action), propget] HRESULT Action([out, retval] long *Action);
  63.         [id(OABPCDETID_Action), propput] HRESULT Action([in] long Action);
  64.         [id(OABPCDETID_Status), propget] HRESULT Status([out, retval] long *Status);
  65.         [id(OABPCDETID_Status), propput] HRESULT Status([in] long Status);
  66.         [id(OABPCDETID_Reason), propget] HRESULT Reason([out, retval] long *Reason);
  67.         [id(OABPCDETID_Reason), propput] HRESULT Reason([in] long Reason);
  68.         [id(OABPCDETID_ReasonDesc), propget] HRESULT ReasonDesc([out, retval] BSTR *ReasonDesc);
  69.         [id(OABPCDETID_ReasonDesc), propput] HRESULT ReasonDesc([in] BSTR ReasonDesc);
  70.         [id(OABPCDETID_ProviderBuffer), propget] HRESULT ProviderBuffer([out, retval] BSTR *Buffer);
  71.     };
  72.  
  73.     //  Class information for CBPCPurchase
  74.  
  75.     [ uuid(329301E1-D0CA-11CF-A19E-00AA00A286A1) ]
  76.     coclass BPCPurchase
  77.     {
  78.             [default] interface IBPCPurchase;
  79.     };
  80.  
  81.     [ uuid(C043CF80-6D5D-11d0-ABCA-00AA00B5092C),
  82.       oleautomation, dual, hidden
  83.     ]
  84.     interface IBPCMessage : IDispatch
  85.     {
  86.         [id(MSGID_Attributes), propget] HRESULT Attributes([out, retval] long *Attrs);
  87.         [id(MSGID_Message), propget] HRESULT Msg([out, retval] BSTR *Text);
  88.     };
  89.  
  90.     //  Class information for CExplicitOsd
  91.  
  92.     [ uuid(C043CF81-6D5D-11d0-ABCA-00AA00B5092C)]
  93.     coclass BPCMessage
  94.     {
  95.             [default] interface IBPCMessage;
  96.     };
  97.  
  98.     [ uuid(ff93ca20-d67f-11cf-a88f-444553540000),
  99.       oleautomation, dual, hidden
  100.     ]
  101.     interface IBPCHistoryItemsCollection : IDispatch
  102.     {
  103.         [id(DISPID_NEWENUM), propget, restricted] HRESULT _NewEnum([out, retval] IUnknown **pCollection);
  104.         [id(COLLECTID_Count), propget] HRESULT Count([out, retval] long *Count);
  105.         [id(COLLECTID_Remove)] HRESULT Remove([in] VARIANT Index);
  106.         [id(COLLECTID_Item)] HRESULT Item([in] VARIANT Index, [out, retval] IBPCPurchase **pItem);
  107.     };
  108.  
  109.     //  Class information for CHistoryItemsCollection
  110.  
  111.     [ uuid(54F98D96-CA2E-11CF-B08E-00AA00B8C32E)]
  112.     coclass BPCHistoryItemsCollection
  113.     {
  114.             [default] interface IBPCHistoryItemsCollection;
  115.     };
  116.  
  117.     // provider "email" style stored notification message
  118.     [ uuid(D9BEE320-C198-11d0-8D13-00AA00BD8339),
  119.       oleautomation, dual, hidden
  120.     ]
  121.     interface IBPCEmailMessage : IDispatch
  122.     {
  123.         [id(EMSGID_MsgId), propget] HRESULT MsgId([out, retval] long *MsgId);
  124.         [id(EMSGID_UserId), propget] HRESULT UserId([out, retval] long *UserId);
  125.         [id(EMSGID_Read), propget] HRESULT IsRead([out, retval] boolean *HasBeenRead);
  126.         [id(EMSGID_Received), propget] HRESULT Received([out, retval] DATE *Received);
  127.         [id(EMSGID_Expires), propget] HRESULT Expires([out, retval] DATE *Expires);
  128.         [id(EMSGID_Title), propget] HRESULT Title([out, retval] BSTR *Text);
  129.         [id(EMSGID_Message), propget] HRESULT Msg([out, retval] BSTR *Text);
  130.     };
  131.  
  132.  
  133.     //  Primary dispatch interface for CEmailMessagesCollection
  134.  
  135.     [ uuid(f92f8500-d681-11cf-a88f-444553540000),
  136.       oleautomation, dual, hidden
  137.     ]
  138.     interface IBPCEmailMessagesCollection : IDispatch
  139.     {
  140.         [id(DISPID_NEWENUM), propget, restricted] HRESULT _NewEnum([out, retval] IUnknown **pCollection);
  141.         [id(COLLECTID_Count), propget] HRESULT Count([out, retval] long *Count);
  142.         [id(COLLECTID_Item)] HRESULT Item([in] VARIANT Index, [out, retval] IBPCEmailMessage **pItem);
  143.         [id(COLLECTID_Remove)] HRESULT Remove([in] VARIANT pMsg);
  144.         [id(COLLECTID_MarkRead)] HRESULT MarkAsRead([in] IBPCEmailMessage *pMsg);
  145.     };
  146.  
  147.     //  Class information for CEmailMessagesCollection
  148.  
  149.     [ uuid(C26AAD80-DDB3-11d0-8D13-00AA00BD8339) ]
  150.     coclass BPCEmailMessageItem
  151.     {
  152.             [default] interface IBPCEmailMessage;
  153.     };
  154.     //  Class information for CEmailMessagesCollection
  155.  
  156.     [ uuid(54F98D98-CA2E-11CF-B08E-00AA00B8C32E) ]
  157.     coclass BPCEmailMessagesCollection
  158.     {
  159.             [default] interface IBPCEmailMessagesCollection;
  160.     };
  161.  
  162.     //  Primary dispatch interface for CDeviceBase
  163.  
  164.     interface IBPCDevices;
  165.     [
  166.         uuid(49224DE0-B30F-11cf-A88F-444553540000),
  167.         dual, oleautomation, hidden,
  168.         helpstring("MS BPC Video Server DeviceBase Dual Interface"),
  169.     ]
  170.     interface IBPCDeviceBase : IDispatch
  171.     {
  172. //NOTE:  all of the HWND parameters are defined as long since
  173. // vb doesn't understand HWND and won't instatiate an object
  174. // with any HWNDs in the interface
  175.         // properties
  176.         [propget, id(dispidName)] HRESULT Name([out, retval] BSTR *Name);
  177.         [propget, id(dispidHasFilename)] HRESULT HasFilename([out, retval] boolean *HasFilename);
  178.         [propget, id(dispidHasCA)] HRESULT HasCA([out, retval] boolean *HasCA);
  179.         [propget, id(dispidIsInput)] HRESULT IsInput([out, retval] boolean *IsInput);
  180.         [propget, id(dispidIsOutput)] HRESULT IsOutput([out, retval] boolean *IsOutput);
  181.         [propget, id(dispidHasChannel)] HRESULT HasChannel([out, retval] boolean *HasChannel);
  182.         [propget, id(dispidStatus)] HRESULT Status([out, retval] long *Status);
  183.         [propget, id(dispidProdName)] HRESULT ProdName([out, retval] BSTR *ProdName);
  184.         [propget, id(dispidDevFileName)] HRESULT FileName([out, retval] BSTR *FileName);
  185.         [propput, id(dispidDevFileName)] HRESULT FileName([in] BSTR FileName);
  186.         [propget, id(dispidChannel)] HRESULT Channel([out, retval] long *Channel);
  187.         [propput, id(dispidChannel)] HRESULT Channel([in] long Channel);
  188.         [propget, id(dispidDevImageSourceWidth)] HRESULT ImageSourceWidth([retval, out] long *x);
  189.         [propget, id(dispidDevImageSourceHeight)] HRESULT ImageSourceHeight([retval, out] long *y);
  190.         [propget, id(dispidDevCurrentState)] HRESULT CurrentState([out, retval] long *CurrentState);
  191.         [propget, id(dispidDevCurrentPosition)] HRESULT CurrentPosition([retval, out] double *dPos);
  192.         [propput, id(dispidDevCurrentPosition)] HRESULT CurrentPosition([in] double dPos);
  193.         [propget, id(dispidDevDuration)] HRESULT Duration([retval, out] double *dPos);
  194.         [propget, id(dispidDevPrerollTime)] HRESULT PrerollTime([retval, out] double *dPos);
  195.         [propput, id(dispidDevPrerollTime)] HRESULT PrerollTime([in] double dPos);
  196.         [propget, id(dispidDevRate)] HRESULT Rate([retval, out] double *dPos);
  197.         [propput, id(dispidDevRate)] HRESULT Rate([in] double dPos);
  198.         [propget, id(dispidDevCountryCode)] HRESULT CountryCode([retval, out] long *lcc);
  199.         [propput, id(dispidDevCountryCode)] HRESULT CountryCode([in] long lcc);
  200.         [propget, id(dispidDevVideoFrequency)] HRESULT VideoFrequency([retval, out] long *lcc);
  201.         [propget, id(dispidDevAudioFrequency)] HRESULT AudioFrequency([retval, out] long *lcc);
  202.         [propget, id(dispidDevDefaultVideoType)] HRESULT DefaultVideoType([retval, out] long *lcc);
  203.         [propput, id(dispidDevDefaultVideoType)] HRESULT DefaultVideoType([in] long lcc);
  204.         [propget, id(dispidDevDefaultAudioType)] HRESULT DefaultAudioType([retval, out] long *lcc);
  205.         [propput, id(dispidDevDefaultAudioType)] HRESULT DefaultAudioType([in] long lcc);
  206.         [propget, id(dispidDevVideoSubchannel)] HRESULT VideoSubchannel([retval, out] long *lcc);
  207.         [propput, id(dispidDevVideoSubchannel)] HRESULT VideoSubchannel([in] long lcc);
  208.         [propget, id(dispidDevAudioSubchannel)] HRESULT AudioSubchannel([retval, out] long *lcc);
  209.         [propput, id(dispidDevAudioSubchannel)] HRESULT AudioSubchannel([in] long lcc);
  210.         [propput, id(dispidDevVolume)] HRESULT Volume([in] long lVol);
  211.         [propget, id(dispidDevVolume)] HRESULT Volume([retval, out] long *lVol);
  212.         [propput, id(dispidDevBalance)] HRESULT Balance([in] long lBal);
  213.         [propget, id(dispidDevBalance)] HRESULT Balance([retval, out] long *lBal);
  214.         [propput, id(dispidDevPower)] HRESULT Power([in] boolean bPower);
  215.         [propget, id(dispidDevPower)] HRESULT Power([retval, out] boolean *bPower);
  216. #ifdef ENABLE_OVERSCAN
  217.         [propput, id(dispidDevOverScan)] HRESULT OverScan([in] long lPercent);
  218.         [propget, id(dispidDevOverScan)] HRESULT OverScan([retval, out] long *plPercent);
  219. #endif
  220.         [id(CASERVERID_ProviderRating), propget] HRESULT ProviderRating([out, retval] long* pRating);
  221.         [id(CASERVERID_ProviderStatus), propget] HRESULT ProviderStatus([out, retval] boolean* pStatus);
  222.         [id(CASERVERID_ProviderEPGMask), propget] HRESULT ProviderEPGMask([out, retval] long* pMask);
  223.         [id(CASERVERID_HistoryItems), propget] HRESULT HistoryItems([out, retval] IBPCHistoryItemsCollection** ppHistoryItem);
  224.         [id(CASERVERID_EmailMessages), propget] HRESULT EmailMessages([out, retval] IBPCEmailMessagesCollection** ppEmailMsg);
  225.         [id(CASERVERID_UserName), propget] HRESULT UserName([out, retval] BSTR* pUserName);
  226.         [id(CASERVERID_UserName), propput] HRESULT UserName([in] BSTR UserName);
  227.         [id(CASERVERID_UserArea), propget] HRESULT UserArea([out, retval] BSTR* pUserArea);
  228.         [id(CASERVERID_UserArea), propput] HRESULT UserArea([in] BSTR UserArea);
  229.         [id(CASERVERID_ItemDetails), propget] HRESULT ItemDetails([in] long Priority, [in] IBPCPurchase *pInDetails, [out, retval] IBPCPurchase** ppOutDetails);
  230.  
  231.  
  232.         //methods
  233.         [id(dispidDevRun)] HRESULT Run();
  234.         [id(dispidDevPause)] HRESULT Pause();
  235.         [id(dispidDevStop)] HRESULT Stop();
  236.         [id(dispidDevRefresh)] HRESULT Refresh();
  237.         [id(dispidChannelAvailable)] HRESULT ChannelAvailable([in] long nChannel, [out] long *SignalStrength, [retval, out] boolean *fSignalPresent);
  238.  
  239.  
  240.         [id(CASERVERID_ResetProviderSystem)] HRESULT ResetProviderSystem();
  241.         [id(CASERVERID_BuyItem)] HRESULT BuyItem([in] long Priority, [in] IBPCPurchase *pInDetails, [out, retval] IBPCPurchase **ppOutDetails);
  242.         [id(CASERVERID_CancelItem)] HRESULT CancelItem([in] IBPCPurchase *pInDetails, [out, retval] IBPCPurchase **ppOutDetails);
  243.         [id(CASERVERID_DisplayConfigDialog)] HRESULT DisplayConfigDialog();
  244.         [id(CASERVERID_HandleCardChaining)] HRESULT HandleCardChaining([in] boolean fOK);
  245.  
  246.     };
  247.  
  248. //NOTE: IBPCDeviceEvent methods should match the non-stock events
  249. // in DBPCVidEvents
  250. // NOTE: this interface must match the midl version above the
  251. // library statement or the marshalling won't work right.
  252.     [uuid(F4B33700-BD9B-11cf-A88F-444553540000),
  253.          hidden, oleautomation, dual,
  254.          helpstring("Private Interface for Device Events between vidsvr and ocx")
  255.     ]
  256.     interface IBPCDeviceEvent : IDispatch
  257.     {
  258.         [id(eventidGotControl)]     HRESULT GotControl();
  259.         [id(eventidLostControl)]    HRESULT LostControl();
  260.         [id(eventidStateChange)]    HRESULT StateChange([in] IBPCDeviceBase *lpd, [in] long oldState, [in] long newState);
  261.         [id(eventidErrorMessage)]   HRESULT ErrorMessage([in] long iMessage, [in] BSTR Text);
  262.         // MESSAGE EVENTS
  263.         [id(CAEVENTID_CardMissing)]         HRESULT CardMissing([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message);
  264.         [id(CAEVENTID_CardInvalid)]         HRESULT CardInvalid([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message);
  265.         [id(CAEVENTID_WrongCard)]           HRESULT WrongCard([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message);
  266.         [id(CAEVENTID_BlackedOut)]          HRESULT BlackedOut([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message);
  267.         [id(CAEVENTID_RatingExceeded)]      HRESULT RatingExceeded([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message);
  268.         [id(CAEVENTID_CostExceeded)]        HRESULT CostExceeded([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message);
  269.         [id(CAEVENTID_OSDRequest)]          HRESULT OSDRequest([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message);
  270.         [id(CAEVENTID_NoSubscriber)]        HRESULT NoSubscriber([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message);
  271.         [id(CAEVENTID_CAFail)]              HRESULT CAFail([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message);
  272.         [id(CAEVENTID_CannotPurchase)]      HRESULT CannotPurchase([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message);
  273.         [id(CAEVENTID_CASuccess)]           HRESULT CASuccess([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message);
  274.         [id(CAEVENTID_Retry)]               HRESULT Retry([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message);
  275.         // NOTIFICATION EVENTS
  276.         [id(CAEVENTID_SignalLost)]          HRESULT SignalLost([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  277.         [id(CAEVENTID_NewEmail)]            HRESULT NewEmail([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  278.         [id(CAEVENTID_ColdStart)]           HRESULT ColdStart([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  279.         [id(CAEVENTID_Ready)]               HRESULT Ready([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  280.         [id(CAEVENTID_NotReady)]            HRESULT NotReady([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  281.         [id(CAEVENTID_CAFault)]             HRESULT CAFault([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  282.         [id(CAEVENTID_PasswordCleared)]     HRESULT PasswordCleared([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  283.         [id(CAEVENTID_TuningChanged)]       HRESULT TuningChanged([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  284.         // SPECIAL EVENT
  285.         [id(CAEVENTID_HandlePurchaseOffer)] HRESULT HandlePurchaseOffer([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCPurchase *pDetails);
  286.         [id(CAEVENTID_RevokeEvent)]         HRESULT RevokeEvent([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  287.         [id(CAEVENTID_CopyCard)]            HRESULT CopyCard([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  288.         [id(CAEVENTID_EPGFilterChanged)]    HRESULT EPGFilterChanged([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  289.         [id(CAEVENTID_TapingControlChanged)]    HRESULT TapingControlChanged([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  290.  
  291.     };
  292.  
  293.     [uuid(E323F120-B484-11cf-A88F-444553540000),
  294.             dual, oleautomation, hidden,
  295.             helpstring("Dispatch Dual Interface for Devices Collection"),
  296.     ]
  297.     interface IBPCDevices : IDispatch
  298.     {
  299.             // properties
  300.             [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount);
  301.             [propget, id(DISPID_NEWENUM), restricted] HRESULT _NewEnum([out, retval] IUnknown **pD);
  302.             [propput, id(dispidHWnd)] HRESULT HWnd([in] long hwnd);
  303.             [propput, id(dispidLCID)] HRESULT LCID([in] long lcid);
  304.             [propput, id(dispidNotify)] HRESULT Notify([in] IBPCDeviceEvent *pDeviceEvents);
  305.             [propget, id(dispidDevColorKey)] HRESULT ColorKey([retval, out] long *lcc);
  306.             [propput, id(dispidDevColorKey)] HRESULT ColorKey([in] long lcc);
  307.             [propget, id(dispidDevPriority)] HRESULT Priority([retval, out] long *lcc);
  308.             [propput, id(dispidDevPriority)] HRESULT Priority([in] long lcc);
  309.             [propget, id(dispidDevInput)] HRESULT Input([retval, out] IBPCDeviceBase **ppInput);
  310.             [propput, id(dispidDevInput)] HRESULT Input([in] IBPCDeviceBase *pInput);
  311.             [propget, id(dispidDevOutput)] HRESULT Output([retval, out] IBPCDeviceBase **ppOutput);
  312.             [propput, id(dispidDevOutput)] HRESULT Output([in] IBPCDeviceBase *pOutput);
  313.             [propget, id(dispidDevVideoOn)] HRESULT VideoOn([out, retval] boolean *VideoOn);
  314.             [propput, id(dispidDevVideoOn)] HRESULT VideoOn([in] boolean VideoOn);
  315.  
  316.             // methods
  317.             [id(dispidItem)] HRESULT Item([in] VARIANT v, [out, retval] IBPCDeviceBase **pDB);
  318.             [id(dispidDevTune)] HRESULT Tune([in] long lTuningSpace, [in] long Channel, [in] long VideoSubchannel, [in] long AudioSubchannel);
  319.             [id(dispidDevLogin)] HRESULT Login([in] BSTR UserName, [in] BSTR Password);
  320.             [id(dispidDevLogout)] HRESULT Logout();
  321.             [id(dispidDevOpen)] HRESULT Open([in] BSTR FileName);
  322.             [id(dispidDevTSDevCount)] HRESULT TSDeviceCount([in] long lTuningSpace, [out, retval] long *count);
  323.             [id(dispidDevAutoScan)] HRESULT AutoScan([retval, out] long *SignalStrength);
  324.     };
  325.  
  326.     [ uuid(8AFAFD81-31C3-11CF-A1E9-00AA0062C797),
  327.       helpstring("Dispatch interface for Vid Control"), hidden,
  328.       oleautomation, dual
  329.     ]
  330.     interface IBPCVid : IDispatch
  331.     {
  332.         // properties
  333.         [id(dispidPower), propget] HRESULT Power([retval, out] boolean *Power);
  334.         [id(dispidPower), propput] HRESULT Power([in] boolean Power);
  335.         [id(dispidStartTime), propget] HRESULT StartTime([retval, out] double *StartTime);
  336.         [id(dispidStartTime), propput] HRESULT StartTime([in] double StartTime);
  337.         [id(dispidStopTime), propget] HRESULT StopTime([retval, out] double *StopTime);
  338.         [id(dispidStopTime), propput] HRESULT StopTime([in] double StopTime);
  339.         [id(dispidVideoOn), propget] HRESULT VideoOn([out, retval] boolean *VideoOn);
  340.         [id(dispidVideoOn), propput] HRESULT VideoOn([in] boolean VideoOn);
  341.         [id(dispidClosedCaption), propget] HRESULT ClosedCaption([out, retval] boolean *ClosedCaption);
  342.         [id(dispidClosedCaption), propput] HRESULT ClosedCaption([in] boolean ClosedCaption);
  343.         [id(dispidDebug), helpstring("Information/Diagnostic display in the OCX window"), propget] HRESULT Debug([out, retval] boolean *Debug);
  344.         [id(dispidDebug), helpstring("Information/Diagnostic display in the OCX window"), propput] HRESULT Debug([in] boolean Debug);
  345.         [id(dispidDeviceCount), propget] HRESULT DeviceCount([out, retval] long *DeviceCount);
  346.         [id(dispidInput), propget] HRESULT Input([out, retval] IBPCDeviceBase** Input);
  347.         [id(dispidInput), propput] HRESULT Input([in] IBPCDeviceBase* Input);
  348.         [id(dispidOutput), propget] HRESULT Output([out, retval] IBPCDeviceBase** Output);
  349.         [id(dispidOutput), propput] HRESULT Output([in] IBPCDeviceBase* Output);
  350.  
  351.         [id(dispidColorKey), propget] HRESULT ColorKey([out, retval] long *ColorKey);
  352.         [id(dispidColorKey), propput] HRESULT ColorKey([in] long ColorKey);
  353.         [id(dispidFileName), propget] HRESULT FileName([out, retval] BSTR *FileName);
  354.         [id(dispidFileName), propput] HRESULT FileName([in] BSTR FileName);
  355.         [id(dispidPriority), propget] HRESULT Priority([out, retval] long *Priority);
  356.         [id(dispidPriority), propput] HRESULT Priority([in] long Priority);
  357.         [id(dispidVolume), propget] HRESULT Volume([out, retval] long *Volume);
  358.         [id(dispidVolume), propput] HRESULT Volume([in] long Volume);
  359.         [id(dispidBalance), propget] HRESULT Balance([out, retval] long *Balance);
  360.         [id(dispidBalance), propput] HRESULT Balance([in] long Balance);
  361.         [id(dispidImageSourceHeight), propget] HRESULT ImageSourceHeight([out, retval] long *ImageSourceHeight);
  362.         [id(dispidImageSourceWidth), propget] HRESULT ImageSourceWidth([out, retval] long *ImageSourceWidth);
  363.         [id(dispidMovieWindowSetting), propget] HRESULT MovieWindowSetting([out, retval] short *MovieWindowSetting);
  364.         [id(dispidMovieWindowSetting), propput] HRESULT MovieWindowSetting([in] short MovieWindowSetting);
  365.         [id(dispidCurrentState), propget] HRESULT CurrentState([out, retval] long *CurrentState);
  366.         [id(dispidCurrentPosition), propget] HRESULT CurrentPosition([out, retval] double *CurrentPosition);
  367.         [id(dispidCurrentPosition), propput] HRESULT CurrentPosition([in] double CurrentPosition);
  368.         [id(dispidDuration), propget] HRESULT Duration([out, retval] double *Duration);
  369.         [id(dispidPrerollTime), propget] HRESULT PrerollTime([out, retval] double *PrerollTime);
  370.         [id(dispidPrerollTime), propput] HRESULT PrerollTime([in] double PrerollTime);
  371.         [id(dispidRate), propget] HRESULT Rate([out, retval] double *Rate);
  372.         [id(dispidRate), propput] HRESULT Rate([in] double Rate);
  373.         [id(dispidLocaleID), propget] HRESULT LocaleID([out, retval] long *LocaleID);
  374.         [id(dispidLocaleID), propput] HRESULT LocaleID([in] long LocaleID);
  375.         [id(DISPID_FONT), bindable, propget] HRESULT Font([out, retval] IFontDisp** Font);
  376.         [id(DISPID_FONT), bindable, propput] HRESULT Font([in] IFontDisp* Font);
  377.         [id(dispidDisplayMode), propget] HRESULT DisplayMode([out, retval] short *DisplayMode);
  378.         [id(dispidDisplayMode), propput] HRESULT DisplayMode([in] short DisplayMode);
  379.         [id(DISPID_HWND), propget] HRESULT HWnd([out, retval] OLE_HANDLE *HWnd);
  380.         [id(dispidDevices), propget, helpstring("All the devices available for use")] HRESULT Devices([out, retval] IBPCDevices **DeviceEnumerator);
  381.  
  382.         // methods
  383.         [id(dispidRun)] HRESULT Run();
  384.         [id(dispidPause)] HRESULT Pause();
  385.         [id(dispidStop)] HRESULT Stop();
  386.         [id(dispidClose)] HRESULT Close();
  387.         [id(dispidOpen)] HRESULT Open([in] BSTR FileName);
  388.         [id(dispidLogin)] HRESULT Login([in] BSTR UserName, [in] BSTR Password);
  389.         [id(dispidLogout)] HRESULT Logout();
  390.         [id(dispidTune)] HRESULT Tune([in] long lTuningSpace, [in] long Channel, [in] long VideoSubchannel, [in] long AudioSubchannel);
  391.         [id(dispidTSDevCount)] HRESULT TSDeviceCount([in] long lTuningSpace, [out, retval] long *count);
  392.         [id(DISPID_REFRESH)] HRESULT Refresh();
  393.         [id(dispidAutoScan)] HRESULT AutoScan([retval, out] long *SignalStrength);
  394.  
  395.         [id(DISPID_ABOUTBOX)] HRESULT AboutBox();
  396.     };
  397.  
  398.     //  Event dispatch interface for CVidCtrl
  399.  
  400. // NOTE: the non stock methods should match IBPCDeviceEvent
  401.     [ uuid(8AFAFD82-31C3-11CF-A1E9-00AA0062C797),
  402.       helpstring("Event interface for Vid Control") ]
  403.     dispinterface DBPCVidEvents
  404.     {
  405.         properties:
  406.                 //  Event interface has no properties
  407.  
  408.         methods:
  409.             // NOTE - ClassWizard will maintain event information here.
  410.             //    Use extreme caution when editing this section.
  411.             [id(eventidGotControl)]     void GotControl();
  412.             [id(eventidLostControl)]    void LostControl();
  413.             [id(eventidStateChange)]    void StateChange(IBPCDeviceBase *lpdDevice, long oldState, long newState);
  414.             [id(eventidErrorMessage)]   void ErrorMessage(long iMessage, BSTR Text);
  415.             [id(DISPID_CLICK)] void Click();
  416.             [id(DISPID_DBLCLICK)] void DblClick();
  417.             [id(DISPID_KEYDOWN)] void KeyDown(short* KeyCode, short Shift);
  418.             [id(DISPID_KEYPRESS)] void KeyPress(short* KeyAscii);
  419.             [id(DISPID_KEYUP)] void KeyUp(short* KeyCode, short Shift);
  420.             [id(DISPID_MOUSEDOWN)] void MouseDown(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
  421.             [id(DISPID_MOUSEMOVE)] void MouseMove(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
  422.             [id(DISPID_MOUSEUP)] void MouseUp(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
  423.             [id(DISPID_ERROREVENT)] void Error(short Number, BSTR* Description, long Scode, BSTR Source, BSTR HelpFile, long HelpContext, boolean* CancelDisplay);
  424.  
  425.             // MESSAGE EVENTS
  426.             [id(CAEVENTID_CardMissing)]         void CardMissing([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message, [out] long *HresultRC);
  427.             [id(CAEVENTID_CardInvalid)]         void CardInvalid([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message, [out] long *HresultRC);
  428.             [id(CAEVENTID_WrongCard)]           void WrongCard([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message, [out] long *HresultRC);
  429.             [id(CAEVENTID_BlackedOut)]          void BlackedOut([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message, [out] long *HresultRC);
  430.             [id(CAEVENTID_RatingExceeded)]      void RatingExceeded([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message, [out] long *HresultRC);
  431.             [id(CAEVENTID_CostExceeded)]        void CostExceeded([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message, [out] long *HresultRC);
  432.             [id(CAEVENTID_OSDRequest)]          void OSDRequest([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message, [out] long *HresultRC);
  433.             [id(CAEVENTID_NoSubscriber)]        void NoSubscriber([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message, [out] long *HresultRC);
  434.             [id(CAEVENTID_CAFail)]              void CAFail([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message, [out] long *HresultRC);
  435.             [id(CAEVENTID_CannotPurchase)]      void CannotPurchase([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message, [out] long *HresultRC);
  436.             [id(CAEVENTID_CASuccess)]           void CASuccess([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message, [out] long *HresultRC);
  437.             [id(CAEVENTID_Retry)]               void Retry([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCMessage *Message, [out] long *HresultRC);
  438.             // NOTIFICATION EVENTS
  439.             [id(CAEVENTID_SignalLost)]          void SignalLost([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  440.             [id(CAEVENTID_NewEmail)]            void NewEmail([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  441.             [id(CAEVENTID_ColdStart)]           void ColdStart([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  442.             [id(CAEVENTID_Ready)]               void Ready([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  443.             [id(CAEVENTID_NotReady)]            void NotReady([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  444.             [id(CAEVENTID_CAFault)]             void CAFault([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  445.             [id(CAEVENTID_PasswordCleared)]     void PasswordCleared([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  446.             [id(CAEVENTID_TuningChanged)]       void TuningChanged([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  447.             // SPECIAL EVENT
  448.             [id(CAEVENTID_HandlePurchaseOffer)] void HandlePurchaseOffer([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [in] IBPCPurchase *pDetails, [out] long *HresultRC);
  449.             [id(CAEVENTID_RevokeEvent)]         void RevokeEvent([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  450.             [id(CAEVENTID_CopyCard)]            void CopyCard([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority, [out] long *HresultRC);
  451.             [id(CAEVENTID_EPGFilterChanged)]    void EPGFilterChanged([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  452.             [id(CAEVENTID_TapingControlChanged)]    void TapingControlChanged([in] IBPCDeviceBase *lpdDevice, [in] long SubEvent, [in] long EventNumber, [in] long ItemNumber, [in] long Priority);
  453.     };
  454.  
  455.     //  Class information for CVidCtrl
  456.  
  457.     [ uuid(31263EC0-2957-11CF-A1E5-00AA9EC79700),
  458.       helpstring("MS BPC Video Control"), control ]
  459.     coclass BPCVid
  460.     {
  461.             [default] interface IBPCVid;
  462.             [default, source] dispinterface DBPCVidEvents;
  463.     };
  464.  
  465.     //  Class information for CDeviceBase
  466.  
  467.  
  468.     [ uuid(833DE722-31D5-11CF-A1E9-00AA0062C797),
  469.       helpstring("MS BPC Video Server Device Class") ]
  470.     coclass BPCDeviceBase
  471.     {
  472.         [default] interface IBPCDeviceBase;
  473.     };
  474.  
  475.     [ uuid(E323F121-B484-11cf-A88F-444553540000),
  476.       helpstring("MS BPC Video Server Device Collection Class") ]
  477.     coclass BPCDevices
  478.     {
  479.         [default] interface IBPCDevices;
  480.         [source] interface IBPCDeviceEvent;
  481.     };
  482.  
  483. #if 0
  484.     [ uuid(EE50972F-1E8C-11d1-B6AD-00C04FBBDE6E),
  485.       oleautomation, dual
  486.     ]
  487.     interface IBPCVidsvrControl : IDispatch
  488.     {
  489.         // NOTE: all operations on this interface must be atomic since we have no event
  490.         // mechanism in this interface for returning gotcontrol/lostcontrol
  491.         // methods
  492.         [id(VCTL_VBITune)] HRESULT VBITune([in] long lTuningSpace, [in] long channel, [in] long priority);
  493.         [id(VCTL_VBIStatus)] HRESULT VBIStatus([in] long lTuningSpace, [in] long channel, [in] long priority, [out] long *SignalStrength, [retval, out] boolean *fSignalPresent);
  494.     };
  495.  
  496.     [ uuid(EE50972E-1E8C-11d1-B6AD-00C04FBBDE6E),
  497.       helpstring("MS BPC Video Server Control Class") ]
  498.     coclass BPCVidsvrControl
  499.     {
  500.         [default] interface IBPCVidsvrControl;
  501.     };
  502.         
  503. #endif
  504.  
  505.     [ uuid(887072E6-45D6-11d1-B6B0-00C04FBBDE6E),
  506.       oleautomation, dual
  507.     ]
  508.     interface IBPCSuspend : IDispatch {
  509.         // priority reserved, set to 0
  510.         [id(SUSPEND_DeviceRelease)] HRESULT DeviceRelease([in] long priority, [out] IDispatch **ppS);
  511.     };
  512.  
  513.     [ uuid(887072E7-45D6-11d1-B6B0-00C04FBBDE6E),
  514.       helpstring("MS BPC Video Server Suspendor Class") ]
  515.     coclass BPCSuspend
  516.     {
  517.         [default] interface IBPCSuspend;
  518.     };
  519.  
  520.     [ uuid(887072E8-45D6-11d1-B6B0-00C04FBBDE6E),
  521.       helpstring("MS BPC Video Server Suspended Class") ]
  522.     coclass BPCSuspended
  523.     {
  524.         [default] interface IDispatch;
  525.     };
  526.  
  527. };
  528.  
  529.  
  530.