tuner.idl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:67k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //------------------------------------------------------------------------------
  2. // File: Tuner.idl
  3. //
  4. // Desc: 
  5. //
  6. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  7. //------------------------------------------------------------------------------
  8. cpp_quote("//+-------------------------------------------------------------------------")
  9. cpp_quote("//")
  10. cpp_quote("//  Microsoft Windows")
  11. cpp_quote("//  Copyright (C) Microsoft Corporation, 1999-2000.")
  12. cpp_quote("//")
  13. cpp_quote("//--------------------------------------------------------------------------")
  14. cpp_quote("#pragma once")
  15. #include <olectl.h>
  16. #ifndef DO_NO_IMPORTS
  17. import "oaidl.idl";
  18. import "comcat.idl";
  19. import "strmif.idl";
  20. import "bdatypes.h";
  21. import "regbag.idl";
  22. #endif
  23. cpp_quote("#include <bdatypes.h>")
  24. interface ITuningSpaceContainer;
  25. interface ITuningSpace;
  26. interface IEnumTuningSpaces;
  27. interface ITuneRequest;
  28. interface ITuner;
  29. interface IScanningTuner;
  30. interface ITunerEvents;
  31. interface IEnumComponentTypes;
  32. interface IComponentTypes;
  33. interface IComponentType;
  34. interface ILanguageComponentType;
  35. interface IEnumComponents;
  36. interface IComponents;
  37. interface IComponent;
  38. interface IMPEG2ComponentType;
  39. interface IMPEG2Component;
  40. interface ILocator;
  41. interface IATSCLocator;
  42. interface IDVBSLocator;
  43. interface IDVBTLocator;
  44. // tuner.idl:
  45. //  interface ITuningSpaceContainer : IDispatch
  46. //  interface ITuningSpace : IDispatch
  47. //  interface ITuneRequest : IDispatch
  48. //  interface IComponentType : IDispatch
  49. //  interface ILanguageComponentType : IComponentType
  50. //  interface IComponentTypes : IDispatch
  51. //  interface IComponent : IDispatch
  52. //  interface IComponents : IDispatch
  53. //  interface ITVTuningSpace : ITuningSpace
  54. //  interface IFMRadioTuningSpace : ITuningSpace
  55. //  interface IAMRadioTuningSpace : ITuningSpace
  56. //  interface IAnalogTVTuningSpace : ITVTuningSpace
  57. //  interface IAnalogTVAudioComponent : IComponent
  58. //  interface IAnalogTVDataComponent : IComponent
  59. //  interface IChannelTuneRequest : ITuneRequest
  60. //  interface IDVBComponent : IComponent
  61. //  interface IDVBTuneRequest : ITuneRequest
  62. // DISPIDs for ITuningSpaces interface
  63. // we don't expect to inherit from this interface and consequently there's
  64. //     no chance of collision, thus we'll allow midl to auto assign ids for this one
  65. // DISPIDs for ITuningSpace interface
  66. enum {
  67. DISPID_TUNER_TS_UNIQUENAME                      = 1,
  68. DISPID_TUNER_TS_FRIENDLYNAME                    = 2,
  69. DISPID_TUNER_TS_CLSID                     = 3,
  70. DISPID_TUNER_TS_NETWORKTYPE                     = 4,
  71. DISPID_TUNER_TS__NETWORKTYPE                    = 5,
  72. DISPID_TUNER_TS_CREATETUNEREQUEST               = 6,
  73. DISPID_TUNER_TS_ENUMCATEGORYGUIDS               = 7,
  74. DISPID_TUNER_TS_ENUMDEVICEMONIKERS              = 8,
  75. DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES  = 9,
  76. DISPID_TUNER_TS_FREQMAP = 10,
  77. DISPID_TUNER_TS_DEFLOCATOR = 11,
  78. DISPID_TUNER_TS_CLONE = 12,
  79. // DISPIDs for ITuneRequest interface
  80. DISPID_TUNER_TR_TUNINGSPACE                     = 1,
  81. DISPID_TUNER_TR_COMPONENTS                      = 2,
  82. DISPID_TUNER_TR_CLONE                           = 3,
  83. DISPID_TUNER_TR_LOCATOR                         = 4,
  84. // DISPID for IComponentType interface
  85. DISPID_TUNER_CT_CATEGORY                        = 1,
  86. DISPID_TUNER_CT_MEDIAMAJORTYPE = 2,
  87. DISPID_TUNER_CT__MEDIAMAJORTYPE                 = 3,
  88. DISPID_TUNER_CT_MEDIASUBTYPE         = 4,
  89. DISPID_TUNER_CT__MEDIASUBTYPE         = 5,
  90. DISPID_TUNER_CT_MEDIAFORMATTYPE  = 6,
  91. DISPID_TUNER_CT__MEDIAFORMATTYPE  = 7,
  92. DISPID_TUNER_CT_MEDIATYPE = 8,
  93. DISPID_TUNER_CT_CLONE                           = 9,
  94. // DISPID for ILanguageComponentType interface
  95. DISPID_TUNER_LCT_LANGID                         = 100,
  96. // DISPID for IMPEG2ComponentType interface
  97. DISPID_TUNER_MP2CT_TYPE                         = 200,
  98. // DISPID for IATSCComponentType interface
  99. DISPID_TUNER_ATSCCT_FLAGS                       = 300,
  100. // DISPID for ILocator interface
  101. DISPID_TUNER_L_CARRFREQ                         = 1,
  102. DISPID_TUNER_L_INNERFECMETHOD                   = 2,
  103. DISPID_TUNER_L_INNERFECRATE                     = 3,
  104. DISPID_TUNER_L_OUTERFECMETHOD                   = 4,
  105. DISPID_TUNER_L_OUTERFECRATE                     = 5,
  106. DISPID_TUNER_L_MOD                              = 6,
  107. DISPID_TUNER_L_SYMRATE                          = 7,
  108. DISPID_TUNER_L_CLONE                            = 8,
  109. // DISPID for IATSCLocator interface
  110. DISPID_TUNER_L_ATSC_PHYS_CHANNEL                = 201,
  111. DISPID_TUNER_L_ATSC_TSID                        = 202,
  112. // DISPID for IDVBTLocator interface
  113. DISPID_TUNER_L_DVBT_BANDWIDTH                   = 301,
  114. DISPID_TUNER_L_DVBT_LPINNERFECMETHOD            = 302,
  115. DISPID_TUNER_L_DVBT_LPINNERFECRATE              = 303,
  116. DISPID_TUNER_L_DVBT_GUARDINTERVAL               = 304,
  117. DISPID_TUNER_L_DVBT_HALPHA                      = 305,
  118. DISPID_TUNER_L_DVBT_TRANSMISSIONMODE            = 306,
  119. DISPID_TUNER_L_DVBT_INUSE                       = 307,
  120. // DISPID for IDVBSLocator interface
  121. DISPID_TUNER_L_DVBS_POLARISATION                = 401,
  122. DISPID_TUNER_L_DVBS_WEST                        = 402,
  123. DISPID_TUNER_L_DVBS_ORBITAL                     = 403,
  124. DISPID_TUNER_L_DVBS_AZIMUTH                     = 404,
  125. DISPID_TUNER_L_DVBS_ELEVATION                   = 405,
  126. // DISPID for IDVBCLocator interface
  127. // DISPIDs for IComponent interface
  128. DISPID_TUNER_C_TYPE                             = 1,
  129. DISPID_TUNER_C_STATUS                           = 2,
  130. DISPID_TUNER_C_LANGID                           = 3,
  131. DISPID_TUNER_C_DESCRIPTION                      = 4,
  132. DISPID_TUNER_C_CLONE                            = 5,
  133. // DISPIDs for IMPEG2Component interface
  134. DISPID_TUNER_C_MP2_PID                           = 101,
  135. DISPID_TUNER_C_MP2_PCRPID                        = 102,
  136. DISPID_TUNER_C_MP2_PROGNO                        = 103,
  137. // DISPIDs for IDVBTuningSpace interface
  138. DISPID_TUNER_TS_DVB_SYSTEMTYPE                = 101,
  139. // DISPIDs for IAnalogRadioTuningSpace interface
  140. DISPID_TUNER_TS_AR_MINFREQUENCY               = 101,
  141. DISPID_TUNER_TS_AR_MAXFREQUENCY               = 102,
  142. DISPID_TUNER_TS_AR_STEP                       = 103,
  143. // DISPIDs for IAnalogTVTuningSpace interface
  144. DISPID_TUNER_TS_ATV_MINCHANNEL                 = 101,
  145. DISPID_TUNER_TS_ATV_MAXCHANNEL                 = 102,
  146. DISPID_TUNER_TS_ATV_INPUTTYPE                  = 103,
  147. DISPID_TUNER_TS_ATV_COUNTRYCODE                = 104,
  148. // DISPIDs for IATSCTuningSpace interface
  149. DISPID_TUNER_TS_ATSC_MINMINORCHANNEL           = 201,
  150. DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL           = 202,
  151. DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL            = 203,
  152. DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL            = 204,
  153. // DISPID for IAnalogTVAudioComponent interface
  154. DISPID_CHTUNER_ATVAC_CHANNEL                    = 101,
  155. // DISPIDs for IAnalogTVDataComponent interface
  156. DISPID_CHTUNER_ATVDC_SYSTEM                     = 101,
  157. DISPID_CHTUNER_ATVDC_CONTENT                    = 102,
  158. // DISPID for IChannelTuneRequest interface
  159. DISPID_CHTUNER_CTR_CHANNEL                      = 101,
  160. // DISPID IATSCChannelTuneRequest
  161. DISPID_CHTUNER_ACTR_MINOR_CHANNEL               = 201,
  162. // DISPIDs for IDVBComponent interface
  163. DISPID_DVBTUNER_DVBC_ATTRIBUTESVALID            = 101,
  164. DISPID_DVBTUNER_DVBC_PID                        = 102,
  165. DISPID_DVBTUNER_DVBC_TAG                        = 103,
  166. DISPID_DVBTUNER_DVBC_COMPONENTTYPE              = 104,
  167. // DISPIDs for IDVBTuneRequest interface
  168. DISPID_DVBTUNER_ONID         = 101,
  169. DISPID_DVBTUNER_TSID         = 102,
  170. DISPID_DVBTUNER_SID          = 103,
  171. };
  172. //////////////////////////////////////////////////////////////////////////////////////
  173. // Tuning Space Container
  174. //////////////////////////////////////////////////////////////////////////////////////
  175. // simple read-only collection of tuning spaces for enumerating subsets of the total
  176. // set of system tuning spaces
  177.     [
  178.         object,
  179.         uuid(901284E4-33FE-4b69-8D63-634A596F3756),
  180.         dual,
  181.         oleautomation,
  182.         nonextensible,
  183.         helpstring("Tuning Space Collection Interface"),
  184.         pointer_default(unique)
  185.     ]
  186.     interface ITuningSpaces : IDispatch
  187.     {
  188.         [propget, helpstring("Number of items in the collection")]
  189.         HRESULT Count(
  190.             [out, retval] long *Count
  191.             );
  192.         [propget, id(DISPID_NEWENUM), hidden, restricted]
  193.         HRESULT _NewEnum(
  194.             [out, retval] IEnumVARIANT** NewEnum
  195.             );
  196.         [id(DISPID_VALUE),
  197.             propget,
  198.             helpstring("Find the Tuning Space with the specified Index")]
  199.         HRESULT Item(
  200.             [in] VARIANT varIndex,
  201.             [out, retval] ITuningSpace** TuningSpace
  202.             );
  203.         [propget, hidden, restricted, 
  204. helpstring("convenience function so C++ apps don't have to unpack VARIANT")]
  205.         HRESULT EnumTuningSpaces(
  206.             [out, retval] IEnumTuningSpaces** NewEnum
  207.             );
  208. }
  209. //////////////////////////////////////////////////////////////////////////////////////
  210. // Tuning Space Container
  211. //////////////////////////////////////////////////////////////////////////////////////
  212.     [
  213.         object,
  214.         uuid(5B692E84-E2F1-11d2-9493-00C04F72D980),
  215.         dual,
  216.         oleautomation,
  217.         hidden,
  218.         nonextensible,
  219.         helpstring("Tuning Space Container Interface"),
  220.         pointer_default(unique)
  221.     ]
  222.     interface ITuningSpaceContainer : IDispatch
  223.     {
  224.         [propget, helpstring("Number of items in the collection")]
  225.         HRESULT Count(
  226.             [out, retval] long *Count
  227.             );
  228.         [propget, id(DISPID_NEWENUM), hidden, restricted]
  229.         HRESULT _NewEnum(
  230.             [out, retval] IEnumVARIANT** NewEnum
  231.             );
  232.         [id(DISPID_VALUE),
  233.             propget,
  234.             helpstring("Find the Tuning Space with the specified Index")]
  235.         HRESULT Item(
  236.             [in] VARIANT varIndex,
  237.             [out, retval] ITuningSpace** TuningSpace
  238.             );
  239.         [id(DISPID_VALUE),
  240.             propput,
  241.             helpstring("Change the Tuning Space with the specified Index")]
  242.         HRESULT Item([in] VARIANT varIndex, [in] ITuningSpace *TuningSpace);
  243.         [helpstring("Returns the collection of Tuning Spaces with the same implementation")]
  244.         HRESULT TuningSpacesForCLSID(
  245.             [in] BSTR SpaceCLSID,
  246.             [out, retval] ITuningSpaces** NewColl
  247.             );
  248.         [hidden, restricted, 
  249. helpstring("Convenience Function for enumerating from C")]
  250.         HRESULT _TuningSpacesForCLSID(
  251.             [in] REFCLSID SpaceCLSID,
  252.             [out, retval] ITuningSpaces** NewColl
  253.             );
  254.         [helpstring("Returns the collection of Tuning Spaces matching the name")]
  255.         HRESULT TuningSpacesForName(
  256.             [in] BSTR Name,
  257.             [out, retval] ITuningSpaces** NewColl
  258.             );
  259.         [helpstring("Find Local ID Number of the specified Tuning Space")]
  260.         HRESULT FindID(
  261.             [in] ITuningSpace *TuningSpace,
  262.             [out, retval] long *ID
  263.             );
  264.         [id(DISPID_ADDITEM), 
  265.  helpstring("Add a new Tuning Space to the collection.  This tuning space will be persisted unless removed")]
  266.         HRESULT Add(
  267.             [in] ITuningSpace* TuningSpace,
  268.             [out, retval] VARIANT* NewIndex
  269.             );
  270.         [propget, hidden, restricted, helpstring("Convenience Function for enumerating collection from C")]
  271.         HRESULT EnumTuningSpaces(
  272.             [out, retval] IEnumTuningSpaces **ppEnum
  273.             );
  274.         [id(DISPID_REMOVEITEM), 
  275.  helpstring("Remove a Tuning Space from the collection.  this tuning space will be deleted from the registry")]
  276.         HRESULT Remove(
  277.             [in] VARIANT Index
  278.             );
  279.     [propget, helpstring("Maximum number of items allowed in the collection")]
  280.         HRESULT MaxCount(
  281.             [out, retval] long *MaxCount
  282.             );
  283. // we don't allow script to set this, but we do allow c code to change it.
  284.     [propput, hidden, restricted, helpstring("Maximum number of items allowed in the collection")]
  285.         HRESULT MaxCount(
  286.             [in] long MaxCount
  287.             );
  288.     }
  289. //////////////////////////////////////////////////////////////////////////////////////
  290. // Tuning Space Interfaces
  291. //////////////////////////////////////////////////////////////////////////////////////
  292. // note: the network type is the clsid of the tuning space implementation
  293.     [
  294.         object,
  295.         uuid(061C6E30-E622-11d2-9493-00C04F72D980),
  296.         dual,
  297.         oleautomation,
  298.         nonextensible,
  299.         helpstring("Tuning Space Interface"),
  300.         pointer_default(unique)
  301.     ]
  302.     interface ITuningSpace : IDispatch
  303.     {
  304.         [propget, id(DISPID_TUNER_TS_UNIQUENAME),
  305.              helpstring("Unique name of the Tuning Space")]
  306.         HRESULT UniqueName(
  307.             [out, retval] BSTR *Name
  308.             );
  309.         [propput, id(DISPID_TUNER_TS_UNIQUENAME),
  310.              helpstring("Unique name of the Tuning Space")]
  311.         HRESULT UniqueName(
  312.             [in] BSTR Name
  313.             );
  314.         [propget, id(DISPID_TUNER_TS_FRIENDLYNAME),
  315.              helpstring("User-friendly name of the Tuning Space")]
  316.         HRESULT FriendlyName(
  317.             [out, retval] BSTR *Name
  318.             );
  319.         [propput, id(DISPID_TUNER_TS_FRIENDLYNAME),
  320.              helpstring("User-friendly name of the Tuning Space")]
  321.         HRESULT FriendlyName(
  322.             [in] BSTR Name
  323.             );
  324.         [propget, id(DISPID_TUNER_TS_CLSID), 
  325. helpstring("Returns the clsid of the tuning space implementation.  provides script access to IPersist:GetClassID")]
  326.         HRESULT CLSID(
  327.             [out, retval] BSTR* SpaceCLSID
  328.             );
  329.         [propget, id(DISPID_TUNER_TS_NETWORKTYPE),
  330.              helpstring("Network Type (Network Proivder CLSID)")]
  331.         HRESULT NetworkType(
  332.             [out, retval] BSTR *NetworkTypeGuid
  333.             );
  334.         [propput, id(DISPID_TUNER_TS_NETWORKTYPE),
  335.              helpstring("Network Type (Network Proivder CLSID)")]
  336.         HRESULT NetworkType(
  337.             [in] BSTR NetworkTypeGuid
  338.             );
  339.         [propget, id(DISPID_TUNER_TS__NETWORKTYPE),
  340.              helpstring("Network Type (Network Proivder CLSID)"), hidden, restricted]
  341.         HRESULT _NetworkType(
  342.             [out, retval] GUID* NetworkTypeGuid
  343.             );
  344.         [propput, id(DISPID_TUNER_TS__NETWORKTYPE),
  345.              helpstring("Network Type (Network Proivder CLSID)"), hidden, restricted]
  346.         HRESULT _NetworkType(
  347.             [in] REFCLSID NetworkTypeGuid
  348.             );
  349.         [id(DISPID_TUNER_TS_CREATETUNEREQUEST),
  350.             helpstring("Create a Tune Request object")]
  351.         HRESULT CreateTuneRequest(
  352.             [out, retval] ITuneRequest **TuneRequest
  353.             );
  354.         [id(DISPID_TUNER_TS_ENUMCATEGORYGUIDS), hidden, restricted]
  355.         HRESULT EnumCategoryGUIDs(
  356.             [out, retval] IEnumGUID **ppEnum
  357.             );
  358.         [id(DISPID_TUNER_TS_ENUMDEVICEMONIKERS), hidden, restricted]
  359.         HRESULT EnumDeviceMonikers(
  360.             [out, retval] IEnumMoniker **ppEnum
  361.             );
  362.         [propget, id(DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES)]
  363.         HRESULT DefaultPreferredComponentTypes(
  364.             [out, retval] IComponentTypes** ComponentTypes
  365.             );
  366.         [propput, id(DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES)]
  367.         HRESULT DefaultPreferredComponentTypes(
  368.             [in] IComponentTypes* NewComponentTypes
  369.             );
  370. // the following property is for the network providers to store frequency/channel maps, frequency/transponder maps
  371. // or whatever other mapping from carrier frequencies to frequency identifiers are appropriate for the tuning space
  372. // in question.  the bstr is treated as a binary blob.  it is expected to contain embedded nulls,  and it may be formatted
  373. // internally in whatever fashion the network provider sees fit.
  374.         [propget, id(DISPID_TUNER_TS_FREQMAP), hidden, restricted]
  375.         HRESULT FrequencyMapping([out, retval] BSTR *pMapping);
  376.         [propput, id(DISPID_TUNER_TS_FREQMAP), hidden, restricted]
  377.         HRESULT FrequencyMapping(BSTR Mapping);
  378. // the following property provides a starting point for the initial IScanningTuner after installation
  379.         [propget, id(DISPID_TUNER_TS_DEFLOCATOR)]
  380.         HRESULT DefaultLocator([out, retval] ILocator **LocatorVal);
  381.         [propput, id(DISPID_TUNER_TS_DEFLOCATOR)]
  382.         HRESULT DefaultLocator([in]ILocator *LocatorVal);
  383. HRESULT Clone([out, retval] ITuningSpace **NewTS);
  384.     }
  385. //////////////////////////////////////////////////////////////////////////////////////
  386.     [
  387.         hidden,
  388.         restricted,
  389.         object,
  390.         uuid(8B8EB248-FC2B-11d2-9D8C-00C04F72D980),
  391.         pointer_default(unique)
  392.     ]
  393.     interface IEnumTuningSpaces : IUnknown
  394.     {
  395.         HRESULT Next(
  396.             [in] ULONG celt,
  397.             [out, size_is(celt), length_is(*pceltFetched)]
  398.                 ITuningSpace** rgelt,
  399.             [out] ULONG* pceltFetched
  400.             );
  401.         HRESULT Skip(
  402.             [in] ULONG celt
  403.             );
  404.         HRESULT Reset(void);
  405.         HRESULT Clone(
  406.             [out] IEnumTuningSpaces** ppEnum
  407.             );
  408.     }
  409. //////////////////////////////////////////////////////////////////////////////////////
  410.     [
  411.         object,
  412.         hidden,
  413.         nonextensible,
  414.         uuid(ADA0B268-3B19-4e5b-ACC4-49F852BE13BA),
  415.         pointer_default(unique)
  416.     ]
  417.     interface IDVBTuningSpace : ITuningSpace
  418.     {
  419.         [propget, id(DISPID_TUNER_TS_DVB_SYSTEMTYPE),
  420.          helpstring("Type of DVB System")
  421.         ]
  422.         HRESULT SystemType(
  423.             [out, retval] DVBSystemType *SysType
  424.             );
  425.         [propput, id(DISPID_TUNER_TS_DVB_SYSTEMTYPE),
  426.          helpstring("Type of DVB System")
  427.         ]
  428.         HRESULT SystemType(
  429.             [in] DVBSystemType SysType
  430.             );
  431.     }
  432. //////////////////////////////////////////////////////////////////////////////////////
  433.     [
  434.         object,
  435.         hidden,
  436.         nonextensible,
  437.         uuid(2A6E293C-2595-11d3-B64C-00C04F79498E),
  438.         pointer_default(unique)
  439.     ]
  440.     interface IAnalogTVTuningSpace : ITuningSpace
  441.     {
  442.         [propget, id(DISPID_TUNER_TS_ATV_MINCHANNEL),
  443.          helpstring("Smallest channel number ever provided by this tuning space")
  444.         ]
  445.         HRESULT MinChannel(
  446.             [out, retval] long *MinChannelVal
  447.             );
  448.         [propput, id(DISPID_TUNER_TS_ATV_MINCHANNEL),
  449.          helpstring("Smallest channel number ever provided by this tuning space")
  450.         ]
  451.         HRESULT MinChannel(
  452.             [in] long NewMinChannelVal
  453.             );
  454.         [propget, id(DISPID_TUNER_TS_ATV_MAXCHANNEL),
  455.          helpstring("Largest channel number ever provided by this tuning space")
  456.         ]
  457.         HRESULT MaxChannel(
  458.             [out, retval] long *MaxChannelVal
  459.             );
  460.         [propput, id(DISPID_TUNER_TS_ATV_MAXCHANNEL),
  461.          helpstring("Largest channel number ever provided by this tuning space")
  462.         ]
  463.         HRESULT MaxChannel(
  464.             [in] long NewMaxChannelVal
  465.             );
  466.         [propget, id(DISPID_TUNER_TS_ATV_INPUTTYPE),
  467.          helpstring("Input type for this tuning space")
  468.         ]
  469.         HRESULT InputType([out, retval] TunerInputType *InputTypeVal);
  470.         [propput, id(DISPID_TUNER_TS_ATV_INPUTTYPE),
  471.          helpstring("Input type for this tuning space")
  472.         ]
  473.         HRESULT InputType([in] TunerInputType NewInputTypeVal);
  474.         [propget, id(DISPID_TUNER_TS_ATV_COUNTRYCODE),
  475.          helpstring("International dialing prefix for country of physical broadcast source")
  476.         ]
  477.         HRESULT CountryCode([out, retval] long *CountryCodeVal);
  478.         [propput, id(DISPID_TUNER_TS_ATV_COUNTRYCODE),
  479.          helpstring("International dialing prefix for country of physical broadcast source")
  480.         ]
  481.         HRESULT CountryCode([in] long NewCountryCodeVal);
  482.     }
  483. //////////////////////////////////////////////////////////////////////////////////////
  484.     [
  485.         object,
  486.         hidden,
  487.         nonextensible,
  488.         uuid(0369B4E2-45B6-11d3-B650-00C04F79498E),
  489.         pointer_default(unique)
  490.     ]
  491. // note: we inherit ATSC from analog because we need the same properties.
  492. // - the definition of channel is overloaded to be the major channel,
  493. // - input type allows us to distinguish between broadcast and cable frequencies
  494. // which allows us to use the atsc tuning space class for "open cable".
  495. // - country code will allow us to redefine physical channel frequencies
  496. // if any other countries adopt ATSC which may happen in Latin America in particular.
  497.     interface IATSCTuningSpace : IAnalogTVTuningSpace
  498.     {
  499.         [propget, id(DISPID_TUNER_TS_ATSC_MINMINORCHANNEL),
  500.          helpstring("Smallest minor channel number ever provided by this tuning space")
  501.         ]
  502.         HRESULT MinMinorChannel(
  503.             [out, retval] long *MinMinorChannelVal
  504.             );
  505.         [propput, id(DISPID_TUNER_TS_ATSC_MINMINORCHANNEL),
  506.          helpstring("Smallest minor channel number ever provided by this tuning space")
  507.         ]
  508.         HRESULT MinMinorChannel(
  509.             [in] long NewMinMinorChannelVal
  510.             );
  511.         [propget, id(DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL),
  512.          helpstring("Largest minor channel number ever provided by this tuning space")
  513.         ]
  514.         HRESULT MaxMinorChannel(
  515.             [out, retval] long *MaxMinorChannelVal
  516.             );
  517.         [propput, id(DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL),
  518.          helpstring("Largest minor channel number ever provided by this tuning space")
  519.         ]
  520.         HRESULT MaxMinorChannel(
  521.             [in] long NewMaxMinorChannelVal
  522.             );
  523.         [propget, id(DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL),
  524.          helpstring("Smallest physical channel number ever provided by this tuning space")
  525.         ]
  526.         HRESULT MinPhysicalChannel(
  527.             [out, retval] long *MinPhysicalChannelVal
  528.             );
  529.         [propput, id(DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL),
  530.          helpstring("Smallest physical channel number ever provided by this tuning space")
  531.         ]
  532.         HRESULT MinPhysicalChannel(
  533.             [in] long NewMinPhysicalChannelVal
  534.             );
  535.         [propget, id(DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL),
  536.          helpstring("Largest physical channel number ever provided by this tuning space")
  537.         ]
  538.         HRESULT MaxPhysicalChannel(
  539.             [out, retval] long *MaxPhysicalChannelVal
  540.             );
  541.         [propput, id(DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL),
  542.          helpstring("Largest physical channel number ever provided by this tuning space")
  543.         ]
  544.         HRESULT MaxPhysicalChannel(
  545.             [in] long NewMaxPhysicalChannelVal
  546.             );
  547.     }
  548. //////////////////////////////////////////////////////////////////////////////////////
  549.     [
  550.         object,
  551.         hidden,
  552.         nonextensible,
  553.         uuid(2A6E293B-2595-11d3-B64C-00C04F79498E),
  554.         pointer_default(unique)
  555.     ]
  556.     interface IAnalogRadioTuningSpace : ITuningSpace {
  557.         [propget, id(DISPID_TUNER_TS_AR_MINFREQUENCY),
  558.          helpstring("Smallest frequency(khz) ever used by this tuning space")
  559.         ]
  560.         HRESULT MinFrequency(
  561.             [out, retval] long *MinFrequencyVal
  562.             );
  563.         [propput, id(DISPID_TUNER_TS_AR_MINFREQUENCY),
  564.          helpstring("Smallest frequency(khz) ever used by this tuning space")
  565.         ]
  566.         HRESULT MinFrequency(
  567.             [in] long NewMinFrequencyVal
  568.             );
  569.         [propget, id(DISPID_TUNER_TS_AR_MAXFREQUENCY),
  570.          helpstring("Largest frequency(khz) ever used by this tuning space")
  571.         ]
  572.         HRESULT MaxFrequency(
  573.             [out, retval] long *MaxFrequencyVal
  574.             );
  575.         [propput, id(DISPID_TUNER_TS_AR_MAXFREQUENCY),
  576.          helpstring("Largest frequency(khz) ever used by this tuning space")
  577.         ]
  578.         HRESULT MaxFrequency(
  579.             [in] long NewMaxFrequencyVal
  580.             );
  581.         [propget, id(DISPID_TUNER_TS_AR_STEP),
  582.          helpstring("Default step value(khz) to next frequency for this tuning space")
  583.         ]
  584.         HRESULT Step(
  585.             [out, retval] long *StepVal
  586.             );
  587.         [propput, id(DISPID_TUNER_TS_AR_STEP),
  588.          helpstring("Default step value(khz) to next frequency for this tuning space")
  589.         ]
  590.         HRESULT Step(
  591.             [in] long NewStepVal
  592.             );      
  593.     }
  594. //////////////////////////////////////////////////////////////////////////////////////
  595. // Tune Request Interfaces
  596. //////////////////////////////////////////////////////////////////////////////////////
  597.     [
  598.         object,
  599.         nonextensible,
  600.         uuid(07DDC146-FC3D-11d2-9D8C-00C04F72D980),
  601.         dual,
  602.         oleautomation,
  603.         helpstring("Tune Request Interface"),
  604.         pointer_default(unique)
  605.     ]
  606.     interface ITuneRequest : IDispatch
  607.     {
  608.         [propget, id(DISPID_TUNER_TR_TUNINGSPACE),
  609.             helpstring("Tuning Space object")]
  610.         HRESULT TuningSpace(
  611.             [out, retval] ITuningSpace **TuningSpace
  612.             );
  613.         [propget, id(DISPID_TUNER_TR_COMPONENTS),
  614.             helpstring("Components collection")]
  615.         HRESULT Components(
  616.             [out, retval] IComponents **Components
  617.             );
  618.         [id(DISPID_TUNER_TR_CLONE),
  619.             helpstring("Create a new copy of this tune request")]
  620.         HRESULT Clone(
  621.             [out, retval] ITuneRequest **NewTuneRequest
  622.             );
  623.         [propget, id(DISPID_TUNER_TR_LOCATOR),
  624.             helpstring("Locator Object")]
  625.         HRESULT Locator(
  626.             [out, retval] ILocator **Locator
  627.             );
  628.         [propput, id(DISPID_TUNER_TR_LOCATOR),
  629.             helpstring("Locator Object")]
  630.         HRESULT Locator(
  631.             [in] ILocator *Locator
  632.             );
  633.     }
  634. //////////////////////////////////////////////////////////////////////////////////////
  635.     [
  636.         object,
  637.         nonextensible,
  638.         uuid(0369B4E0-45B6-11d3-B650-00C04F79498E),
  639.         dual,
  640.         oleautomation,
  641.         helpstring("Channel Tune Request Interface"),
  642.         pointer_default(unique)
  643.     ]
  644.     interface IChannelTuneRequest : ITuneRequest
  645.     {
  646.         [propget, id(DISPID_CHTUNER_CTR_CHANNEL),
  647.             helpstring("Channel")]
  648.         HRESULT Channel(
  649.             [out, retval] long *Channel
  650.             );
  651.         [propput, id(DISPID_CHTUNER_CTR_CHANNEL),
  652.             helpstring("Channel")]
  653.         HRESULT Channel(
  654.             [in] long Channel
  655.             );
  656.     }
  657. //////////////////////////////////////////////////////////////////////////////////////
  658.     [
  659.         object,
  660.         nonextensible,
  661.         uuid(0369B4E1-45B6-11d3-B650-00C04F79498E),
  662.         dual,
  663.         oleautomation,
  664.         helpstring("ATSC Channel Tune Request Interface"),
  665.         pointer_default(unique)
  666.     ]
  667.     interface IATSCChannelTuneRequest : IChannelTuneRequest
  668.     {
  669.         [propget, id(DISPID_CHTUNER_ACTR_MINOR_CHANNEL),
  670.             helpstring("Minor Channel")]
  671.         HRESULT MinorChannel(
  672.             [out, retval] long *MinorChannel
  673.             );
  674.         [propput, id(DISPID_CHTUNER_ACTR_MINOR_CHANNEL),
  675.             helpstring("Minor Channel")]
  676.         HRESULT MinorChannel(
  677.             [in] long MinorChannel
  678.             );
  679.     }
  680. //////////////////////////////////////////////////////////////////////////////////////
  681.     [
  682.         object,
  683.         nonextensible,
  684.         uuid(0D6F567E-A636-42bb-83BA-CE4C1704AFA2),
  685.         dual,
  686.         oleautomation,
  687.         helpstring("DVB Tune Request Interface"),
  688.         pointer_default(unique)
  689.     ]
  690.     interface IDVBTuneRequest : ITuneRequest
  691.     {
  692.         [propget, id(DISPID_DVBTUNER_ONID),
  693.             helpstring("Original Network ID")]
  694.         HRESULT ONID(
  695.             [out, retval] long *ONID
  696.             );
  697.         [propput, id(DISPID_DVBTUNER_ONID),
  698.             helpstring("Original Network ID")]
  699.         HRESULT ONID(
  700.             [in] long ONID
  701.             );
  702.         [propget, id(DISPID_DVBTUNER_TSID),
  703.             helpstring("Transport Stream ID")]
  704.         HRESULT TSID(
  705.             [out, retval] long *TSID
  706.             );
  707.         [propput, id(DISPID_DVBTUNER_TSID),
  708.             helpstring("Transport Stream ID")]
  709.         HRESULT TSID(
  710.             [in] long TSID
  711.             );
  712.         [propget, id(DISPID_DVBTUNER_SID),
  713.             helpstring("Service ID")]
  714.         HRESULT SID(
  715.             [out, retval] long *SID
  716.             );
  717.         [propput, id(DISPID_DVBTUNER_SID),
  718.             helpstring("Service ID")]
  719.         HRESULT SID(
  720.             [in] long SID
  721.             );
  722.     }
  723. //////////////////////////////////////////////////////////////////////////////////////
  724. // Tuner Interfaces
  725. //////////////////////////////////////////////////////////////////////////////////////
  726.     [
  727.         object,
  728.         hidden,
  729.         nonextensible,
  730.         uuid(28C52640-018A-11d3-9D8E-00C04F72D980),
  731.         helpstring("Tuner Interface"),
  732.         pointer_default(unique)
  733.     ]
  734.     interface ITuner : IUnknown
  735.     {
  736.         [propget, helpstring("Tuning Space object")]
  737.         HRESULT TuningSpace(
  738.             [out, retval] ITuningSpace **TuningSpace
  739.             );
  740.         [propput, helpstring("Tuning Space object")]
  741.         HRESULT TuningSpace(
  742.             [in] ITuningSpace *TuningSpace
  743.             );
  744.         [hidden, restricted, helpstring("Returns an enumerator for Tuning Spaces accepted by this tuner")]
  745.         HRESULT EnumTuningSpaces(
  746.             [out, retval] IEnumTuningSpaces **ppEnum
  747.             );
  748.         [propget, helpstring("Tune Request object")]
  749.         HRESULT TuneRequest(
  750.             [out, retval] ITuneRequest **TuneRequest
  751.             );
  752.         [propput, helpstring("Tune Request object")]
  753.         HRESULT TuneRequest(
  754.             [in] ITuneRequest *TuneRequest
  755.             );
  756.         [helpstring("Validate the tuning request without tuning")]
  757.         HRESULT Validate(
  758.             [in] ITuneRequest *TuneRequest
  759.             );
  760.         [propget, helpstring("Preferred Component Types collection")]
  761.         HRESULT PreferredComponentTypes(
  762.             [out, retval] IComponentTypes **ComponentTypes
  763.             );
  764.         [propput, helpstring("Preferred Component Types collection")]
  765.         HRESULT PreferredComponentTypes(
  766.             [in] IComponentTypes *ComponentTypes
  767.             );
  768.         [propget, helpstring("Signal Strength")]
  769.         HRESULT SignalStrength(
  770.             [out, retval] long *Strength
  771.             );
  772.         [helpstring("Trigger Signal events (interval in milliseconds; 0 turns off trigger)")]
  773.         HRESULT TriggerSignalEvents(
  774.             [in] long Interval
  775.             );
  776.     }
  777. //////////////////////////////////////////////////////////////////////////////////////
  778.     [
  779.         object,
  780.         hidden,
  781.         nonextensible,
  782.         uuid(1DFD0A5C-0284-11d3-9D8E-00C04F72D980),
  783.         helpstring("Scanning Tuner Interface"),
  784.         pointer_default(unique)
  785.     ]
  786.     interface IScanningTuner : ITuner
  787.     {
  788.         [helpstring("Seek to the next valid selection")]
  789.         HRESULT SeekUp(
  790.             );
  791.         [helpstring("Seek to the previous valid selection")]
  792.         HRESULT SeekDown(
  793.             );
  794.         [helpstring("Scan for valid selections upward")]
  795.         HRESULT ScanUp(
  796.             [in] long MillisecondsPause
  797.             );
  798.         [helpstring("Scan for valid selections downward")]
  799.         HRESULT ScanDown(
  800.             [in] long MillisecondsPause
  801.             );
  802.         [helpstring("Enter the device's autoprogram mode")]
  803.         HRESULT AutoProgram(
  804.             );
  805.     };
  806. //////////////////////////////////////////////////////////////////////////////////////
  807.     [
  808.         object,
  809.         hidden,
  810.         nonextensible,
  811.         uuid(68481420-0280-11d3-9D8E-00C04F72D980),
  812.         helpstring("Tuner Events Interface"),
  813.         pointer_default(unique)
  814.     ]
  815.     interface ITunerEvents : IUnknown
  816.     {
  817.         [helpstring("Reports a completed (or failed) tune operation")]
  818.         HRESULT OnTune(
  819.             [in] ITuneRequest **Request,
  820.             [in] long *Strength
  821.             );
  822.     }
  823. //////////////////////////////////////////////////////////////////////////////////////
  824.     [
  825.         object,
  826.         hidden,
  827.         nonextensible,
  828.         uuid(85E2439E-0E23-11d3-9D8E-00C04F72D980),
  829.         helpstring("Signal Events Interface"),
  830.         pointer_default(unique)
  831.     ]
  832.     interface ISignalEvents : IUnknown
  833.     {
  834.         [helpstring("Reports the signal strength")]
  835.         HRESULT OnSignal(
  836.             [out] long *Strength
  837.             );
  838.     }
  839. //////////////////////////////////////////////////////////////////////////////////////
  840. // Component Type Interfaces
  841. //////////////////////////////////////////////////////////////////////////////////////
  842.     // Component Category
  843.     [
  844.         object,
  845.         hidden,
  846.         nonextensible,
  847.         uuid(6A340DC0-0311-11d3-9D8E-00C04F72D980),
  848.         dual,
  849.         oleautomation,
  850.         helpstring("Component Type Interface"),
  851.         pointer_default(unique)
  852.     ]
  853.     interface IComponentType : IDispatch
  854.     {
  855.         [propget, id(DISPID_TUNER_CT_CATEGORY),
  856.             helpstring("General category of component")]
  857.         HRESULT Category(
  858.             [out, retval] ComponentCategory *Category
  859.             );
  860.         [propput, id(DISPID_TUNER_CT_CATEGORY),
  861.             helpstring("General category of component")]
  862.         HRESULT Category(
  863.             [in] ComponentCategory Category
  864.             );
  865.         [propget, id(DISPID_TUNER_CT_MEDIAMAJORTYPE),
  866.             helpstring("DirectShow MediaType Major Type Guid")]
  867.         HRESULT MediaMajorType(
  868.             [out, retval] BSTR *MediaMajorType
  869.             );    
  870.         [propput, id(DISPID_TUNER_CT_MEDIAMAJORTYPE),
  871.             helpstring("DirectShow MediaType Major Type Guid")]
  872.         HRESULT MediaMajorType(
  873.             [in] BSTR MediaMajorType
  874.             );
  875.         [propget, id(DISPID_TUNER_CT__MEDIAMAJORTYPE),
  876.             helpstring("DirectShow MediaType Major Type Guid"), hidden, restricted]
  877.         HRESULT _MediaMajorType(
  878.             [out, retval] GUID* MediaMajorTypeGuid
  879.             );
  880.         [propput, id(DISPID_TUNER_CT__MEDIAMAJORTYPE),
  881.             helpstring("DirectShow MediaType Major Type Guid"), hidden, restricted]
  882.         HRESULT _MediaMajorType(
  883.             [in] REFCLSID MediaMajorTypeGuid
  884.             );
  885.         [propget, id(DISPID_TUNER_CT_MEDIASUBTYPE),
  886.             helpstring("DirectShow MediaType Sub Type Guid")]
  887.         HRESULT MediaSubType(
  888.             [out, retval] BSTR *MediaSubType
  889.             );
  890.         [propput, id(DISPID_TUNER_CT_MEDIASUBTYPE),
  891.             helpstring("DirectShow MediaType Sub Type Guid")]
  892.         HRESULT MediaSubType(
  893.             [in] BSTR MediaSubType
  894.             );
  895.         [propget, id(DISPID_TUNER_CT__MEDIASUBTYPE),
  896.             helpstring("DirectShow MediaType Sub Type Guid"), hidden, restricted]
  897.         HRESULT _MediaSubType(
  898.             [out, retval] GUID* MediaSubTypeGuid
  899.             );
  900.         [propput, id(DISPID_TUNER_CT__MEDIASUBTYPE),
  901.             helpstring("DirectShow MediaType Sub Type Guid"), hidden, restricted]
  902.         HRESULT _MediaSubType(
  903.             [in] REFCLSID MediaSubTypeGuid
  904.             );
  905.         [propget, id(DISPID_TUNER_CT_MEDIAFORMATTYPE),
  906.             helpstring("DirectShow MediaType Format Guid")]
  907.         HRESULT MediaFormatType(
  908.             [out, retval] BSTR *MediaFormatType
  909.             );
  910.         [propput, id(DISPID_TUNER_CT_MEDIAFORMATTYPE),
  911.             helpstring("DirectShow MediaType Format Guid")]
  912.         HRESULT MediaFormatType(
  913.             [in] BSTR MediaFormatType
  914.             );
  915.         [propget, id(DISPID_TUNER_CT__MEDIAFORMATTYPE),
  916.             helpstring("DirectShow MediaType Format Guid"), hidden, restricted]
  917.         HRESULT _MediaFormatType(
  918.             [out, retval] GUID* MediaFormatTypeGuid
  919.             );
  920.         [propput, id(DISPID_TUNER_CT__MEDIAFORMATTYPE),
  921.             helpstring("DirectShow MediaType Format Guid"), hidden, restricted]
  922.         HRESULT _MediaFormatType(
  923.             [in] REFCLSID MediaFormatTypeGuid
  924.             );
  925.         [propget, id(DISPID_TUNER_CT_MEDIATYPE), hidden, restricted,
  926.             helpstring("DirectShow MediaType Guid, this only retrieves major, sub, format guids not the entire struct")]
  927.         HRESULT MediaType(
  928.             [out, retval] AM_MEDIA_TYPE *MediaType
  929.             );
  930.         [propput, id(DISPID_TUNER_CT_MEDIATYPE), hidden, restricted,
  931.             helpstring("DirectShow MediaType Guid, this only retrieves major, sub, format guids not the entire struct")]
  932.         HRESULT MediaType(
  933.             [in] AM_MEDIA_TYPE *MediaType
  934.             );
  935.         [id(DISPID_TUNER_CT_CLONE),
  936.             helpstring("Create a copy of this component type")]
  937.         HRESULT Clone(
  938.             [out, retval] IComponentType **NewCT
  939.             );
  940.     };
  941. //////////////////////////////////////////////////////////////////////////////////////
  942.     [
  943.         object,
  944.         hidden,
  945.         nonextensible,
  946.         uuid(B874C8BA-0FA2-11d3-9D8E-00C04F72D980),
  947.         dual,
  948.         oleautomation,
  949.         helpstring("Language Component Type Interface"),
  950.         pointer_default(unique)
  951.     ]
  952.     interface ILanguageComponentType : IComponentType
  953.     {
  954.         [propget, id(DISPID_TUNER_LCT_LANGID),
  955.             helpstring("Language Identifier for Substream Content Language")]
  956.         HRESULT LangID(
  957.             [out, retval] long *LangID
  958.             );
  959.         [propput, id(DISPID_TUNER_LCT_LANGID),
  960.             helpstring("Language Identifier for Substream Content Language")]
  961.         HRESULT LangID(
  962.             [in] long LangID
  963.             );
  964.     };
  965. //////////////////////////////////////////////////////////////////////////////////////
  966.     [
  967.         object,
  968. hidden,
  969.         nonextensible,
  970.         uuid(2C073D84-B51C-48c9-AA9F-68971E1F6E38),
  971.         dual,
  972.         oleautomation,
  973.         helpstring("MPEG2 Component Type Interface"),
  974.         pointer_default(unique)
  975.     ]
  976.     interface IMPEG2ComponentType : ILanguageComponentType
  977.     {
  978.         [propget, id(DISPID_TUNER_MP2CT_TYPE),
  979.             helpstring("MPEG2 Stream Type")]
  980.         HRESULT StreamType(
  981.             [out, retval] MPEG2StreamType *MP2StreamType
  982.             );
  983.         [propput, id(DISPID_TUNER_MP2CT_TYPE),
  984.             helpstring("MPEG2 Stream Type")]
  985.         HRESULT StreamType(
  986.             [in] MPEG2StreamType MP2StreamType
  987.             );
  988.     };
  989. //////////////////////////////////////////////////////////////////////////////////////
  990.     [
  991.         object,
  992.         hidden,
  993.         nonextensible,
  994.         uuid(FC189E4D-7BD4-4125-B3B3-3A76A332CC96),
  995.         dual,
  996.         oleautomation,
  997.         helpstring("ATSC Component Type Interface"),
  998.         pointer_default(unique)
  999.     ]
  1000.     interface IATSCComponentType : IMPEG2ComponentType
  1001.     {
  1002.         [propget, id(DISPID_TUNER_ATSCCT_FLAGS),
  1003.             helpstring("ATSC Component Type Flags")]
  1004.         HRESULT Flags(
  1005.             [out, retval] long *Flags
  1006.             );
  1007.         [propput, id(DISPID_TUNER_ATSCCT_FLAGS),
  1008.             helpstring("ATSC Component Type Flags")]
  1009.         HRESULT Flags(
  1010.             [in] long flags
  1011.             );
  1012.     };
  1013. //////////////////////////////////////////////////////////////////////////////////////
  1014.     [
  1015.         hidden, restricted,
  1016.         object,
  1017.         uuid(8A674B4A-1F63-11d3-B64C-00C04F79498E),
  1018.         pointer_default(unique)
  1019.     ]
  1020.     interface IEnumComponentTypes : IUnknown
  1021.     {
  1022.         HRESULT Next(
  1023.             [in] ULONG celt,
  1024.             [out, size_is(celt), length_is(*pceltFetched)]
  1025.                 IComponentType** rgelt,
  1026.             [out] ULONG* pceltFetched
  1027.             );
  1028.         HRESULT Skip(
  1029.             [in] ULONG celt
  1030.             );
  1031.         HRESULT Reset(void);
  1032.         HRESULT Clone(
  1033.             [out] IEnumComponentTypes** ppEnum
  1034.             );
  1035.     }
  1036. //////////////////////////////////////////////////////////////////////////////////////
  1037. // Component Type Container
  1038. //////////////////////////////////////////////////////////////////////////////////////
  1039.     [
  1040.         object,
  1041.         hidden,
  1042.         nonextensible,
  1043.         uuid(0DC13D4A-0313-11d3-9D8E-00C04F72D980),
  1044.         dual,
  1045.         oleautomation,
  1046.         helpstring("ComponentType Collection Interface"),
  1047.         pointer_default(unique)
  1048.     ]
  1049.     interface IComponentTypes : IDispatch
  1050.     {
  1051.         [propget, helpstring("Number of items in the collection")]
  1052.         HRESULT Count(
  1053.             [out, retval] long *Count
  1054.             );
  1055.         [propget, id(DISPID_NEWENUM), hidden, restricted]
  1056.         HRESULT _NewEnum(
  1057.             [out, retval] IEnumVARIANT **ppNewEnum
  1058.             );
  1059.         [hidden, restricted, helpstring("Convenience Function for Use with C")]
  1060.         HRESULT EnumComponentTypes(
  1061.             [out, retval] IEnumComponentTypes **ppNewEnum
  1062.             );
  1063.         [id(DISPID_VALUE),
  1064.             propget,
  1065.             helpstring("Get the ComponentType at the specified index")]
  1066.         HRESULT Item(
  1067.             [in] VARIANT Index,
  1068.             [out, retval] IComponentType **ComponentType
  1069.             );
  1070.         [id(DISPID_VALUE),
  1071.             propput,
  1072.             helpstring("Get the ComponentType at the specified index")]
  1073.         HRESULT Item(
  1074.             [in] VARIANT Index,
  1075.             [in] IComponentType *ComponentType
  1076.             );
  1077.         [id(DISPID_ADDITEM), 
  1078.  helpstring("Append the ComponentType to the collection")]
  1079.         HRESULT Add(
  1080.             [in] IComponentType *ComponentType,
  1081.             [out, retval] VARIANT *NewIndex
  1082.             );
  1083.         [id(DISPID_REMOVEITEM), 
  1084.  helpstring("Clear the collection")]
  1085.         HRESULT Remove(
  1086.             [in] VARIANT Index
  1087.             );
  1088.         [helpstring("Copy the collection")]
  1089.         HRESULT Clone([out, retval] IComponentTypes **NewList);
  1090.     };
  1091. //////////////////////////////////////////////////////////////////////////////////////
  1092. // Component Interfaces
  1093. //////////////////////////////////////////////////////////////////////////////////////
  1094.     [
  1095.         object,
  1096.         nonextensible,
  1097.         uuid(1A5576FC-0E19-11d3-9D8E-00C04F72D980),
  1098.         dual,
  1099.         oleautomation,
  1100.         helpstring("Component Interface"),
  1101.         pointer_default(unique)
  1102.     ]
  1103.     interface IComponent : IDispatch
  1104.     {
  1105.         [propget, id(DISPID_TUNER_C_TYPE),
  1106.             helpstring("Component Type")]
  1107.         HRESULT Type(
  1108.             [out, retval] IComponentType** CT
  1109.             );
  1110.     
  1111.         // only loaders initialize components
  1112.         [hidden, restricted, propput, id(DISPID_TUNER_C_TYPE),
  1113.             helpstring("Component Type")]
  1114.         HRESULT Type(
  1115.             [in] IComponentType* CT
  1116.             );
  1117.         // NOTE: this langid is *not* the same as the langid
  1118.         // in the componenttype(if the componenttype is a languagecomponenttype)
  1119.         // the langid in the component type is the language of the content this
  1120.         // component is describing.  the following langid in the component is the
  1121.         // language of the descriptive info in the component object.
  1122.         [propget, id(DISPID_TUNER_C_LANGID),
  1123.             helpstring("Language Identifier for Description Language")]
  1124.         HRESULT DescLangID(
  1125.             [out, retval] long *LangID
  1126.             );
  1127.         [propput, id(DISPID_TUNER_C_LANGID),
  1128.             helpstring("Language Identifier for Description Language")]
  1129.         HRESULT DescLangID(
  1130.             [in] long LangID
  1131.             );
  1132.         [propget, id(DISPID_TUNER_C_STATUS),
  1133.             helpstring("Component Status")]
  1134.         HRESULT Status(
  1135.             [out, retval] ComponentStatus *Status
  1136.             );
  1137.         [propput, id(DISPID_TUNER_C_STATUS),
  1138.             helpstring("Component Status")]
  1139.         HRESULT Status(
  1140.             [in] ComponentStatus Status
  1141.             );
  1142.         [propget, id(DISPID_TUNER_C_DESCRIPTION),
  1143.             helpstring("Component Description")]
  1144.         HRESULT Description(
  1145.             [out, retval] BSTR *Description
  1146.             );
  1147.         // restricted: only loaders will initialize components
  1148.         [hidden, restricted, propput, id(DISPID_TUNER_C_DESCRIPTION),
  1149.             helpstring("Component Description")]
  1150.         HRESULT Description(
  1151.             [in] BSTR Description
  1152.             );
  1153.         [id(DISPID_TUNER_C_CLONE),
  1154.             helpstring("Copy Component")]
  1155.         HRESULT Clone(
  1156.             [out, retval] IComponent **NewComponent
  1157.             );
  1158.     };
  1159. //////////////////////////////////////////////////////////////////////////////////////
  1160.     [
  1161.         object,
  1162.         nonextensible,
  1163.         uuid(1493E353-1EB6-473c-802D-8E6B8EC9D2A9),
  1164.         dual,
  1165.         oleautomation,
  1166.         helpstring("MPEG2 Component Interface"),
  1167.         pointer_default(unique)
  1168.     ]
  1169.     interface IMPEG2Component : IComponent
  1170.     {
  1171.         [propget, id(DISPID_TUNER_C_MP2_PID),
  1172.             helpstring("MPEG2 Packet ID for this Substream")]
  1173.         HRESULT PID(
  1174.             [out, retval] long *PID
  1175.             );
  1176.         [propput, id(DISPID_TUNER_C_MP2_PID),
  1177.             helpstring("MPEG2 Packet ID for this Substream")]
  1178.         HRESULT PID(
  1179.             [in] long PID
  1180.             );
  1181.         [propget, id(DISPID_TUNER_C_MP2_PCRPID),
  1182.             helpstring("MPEG2 Packet ID for this Substream's Timestamps")]
  1183.         HRESULT PCRPID(
  1184.             [out, retval] long *PCRPID
  1185.             );
  1186.         [propput, id(DISPID_TUNER_C_MP2_PCRPID),
  1187.             helpstring("MPEG2 Packet ID for this Substream's Timestamps")]
  1188.         HRESULT PCRPID(
  1189.             [in] long PCRPID
  1190.             );
  1191.         // program number provides reverse lookup to PAT
  1192.         [propget, id(DISPID_TUNER_C_MP2_PROGNO),
  1193.             helpstring("MPEG2 Program Number")]
  1194.         HRESULT ProgramNumber(
  1195.             [out, retval] long *ProgramNumber
  1196.             );
  1197.         [propput, id(DISPID_TUNER_C_MP2_PROGNO),
  1198.             helpstring("MPEG2 Program Number")]
  1199.         HRESULT ProgramNumber(
  1200.             [in] long ProgramNumber
  1201.             );
  1202.     };
  1203. //////////////////////////////////////////////////////////////////////////////////////
  1204.     [
  1205.         hidden, restricted,
  1206.         object,
  1207.         uuid(2A6E2939-2595-11d3-B64C-00C04F79498E),
  1208.         pointer_default(unique)
  1209.     ]
  1210.     interface IEnumComponents : IUnknown
  1211.     {
  1212.         HRESULT Next(
  1213.             [in] ULONG celt,
  1214.             [out, size_is(celt), length_is(*pceltFetched)]
  1215.                 IComponent** rgelt,
  1216.             [out] ULONG* pceltFetched
  1217.             );
  1218.         HRESULT Skip(
  1219.             [in] ULONG celt
  1220.             );
  1221.         HRESULT Reset(void);
  1222.         HRESULT Clone(
  1223.             [out] IEnumComponents** ppEnum
  1224.             );
  1225.     }
  1226. //////////////////////////////////////////////////////////////////////////////////////
  1227. // Component Container
  1228. //////////////////////////////////////////////////////////////////////////////////////
  1229.     [
  1230.         object,
  1231.         nonextensible,
  1232.         uuid(FCD01846-0E19-11d3-9D8E-00C04F72D980),
  1233.         dual,
  1234.         oleautomation,
  1235.         helpstring("Component Collection Interface"),
  1236.         pointer_default(unique)
  1237.     ]
  1238.     interface IComponents : IDispatch
  1239.     {
  1240.         [propget, helpstring("Number of items in the collection")]
  1241.         HRESULT Count(
  1242.             [out, retval] long *Count
  1243.             );
  1244.         [propget, id(DISPID_NEWENUM), hidden, restricted]
  1245.         HRESULT _NewEnum(
  1246.             [out, retval] IEnumVARIANT **ppNewEnum
  1247.             );
  1248.         [hidden, restricted, helpstring("Convenience Function for Use with C")]
  1249.         HRESULT EnumComponents(
  1250.             [out, retval] IEnumComponents **ppNewEnum
  1251.             );
  1252.         [id(DISPID_VALUE),
  1253.             propget,
  1254.             helpstring("Get the Component at the specified index")]
  1255.         HRESULT Item(
  1256.             [in] VARIANT Index,
  1257.             [out, retval] IComponent **ppComponent
  1258.             );
  1259.         [id(DISPID_ADDITEM), 
  1260.  helpstring("Add the Component to the collection")]
  1261.         HRESULT Add(
  1262.             [in] IComponent *Component,
  1263.             [out, retval] VARIANT *NewIndex
  1264.             );
  1265.         [id(DISPID_REMOVEITEM), 
  1266.  helpstring("Remove the Component at the specified index")]
  1267.         HRESULT Remove(
  1268.             [in] VARIANT Index
  1269.             );
  1270.         [helpstring("Copy the collection")]
  1271.         HRESULT Clone([out, retval] IComponents **NewList);
  1272.     };
  1273. //////////////////////////////////////////////////////////////////////////////////////
  1274. // Component Container
  1275. //////////////////////////////////////////////////////////////////////////////////////
  1276. // this separates the what(general tune request properties) from the where
  1277.     
  1278.     [
  1279.         object,
  1280.         nonextensible,
  1281.         uuid(286D7F89-760C-4F89-80C4-66841D2507AA),
  1282.         dual,
  1283.         oleautomation,
  1284.         helpstring("Generic Locator Information"),
  1285.         pointer_default(unique)
  1286.     ]
  1287.     interface ILocator : IDispatch
  1288.     {
  1289.         [propget, id(DISPID_TUNER_L_CARRFREQ), helpstring("Carrier Frequency(DecaHertz)")]
  1290.         HRESULT CarrierFrequency(
  1291.             [out, retval] long* Frequency
  1292.             );
  1293.         [propput, id(DISPID_TUNER_L_CARRFREQ), helpstring("Carrier Frequency(DecaHertz)")]
  1294.         HRESULT CarrierFrequency(
  1295.             [in] long Frequency
  1296.             );
  1297.         [propget, id(DISPID_TUNER_L_INNERFECMETHOD), helpstring("Inner Fec Type")]
  1298.         HRESULT InnerFEC(
  1299.             [out, retval] FECMethod* FEC
  1300.             );
  1301.         [propput, id(DISPID_TUNER_L_INNERFECMETHOD), helpstring("Inner Fec Type")]
  1302.         HRESULT InnerFEC(
  1303.             [in] FECMethod FEC
  1304.             );
  1305.         [propget, id(DISPID_TUNER_L_INNERFECRATE), helpstring("Inner Fec Rate")]
  1306.         HRESULT InnerFECRate(
  1307.             [out, retval] BinaryConvolutionCodeRate* FEC
  1308.             );
  1309.         [propput, id(DISPID_TUNER_L_INNERFECRATE), helpstring("Inner Fec Rate")]
  1310.         HRESULT InnerFECRate(
  1311.             [in] BinaryConvolutionCodeRate FEC
  1312.             );
  1313.         [propget, id(DISPID_TUNER_L_OUTERFECMETHOD), helpstring("Outer Fec Type")]
  1314.         HRESULT OuterFEC(
  1315.             [out, retval] FECMethod* FEC
  1316.             );
  1317.         [propput, id(DISPID_TUNER_L_OUTERFECMETHOD), helpstring("Outer Fec Type")]
  1318.         HRESULT OuterFEC(
  1319.             [in] FECMethod FEC
  1320.             );
  1321.         [propget, id(DISPID_TUNER_L_OUTERFECRATE), helpstring("Outer Fec Rate")]
  1322.         HRESULT OuterFECRate(
  1323.             [out, retval] BinaryConvolutionCodeRate* FEC
  1324.             );
  1325.         [propput, id(DISPID_TUNER_L_OUTERFECRATE), helpstring("Outer Fec Rate")]
  1326.         HRESULT OuterFECRate(
  1327.             [in] BinaryConvolutionCodeRate FEC
  1328.             );
  1329.         [propget, id(DISPID_TUNER_L_MOD), helpstring("Modulation Type")]
  1330.         HRESULT Modulation(
  1331.             [out, retval] ModulationType* Modulation
  1332.             );
  1333.         [propput, id(DISPID_TUNER_L_MOD), helpstring("Modulation Type")]
  1334.         HRESULT Modulation(
  1335.             [in] ModulationType Modulation
  1336.             );
  1337.         [propget, id(DISPID_TUNER_L_SYMRATE), helpstring("Modulation Symbol Rate")]
  1338.         HRESULT SymbolRate(
  1339.             [out, retval] long* Rate
  1340.             );
  1341.         [propput, id(DISPID_TUNER_L_SYMRATE), helpstring("Modulation Symbol Rate")]
  1342.         HRESULT SymbolRate(
  1343.             [in] long Rate
  1344.             );
  1345.         [id(DISPID_TUNER_L_CLONE), helpstring("Copy the Locator")]
  1346.         HRESULT Clone([out, retval] ILocator **NewLocator);
  1347.     };
  1348. //////////////////////////////////////////////////////////////////////////////////////
  1349.     [
  1350.         object,
  1351.         hidden,
  1352.         nonextensible,
  1353.         uuid(BF8D986F-8C2B-4131-94D7-4D3D9FCC21EF),
  1354.         dual,
  1355.         oleautomation,
  1356.         helpstring("ATSC Locator Information"),
  1357.         pointer_default(unique)
  1358.     ]
  1359.     interface IATSCLocator : ILocator
  1360.     {
  1361.         [propget, id(DISPID_TUNER_L_ATSC_PHYS_CHANNEL),
  1362.             helpstring("Physical Channel")]
  1363.         HRESULT PhysicalChannel(
  1364.             [out, retval] long *PhysicalChannel
  1365.             );
  1366.         [propput, id(DISPID_TUNER_L_ATSC_PHYS_CHANNEL),
  1367.             helpstring("Physical Channel")]
  1368.         HRESULT PhysicalChannel(
  1369.             [in] long PhysicalChannel
  1370.             );
  1371.         [propget, id(DISPID_TUNER_L_ATSC_TSID),
  1372.             helpstring("Transport Stream ID")]
  1373.         HRESULT TSID(
  1374.             [out, retval] long *TSID
  1375.             );
  1376.         [propput, id(DISPID_TUNER_L_ATSC_TSID),
  1377.             helpstring("Transport Stream ID")]
  1378.         HRESULT TSID(
  1379.             [in] long TSID
  1380.             );
  1381.     };
  1382. //////////////////////////////////////////////////////////////////////////////////////
  1383.     [
  1384.         object,
  1385.         hidden,
  1386.         nonextensible,
  1387.         uuid(8664DA16-DDA2-42ac-926A-C18F9127C302),
  1388.         dual,
  1389.         oleautomation,
  1390.         helpstring("DVB Terrestrial Locator Information"),
  1391.         pointer_default(unique)
  1392.     ]
  1393.     interface IDVBTLocator : ILocator
  1394.     {
  1395.         [propget, id(DISPID_TUNER_L_DVBT_BANDWIDTH), helpstring("Bandwidth")]
  1396.         HRESULT Bandwidth(
  1397.             [out, retval] long* BandWidthVal
  1398.             );
  1399.         [propput, id(DISPID_TUNER_L_DVBT_BANDWIDTH), helpstring("Bandwidth")]
  1400.         HRESULT Bandwidth(
  1401.             [in] long BandwidthVal
  1402.             );
  1403.         [propget, id(DISPID_TUNER_L_DVBT_LPINNERFECMETHOD), helpstring("Inner Fec Type for Low Priority Stream")]
  1404.         HRESULT LPInnerFEC(
  1405.             [out, retval] FECMethod* FEC
  1406.             );
  1407.         [propput, id(DISPID_TUNER_L_DVBT_LPINNERFECMETHOD), helpstring("Inner Fec Type for Low Priority Stream")]
  1408.         HRESULT LPInnerFEC(
  1409.             [in] FECMethod FEC
  1410.             );
  1411.         [propget, id(DISPID_TUNER_L_DVBT_LPINNERFECRATE), helpstring("Inner Fec Rate for Low Priority Stream")]
  1412.         HRESULT LPInnerFECRate(
  1413.             [out, retval] BinaryConvolutionCodeRate* FEC
  1414.             );
  1415.         [propput, id(DISPID_TUNER_L_DVBT_LPINNERFECRATE), helpstring("Inner Fec Rate for Low Priority Stream")]
  1416.         HRESULT LPInnerFECRate(
  1417.             [in] BinaryConvolutionCodeRate FEC
  1418.             );
  1419.         [propget, id(DISPID_TUNER_L_DVBT_HALPHA), helpstring("Hierarchical Alpha")]
  1420.         HRESULT HAlpha(
  1421.             [out, retval] HierarchyAlpha* Alpha
  1422.             );
  1423.         [propput, id(DISPID_TUNER_L_DVBT_HALPHA), helpstring("Hierarchical Alpha")]
  1424.         HRESULT HAlpha(
  1425.             [in] HierarchyAlpha Alpha
  1426.             );
  1427.         [propget, id(DISPID_TUNER_L_DVBT_GUARDINTERVAL), helpstring("Guard Interval")]
  1428.         HRESULT Guard(
  1429.             [out, retval] GuardInterval* GI
  1430.             );
  1431.         [propput, id(DISPID_TUNER_L_DVBT_GUARDINTERVAL), helpstring("Guard Interval")]
  1432.         HRESULT Guard(
  1433.             [in] GuardInterval GI
  1434.             );
  1435.         [propget, id(DISPID_TUNER_L_DVBT_TRANSMISSIONMODE), helpstring("Transmission Mode")]
  1436.         HRESULT Mode(
  1437.             [out, retval] TransmissionMode* mode
  1438.             );
  1439.         [propput, id(DISPID_TUNER_L_DVBT_TRANSMISSIONMODE), helpstring("Transmission Mode")]
  1440.         HRESULT Mode(
  1441.             [in] TransmissionMode mode
  1442.             );
  1443.         [propget, id(DISPID_TUNER_L_DVBT_INUSE), helpstring("Hierarchical Alpha")]
  1444.         HRESULT OtherFrequencyInUse(
  1445.             [out, retval] VARIANT_BOOL* OtherFrequencyInUseVal
  1446.             );
  1447.         [propput, id(DISPID_TUNER_L_DVBT_INUSE), helpstring("Hierarchical Alpha")]
  1448.         HRESULT OtherFrequencyInUse(
  1449.             [in] VARIANT_BOOL OtherFrequencyInUseVal
  1450.             );
  1451.     };
  1452. //////////////////////////////////////////////////////////////////////////////////////
  1453.     [
  1454.         object,
  1455.         hidden,
  1456.         nonextensible,
  1457.         uuid(3D7C353C-0D04-45f1-A742-F97CC1188DC8),
  1458.         dual,
  1459.         oleautomation,
  1460.         helpstring("DVB Satellite Locator Information"),
  1461.         pointer_default(unique)
  1462.     ]
  1463.     interface IDVBSLocator : ILocator
  1464.     {
  1465.         [propget, id(DISPID_TUNER_L_DVBS_POLARISATION), helpstring("Signal Polarisation Type")]
  1466.         HRESULT SignalPolarisation(
  1467.             [out, retval] Polarisation* PolarisationVal
  1468.             );
  1469.         [propput, id(DISPID_TUNER_L_DVBS_POLARISATION), helpstring("Signal Polarisation Type")]
  1470.         HRESULT SignalPolarisation(
  1471.             [in] Polarisation PolarisationVal
  1472.             );
  1473.         [propget, id(DISPID_TUNER_L_DVBS_WEST), helpstring("VARIANT_TRUE means orbital position specifies west longitude")]
  1474.         HRESULT WestPosition(
  1475.             [out, retval] VARIANT_BOOL* WestLongitude
  1476.             );
  1477.         [propput, id(DISPID_TUNER_L_DVBS_WEST), helpstring("VARIANT_TRUE means orbital position specifies west longitude")]
  1478.         HRESULT WestPosition(
  1479.             [in] VARIANT_BOOL WestLongitude
  1480.             );
  1481.         [propget, id(DISPID_TUNER_L_DVBS_ORBITAL), helpstring("Longitude in tenths of a degree")]
  1482.         HRESULT OrbitalPosition(
  1483.             [out, retval] long* longitude
  1484.             );
  1485.         [propput, id(DISPID_TUNER_L_DVBS_ORBITAL), helpstring("Longitude in tenths of a degree")]
  1486.         HRESULT OrbitalPosition(
  1487.             [in] long longitude
  1488.             );
  1489.         [propget, id(DISPID_TUNER_L_DVBS_AZIMUTH), helpstring("Azimuth in tenths of a degree")]
  1490.         HRESULT Azimuth(
  1491.             [out, retval] long* Azimuth
  1492.             );
  1493.         [propput, id(DISPID_TUNER_L_DVBS_AZIMUTH), helpstring("Azimuth in tenths of a degree")]
  1494.         HRESULT Azimuth(
  1495.             [in] long Azimuth
  1496.             );
  1497.         [propget, id(DISPID_TUNER_L_DVBS_ELEVATION), helpstring("Elevation in tenths of a degree")]
  1498.         HRESULT Elevation(
  1499.             [out, retval] long* Elevation
  1500.             );
  1501.         [propput, id(DISPID_TUNER_L_DVBS_ELEVATION), helpstring("Elevation in tenths of a degree")]
  1502.         HRESULT Elevation(
  1503.             [in] long Elevation
  1504.             );
  1505.     };
  1506. //////////////////////////////////////////////////////////////////////////////////////
  1507.     [
  1508.         object,
  1509.         hidden,
  1510.         nonextensible,
  1511.         uuid(6E42F36E-1DD2-43c4-9F78-69D25AE39034),
  1512.         dual,
  1513.         oleautomation,
  1514.         helpstring("DVB Cable Locator Information"),
  1515.         pointer_default(unique)
  1516.     ]
  1517.     interface IDVBCLocator : ILocator
  1518.     {
  1519.     };
  1520. //////////////////////////////////////////////////////////////////////////////////////
  1521. //////////////////////////////////////////////////////////////////////////////////////
  1522. // TYPELIB & CoClasses
  1523. //////////////////////////////////////////////////////////////////////////////////////
  1524. //////////////////////////////////////////////////////////////////////////////////////
  1525. [
  1526.     uuid(9B085638-018E-11d3-9D8E-00C04F72D980),
  1527.     version(1.0),
  1528.     helpstring("Microsoft Tuner 1.0 Type Library")
  1529. ]
  1530. library TunerLib
  1531. {
  1532.     importlib("stdole2.tlb");
  1533.     // SystemTuningSpaces class
  1534.     [
  1535.         uuid(D02AAC50-027E-11d3-9D8E-00C04F72D980),
  1536.         helpstring("SystemTuningSpace Class")
  1537.     ]
  1538.     coclass SystemTuningSpaces
  1539.     {
  1540.         [default] interface ITuningSpaceContainer;
  1541.     };
  1542. // NOTE: there is no object factory for this class.  the implementation for the underlying
  1543. // code is a c++ abstract base class.  this coclass is only provided here to
  1544. // force vb to expose the base interface to enable polymorphic access to 
  1545. // derived objects
  1546.     [
  1547. hidden, restricted,
  1548.         uuid(5FFDC5E6-B83A-4b55-B6E8-C69E765FE9DB),
  1549.         helpstring("dummy class to expose base tuning space i/f to VB")
  1550.     ]
  1551.     coclass TuningSpace
  1552.     {
  1553.         [default] interface ITuningSpace;
  1554.     };
  1555.     [
  1556.         uuid(A2E30750-6C3D-11d3-B653-00C04F79498E),
  1557.         helpstring("ATSC Digital Broadcast Tuning Space Class")
  1558.     ]
  1559.     coclass ATSCTuningSpace
  1560.     {
  1561.         [default] interface IATSCTuningSpace;
  1562.     };
  1563.     [
  1564.         uuid(8A674B4C-1F63-11d3-B64C-00C04F79498E),
  1565.         helpstring("Analog Radio Tuning Space Class")
  1566.     ]
  1567.     coclass AnalogRadioTuningSpace
  1568.     {
  1569.         [default] interface IAnalogRadioTuningSpace;
  1570.     };
  1571.     [
  1572.         uuid(8A674B4D-1F63-11d3-B64C-00C04F79498E),
  1573.         helpstring("Analog TV Tuning Space Class")
  1574.     ]
  1575.     coclass AnalogTVTuningSpace
  1576.     {
  1577.         [default] interface IAnalogTVTuningSpace;
  1578.     };
  1579.     [
  1580.         uuid(C6B14B32-76AA-4a86-A7AC-5C79AAF58DA7),
  1581.         helpstring("DVB Tuning Space Class")
  1582.     ]
  1583.     coclass DVBTuningSpace
  1584.     {
  1585.         [default] interface IDVBTuningSpace;
  1586.     };
  1587.     // ComponentTypes container class
  1588.     [
  1589.         uuid(A1A2B1C4-0E3A-11d3-9D8E-00C04F72D980),
  1590.         helpstring("Component Types Collection Class")
  1591.     ]
  1592.     coclass ComponentTypes
  1593.     {
  1594.         [default] interface IComponentTypes;
  1595.     };
  1596.     // ComponentType class
  1597.     [
  1598.         uuid(823535A0-0318-11d3-9D8E-00C04F72D980),
  1599.         helpstring("ComponentType Class")
  1600.     ]
  1601.     coclass ComponentType
  1602.     {
  1603.         [default] interface IComponentType;
  1604.     };
  1605.     // Language ComponentType class
  1606.     [
  1607.         uuid(1BE49F30-0E1B-11d3-9D8E-00C04F72D980),
  1608.         helpstring("LanguageComponentType Class")
  1609.     ]
  1610.     coclass LanguageComponentType
  1611.     {
  1612.         [default] interface ILanguageComponentType;
  1613.     };
  1614.     // MPEG2 ComponentType class
  1615.     [
  1616.         uuid(418008F3-CF67-4668-9628-10DC52BE1D08),
  1617.         helpstring("MPEG2ComponentType Class")
  1618.     ]
  1619.     coclass MPEG2ComponentType
  1620.     {
  1621.         [default] interface IMPEG2ComponentType;
  1622.     };
  1623.     // ATSC ComponentType class
  1624.     [
  1625.         uuid(A8DCF3D5-0780-4ef4-8A83-2CFFAACB8ACE),
  1626.         helpstring("ATSCComponentType Class")
  1627.     ]
  1628.     coclass ATSCComponentType
  1629.     {
  1630.         [default] interface IATSCComponentType;
  1631.     };
  1632.     // Components class
  1633.     [
  1634.         hidden, restricted,
  1635.         uuid(809B6661-94C4-49e6-B6EC-3F0F862215AA),
  1636.         helpstring("Components Collection Class")
  1637.     ]
  1638.     coclass Components
  1639.     {
  1640.         [default] interface IComponents;
  1641.     };
  1642.     // Component class
  1643. // the components can only be created by network provider/tif.  client apps
  1644. // retrieve them from a filled-in tune request by either loading a persisted tune
  1645. // request that has been filled in by a proper guide store loader or by re-getting
  1646. // the current tune request property which will have this filled in by the network
  1647. // provider
  1648.     [
  1649.         hidden, restricted,
  1650.         uuid(59DC47A8-116C-11d3-9D8E-00C04F72D980),
  1651.         helpstring("Component Class")
  1652.     ]
  1653.     coclass Component
  1654.     {
  1655.         [default] interface IComponent;
  1656.     };
  1657.     // MPEG2 Component class
  1658.     [
  1659.         hidden, restricted,
  1660.         uuid(055CB2D7-2969-45cd-914B-76890722F112),
  1661.         helpstring("MPEG2 Component Class")
  1662.     ]
  1663.     coclass MPEG2Component
  1664.     {
  1665.         [default] interface IMPEG2Component;
  1666.     };
  1667. // NOTE: there is no object factory for this class.  the implementation for the underlying
  1668. // code is a c++ abstract base class.  this coclass is only provided here to
  1669. // force vb to expose the base interface to enable polymorphic access to 
  1670. // derived objects
  1671.     [
  1672. hidden, restricted,
  1673.         uuid(B46E0D38-AB35-4a06-A137-70576B01B39F),
  1674.         helpstring("dummy class to expose base tune request i/f to VB")
  1675.     ]
  1676.     coclass TuneRequest
  1677.     {
  1678.         [default] interface ITuneRequest;
  1679.     };
  1680.     // NOTE: the tuning request factories should not be invoked directly.
  1681.     // instead apps should use ITuningSpace::CreateTuningRequest to obtain a correctly
  1682.     // initialized tuning request of the appropriate type for that space.
  1683.     // the object factories are provided to allow generic code to a load a previously persisted
  1684.     // tune request object.
  1685.     [
  1686.         hidden,
  1687.         restricted,
  1688.         uuid(0369B4E5-45B6-11d3-B650-00C04F79498E),
  1689.         helpstring("Channel Tune Request")
  1690.     ]
  1691.     coclass ChannelTuneRequest
  1692.     {
  1693.         [default] interface IChannelTuneRequest;
  1694.     };
  1695.     [
  1696.         hidden,
  1697.         restricted,
  1698.         uuid(0369B4E6-45B6-11d3-B650-00C04F79498E),
  1699.         helpstring("ATSC Channel Tune Request")
  1700.     ]
  1701.     coclass ATSCChannelTuneRequest
  1702.     {
  1703.         [default] interface IATSCChannelTuneRequest;
  1704.     };
  1705. // NOTE: there is no object factory for this class.  the implementation for the underlying
  1706. // code is a c++ abstract base class.  this coclass is only provided here to
  1707. // force vb to expose the base interface to enable polymorphic access to 
  1708. // derived objects
  1709.     [
  1710. hidden, restricted,
  1711.         uuid(0888C883-AC4F-4943-B516-2C38D9B34562),
  1712.         helpstring("dummy class to expose base locator i/f to VB")
  1713.     ]
  1714.     coclass Locator
  1715.     {
  1716.         [default] interface ILocator;
  1717.     };
  1718. // its not intended that client apps actually create locators.  the network
  1719. // provider in combination with the transport information filter(TIF) are the 
  1720. // only modules in the system that actually know the correct values for these objects
  1721. // however, for testing purposes, its necessary to allow these to be created.
  1722. // instead, normally these will simply be passed around opaquely since they're a 
  1723. // property of the base tune request interface.
  1724.     [
  1725.         uuid(8872FF1B-98FA-4d7a-8D93-C9F1055F85BB),
  1726.         helpstring("ATSC Locator")
  1727.     ]
  1728.     coclass ATSCLocator
  1729.     {
  1730.         [default] interface IATSCLocator;
  1731.     };
  1732.     [
  1733.         uuid(9CD64701-BDF3-4d14-8E03-F12983D86664),
  1734.         helpstring("DVB-Terrestrial Locator")
  1735.     ]
  1736.     coclass DVBTLocator
  1737.     {
  1738.         [default] interface IDVBTLocator;
  1739.     };
  1740.     [
  1741.         uuid(1DF7D126-4050-47f0-A7CF-4C4CA9241333),
  1742.         helpstring("DVB-Satellite Locator")
  1743.     ]
  1744.     coclass DVBSLocator
  1745.     {
  1746.         [default] interface IDVBSLocator;
  1747.     };
  1748.     [
  1749.         uuid(C531D9FD-9685-4028-8B68-6E1232079F1E),
  1750.         helpstring("DVB-Cable Locator")
  1751.     ]
  1752.     coclass DVBCLocator
  1753.     {
  1754.         [default] interface ILocator;
  1755.     };
  1756.     [
  1757.         hidden,
  1758.         restricted,
  1759.         uuid(15D6504A-5494-499c-886C-973C9E53B9F1),
  1760.         helpstring("DVB Tune Request")
  1761.     ]
  1762.     coclass DVBTuneRequest
  1763.     {
  1764.         [default] interface IDVBTuneRequest;
  1765.     };
  1766. // Sample tuner class definition:
  1767. //
  1768. //  [
  1769. //      uuid(<some guid>),
  1770. //      helpstring("My Tuner object")
  1771. //  ]
  1772. //  coclass MyTuner
  1773. //  {
  1774. //      [default] interface ITuner;
  1775. //      interface IMyTunerCustomFeatureInterface;
  1776. //      [default, source] interface ITunerEvents;
  1777. //      [source] interface ISignalEvents;
  1778. //  };
  1779. ///////////////////////////////////////////////////////////////////////////////////////
  1780. // utility objects
  1781. ///////////////////////////////////////////////////////////////////////////////////////
  1782.     [
  1783. hidden, restricted,
  1784.         uuid(8A674B49-1F63-11d3-B64C-00C04F79498E),
  1785.         helpstring("Create property bag backed by registry")
  1786.     ]
  1787.     coclass CreatePropBagOnRegKey
  1788.     {
  1789.         interface ICreatePropBagOnRegKey;
  1790.     };
  1791. }
  1792. // end of file -- tuner.idl