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

模拟服务器

开发平台:

C/C++

  1. //------------------------------------------------------------------------------
  2. // File: BDAIface.idl
  3. //
  4. // Desc: This file defines the Ring 3 BDA interfaces that are common to
  5. //       all BDA network and device types.
  6. //
  7. //       The interfaces specific to a particular Network Type or filter
  8. //       implementation are defined in a separate include file for that
  9. //       Network Type or filter implementation.
  10. //
  11. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  12. //------------------------------------------------------------------------------
  13. //---------------------------------------------------------------------
  14. // IUnknown import idl
  15. //---------------------------------------------------------------------
  16. #ifndef DO_NO_IMPORTS
  17. import "unknwn.idl";
  18. import "strmif.idl";
  19. import "BdaTypes.h";
  20. #endif
  21. //---------------------------------------------------------------------
  22. //
  23. //  IBDA_NetworkProvider interface
  24. //
  25. //  Implemented by a BDA Network Provider
  26. //
  27. //      Used by a BDA device filter to register itself with
  28. //      a Network Provider and query information about the
  29. //      the current tuning request.
  30. //
  31. //---------------------------------------------------------------------
  32. [
  33.     object,
  34.     uuid(fd501041-8ebe-11ce-8183-00aa00577da2),
  35.     pointer_default(unique)
  36. ]
  37. interface IBDA_NetworkProvider : IUnknown
  38. {
  39.     HRESULT
  40.     PutSignalSource (
  41.         [in] ULONG          ulSignalSource
  42.         );
  43.     HRESULT
  44.     GetSignalSource (
  45.         [in, out] ULONG *   pulSignalSource
  46.         );
  47.     HRESULT
  48.     GetNetworkType (
  49.         [in, out] GUID *    pguidNetworkType
  50.         );
  51.     HRESULT
  52.     PutTuningSpace (
  53.         [in] REFGUID        guidTuningSpace
  54.         );
  55.     HRESULT
  56.     GetTuningSpace (
  57.         [in, out] GUID *    pguidTuingSpace
  58.         );
  59.     HRESULT
  60.     RegisterDeviceFilter (
  61.         [in]  IUnknown *    pUnkFilterControl,
  62.         [in, out] ULONG *   ppvRegisitrationContext
  63.         );
  64.     HRESULT
  65.     UnRegisterDeviceFilter (
  66.         [in] ULONG          pvRegistrationContext
  67.         );
  68. }
  69. //---------------------------------------------------------------------
  70. //
  71. //  IBDA_EthernetFilter interface
  72. //
  73. //  Implemented by a BDA Network Provider
  74. //
  75. //      Used by an Ethernet Network Data Sink filter (eg. IPSink) to
  76. //      request that the Network Provider make its best effort to tune
  77. //      to the stream(s) on which a list of Ethernet multicast addresses
  78. //      may be transmitted.
  79. //
  80. //      Addresses in the address list are byte aligned in Network order.
  81. //      UlcbAddresses will always be an integer multiple of the
  82. //      size of an ethernet address.
  83. //
  84. //---------------------------------------------------------------------
  85. [
  86.     object,
  87.     uuid(71985F43-1CA1-11d3-9CC8-00C04F7971E0),
  88.     pointer_default(unique)
  89. ]
  90. interface IBDA_EthernetFilter : IUnknown
  91. {
  92.     HRESULT
  93.     GetMulticastListSize (
  94.         [in, out] ULONG *                   pulcbAddresses
  95.         );
  96.     HRESULT
  97.     PutMulticastList (
  98.         [in] ULONG                          ulcbAddresses,
  99.         [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  100.         );
  101.     HRESULT
  102.     GetMulticastList (
  103.         [in, out] ULONG *                       pulcbAddresses,
  104.         [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  105.         );
  106.     HRESULT
  107.     PutMulticastMode (
  108.         [in] ULONG      ulModeMask
  109.         );
  110.     HRESULT
  111.     GetMulticastMode (
  112.         [out] ULONG *   pulModeMask
  113.         );
  114. }
  115. //---------------------------------------------------------------------
  116. //
  117. //  IBDA_IPV4Filter interface
  118. //
  119. //  Implemented by a BDA Network Provider
  120. //
  121. //      Used by an IPv4 Network Data Sink filter to request
  122. //      that the Network Provider make its best effort to tune
  123. //      to the stream(s) on which a list of IPv4 multicast addresses
  124. //      may be transmitted.
  125. //
  126. //      Addresses in the address list are byte aligned in Network order.
  127. //      UlcbAddresses will always be an integer multiple of the
  128. //      size of an IPv4 address.
  129. //
  130. //---------------------------------------------------------------------
  131. [
  132.     object,
  133.     uuid(71985F44-1CA1-11d3-9CC8-00C04F7971E0),
  134.     pointer_default(unique)
  135. ]
  136. interface IBDA_IPV4Filter : IUnknown
  137. {
  138.     HRESULT
  139.     GetMulticastListSize (
  140.         [in, out] ULONG *                   pulcbAddresses
  141.         );
  142.     HRESULT
  143.     PutMulticastList (
  144.         [in] ULONG                          ulcbAddresses,
  145.         [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  146.         );
  147.     HRESULT
  148.     GetMulticastList (
  149.         [in, out] ULONG *                       pulcbAddresses,
  150.         [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  151.         );
  152.     HRESULT
  153.     PutMulticastMode (
  154.         [in] ULONG  ulModeMask
  155.         );
  156.     HRESULT
  157.     GetMulticastMode (
  158.         [out] ULONG* pulModeMask
  159.         );
  160. }
  161. //---------------------------------------------------------------------
  162. //
  163. //  IBDA_IPV6Filter interface
  164. //
  165. //  Implemented by a BDA Network Provider
  166. //
  167. //      Used by an IPv6 Network Data Sink filter to request
  168. //      that the Network Provider make its best effort to tune
  169. //      to the stream(s) on which a list of IPv6 multicast addresses
  170. //      may be transmitted.
  171. //
  172. //      Addresses in the address list are byte aligned in Network order.
  173. //      UlcbAddresses will always be an integer multiple of the
  174. //      size of an IPv6 address.
  175. //
  176. //---------------------------------------------------------------------
  177. [
  178.     object,
  179.     uuid(E1785A74-2A23-4fb3-9245-A8F88017EF33),
  180.     pointer_default(unique)
  181. ]
  182. interface IBDA_IPV6Filter : IUnknown
  183. {
  184.     HRESULT
  185.     GetMulticastListSize (
  186.         [in, out] ULONG *                   pulcbAddresses
  187.         );
  188.     HRESULT
  189.     PutMulticastList (
  190.         [in] ULONG                          ulcbAddresses,
  191.         [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  192.         );
  193.     HRESULT
  194.     GetMulticastList (
  195.         [in, out] ULONG *                       pulcbAddresses,
  196.         [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  197.         );
  198.     HRESULT
  199.     PutMulticastMode (
  200.         [in] ULONG  ulModeMask
  201.         );
  202.     HRESULT
  203.     GetMulticastMode (
  204.         [out] ULONG* pulModeMask
  205.         );
  206. }
  207. //---------------------------------------------------------------------
  208. //
  209. //  IBDA_DeviceControl interface
  210. //
  211. //  Implemented by a BDA Device Filter
  212. //
  213. //      Used by the Network Provider to commit a series of changes
  214. //      on a BDA device filter.  The device filter validates and
  215. //      accumulates all changes requested after StartChanges().  It
  216. //      effects the accumulated list of changes when CommitChanges() is
  217. //      called.
  218. //
  219. //---------------------------------------------------------------------
  220. [
  221.     object,
  222.     uuid(FD0A5AF3-B41D-11d2-9C95-00C04F7971E0),
  223.     pointer_default(unique)
  224. ]
  225. interface IBDA_DeviceControl : IUnknown
  226. {
  227.     HRESULT
  228.     StartChanges (
  229.         void
  230.         );
  231.     HRESULT
  232.     CheckChanges (
  233.         void
  234.         );
  235.     HRESULT
  236.     CommitChanges (
  237.         void
  238.         );
  239.     HRESULT
  240.     GetChangeState (
  241.         [in, out] ULONG *   pState
  242.         );
  243. }
  244. //---------------------------------------------------------------------
  245. //
  246. //  IBDA_PinControl interface
  247. //
  248. //  Implemented by a BDA Device Filter's Pin
  249. //
  250. //      Used by the Network Provider to determine the BDA PinID and
  251. //      PinType on a BDA Filter's Pin
  252. //
  253. //---------------------------------------------------------------------
  254. [
  255.     object,
  256.     uuid(0DED49D5-A8B7-4d5d-97A1-12B0C195874D),
  257.     pointer_default(unique)
  258. ]
  259. interface IBDA_PinControl : IUnknown
  260. {
  261.     HRESULT
  262.     GetPinID (
  263.         [in, out] ULONG *   pulPinID
  264.         );
  265.     HRESULT
  266.     GetPinType (
  267.         [in, out] ULONG *   pulPinType
  268.         );
  269. }
  270. //---------------------------------------------------------------------
  271. //
  272. //  IBDA_SignalProperties interface
  273. //
  274. //  Implemented by a BDA Device Filter
  275. //
  276. //      BDA Signal Properties is used by a Network Provider to inform
  277. //      a BDA Device Filter about the current tuning request.  The
  278. //      Network Provider will call the Put functions when the BDA
  279. //      device is first registered with the Network Provider and whenever
  280. //      the current tuning request is modified.
  281. //
  282. //---------------------------------------------------------------------
  283. [
  284.     object,
  285.     uuid(D2F1644B-B409-11d2-BC69-00A0C9EE9E16),
  286.     pointer_default(unique)
  287. ]
  288. interface IBDA_SignalProperties : IUnknown
  289. {
  290.     HRESULT
  291.     PutNetworkType (
  292.         [in] REFGUID        guidNetworkType
  293.         );
  294.     HRESULT
  295.     GetNetworkType (
  296.         [in, out] GUID *    pguidNetworkType
  297.         );
  298.     HRESULT
  299.     PutSignalSource (
  300.         [in] ULONG          ulSignalSource
  301.         );
  302.     HRESULT
  303.     GetSignalSource (
  304.         [in, out] ULONG *   pulSignalSource
  305.         );
  306.     HRESULT
  307.     PutTuningSpace (
  308.         [in] REFGUID        guidTuningSpace
  309.         );
  310.     HRESULT
  311.     GetTuningSpace (
  312.         [in, out] GUID *    pguidTuingSpace
  313.         );
  314. }
  315. //---------------------------------------------------------------------
  316. //
  317. //  IBDA_Topology interface
  318. //
  319. //  Implemented by a BDA Device Filter
  320. //
  321. //      Used by the Network Provider to query a BDA Device Filter's
  322. //      possible topologies (template topology) and to configure
  323. //      the device with an appropriate topology for the current
  324. //      tuning request.  It is also used to get an IUnknown to
  325. //      a control node which may be used to set specific tuning
  326. //      information.
  327. //
  328. //---------------------------------------------------------------------
  329. [
  330.     object,
  331.     uuid(A14EE835-0A23-11d3-9CC7-00C04F7971E0),
  332.     pointer_default(unique)
  333. ]
  334. interface IBDA_Topology : IUnknown
  335. {
  336.     HRESULT
  337.     GetNodeTypes (
  338.         [in, out] ULONG *                           pulcNodeTypes,
  339.         [in]  ULONG                                 ulcNodeTypesMax,
  340.         [in, out, size_is (ulcNodeTypesMax)] ULONG  rgulNodeTypes[]
  341.         );
  342.     HRESULT
  343.     GetNodeInterfaces (
  344.         [in]  ULONG                                     ulNodeType,
  345.         [in, out] ULONG *                               pulcInterfaces,
  346.         [in]  ULONG                                     ulcInterfacesMax,
  347.         [in, out, size_is (ulcInterfacesMax)] GUID *    rgguidInterfaces[]
  348.         );
  349.     HRESULT
  350.     GetPinTypes (
  351.         [in, out] ULONG *                           pulcPinTypes,
  352.         [in]  ULONG                                 ulcPinTypesMax,
  353.         [in, out, size_is (ulcPinTypesMax)] ULONG   rgulPinTypes[]
  354.         );
  355.     HRESULT
  356.     GetTemplateConnections (
  357.         [in, out] ULONG *                       pulcConnections,
  358.         [in]  ULONG                             ulcConnectionsMax,
  359.         [in, out, size_is (ulcConnectionsMax)] BDA_TEMPLATE_CONNECTION    rgConnections[]
  360.         );
  361.     HRESULT
  362.     CreatePin (
  363.         [in]  ULONG         ulPinType,
  364.         [in, out] ULONG *   pulPinId
  365.         );
  366.     HRESULT
  367.     DeletePin (
  368.         [in] ULONG      ulPinId
  369.         );
  370.     HRESULT
  371.     SetMediaType (
  372.         [in]  ULONG             ulPinId,
  373.         [in]  AM_MEDIA_TYPE *   pMediaType
  374.         );
  375.     HRESULT
  376.     SetMedium (
  377.         [in] ULONG          ulPinId,
  378.         [in] REGPINMEDIUM * pMedium
  379.         );
  380.     HRESULT
  381.     CreateTopology (
  382.         [in] ULONG ulInputPinId,
  383.         [in] ULONG ulOutputPinId
  384.         );
  385.     HRESULT
  386.     GetControlNode (
  387.         [in] ULONG              ulInputPinId,
  388.         [in] ULONG              ulOutputPinId,
  389.         [in] ULONG              ulNodeType,
  390.         [in, out] IUnknown **   ppControlNode
  391.         );
  392. }
  393. //---------------------------------------------------------------------
  394. // IBDA_VoidTransform interface
  395. //---------------------------------------------------------------------
  396. [
  397.     object,
  398.     uuid(71985F46-1CA1-11d3-9CC8-00C04F7971E0),
  399.     pointer_default(unique)
  400. ]
  401. interface IBDA_VoidTransform : IUnknown
  402. {
  403.     HRESULT
  404.     Start (
  405.         void
  406.         );
  407.     HRESULT
  408.     Stop (
  409.         void
  410.         );
  411. }
  412. //---------------------------------------------------------------------
  413. // IBDA_NullTransform interface
  414. //---------------------------------------------------------------------
  415. [
  416.     object,
  417.     uuid(DDF15B0D-BD25-11d2-9CA0-00C04F7971E0),
  418.     pointer_default(unique)
  419. ]
  420. interface IBDA_NullTransform : IUnknown
  421. {
  422.     HRESULT
  423.     Start (
  424.         void
  425.         );
  426.     HRESULT
  427.     Stop (
  428.         void
  429.         );
  430. }
  431. //---------------------------------------------------------------------
  432. // IBDA_FrequencyFilter interface
  433. //---------------------------------------------------------------------
  434. [
  435.     object,
  436.     uuid(71985F47-1CA1-11d3-9CC8-00C04F7971E0),
  437.     pointer_default(unique)
  438. ]
  439. interface IBDA_FrequencyFilter : IUnknown
  440. {
  441.     HRESULT
  442.     put_Autotune (
  443.         [in] ULONG *        pulTransponder
  444.         );
  445.     HRESULT
  446.     put_Frequency (
  447.         [in] ULONG *        pulFrequency
  448.         );
  449.     HRESULT
  450.     get_Frequency (
  451.         [in, out] ULONG *   pulFrequency
  452.         );
  453.     HRESULT
  454.     put_Polarity (
  455.         [in] ULONG *        pulPolarity
  456.         );
  457.     HRESULT
  458.     get_Polarity (
  459.         [in, out] ULONG *   pulPolarity
  460.         );
  461.     HRESULT
  462.     put_Range (
  463.         [in] ULONG *        pulRange
  464.         );
  465.     HRESULT
  466.     get_Range (
  467.         [in, out] ULONG *   pulRange
  468.         );
  469. }
  470. //---------------------------------------------------------------------
  471. // IBDA_AutoDemodulate interface
  472. //---------------------------------------------------------------------
  473. [
  474.     object,
  475.     uuid(DDF15B12-BD25-11d2-9CA0-00C04F7971E0),
  476.     pointer_default(unique)
  477. ]
  478. interface IBDA_AutoDemodulate : IUnknown
  479. {
  480.     HRESULT
  481.     put_AutoDemodulate (
  482.         void
  483.         );
  484. }
  485. //---------------------------------------------------------------------
  486. // IBDA_DigitalDemodulator interface
  487. //---------------------------------------------------------------------
  488. [
  489.     object,
  490.     uuid(EF30F379-985B-4d10-B640-A79D5E04E1E0),
  491.     pointer_default(unique)
  492. ]
  493. interface IBDA_DigitalDemodulator : IUnknown
  494. {
  495.     HRESULT
  496.     put_ModulationType (
  497.         [in] ModulationType *   pModulationType
  498.         );
  499.     HRESULT
  500.     get_ModulationType (
  501.         [in, out] ModulationType *  pModulationType
  502.         );
  503.     HRESULT
  504.     put_InnerFECMethod (
  505.         [in] FECMethod *    pFECMethod
  506.         );
  507.     HRESULT
  508.     get_InnerFECMethod (
  509.         [in, out] FECMethod *   pFECMethod
  510.         );
  511.     HRESULT
  512.     put_InnerFECRate (
  513.         [in] BinaryConvolutionCodeRate *    pFECRate
  514.         );
  515.     HRESULT
  516.     get_InnerFECRate (
  517.         [in, out] BinaryConvolutionCodeRate *   pFECRate
  518.         );
  519.     HRESULT
  520.     put_OuterFECMethod (
  521.         [in] FECMethod *    pFECMethod
  522.         );
  523.     HRESULT
  524.     get_OuterFECMethod (
  525.         [in, out] FECMethod *   pFECMethod
  526.         );
  527.     HRESULT
  528.     put_OuterFECRate (
  529.         [in] BinaryConvolutionCodeRate *    pFECRate
  530.         );
  531.     HRESULT
  532.     get_OuterFECRate (
  533.         [in, out] BinaryConvolutionCodeRate *   pFECRate
  534.         );
  535.     HRESULT
  536.     put_SymbolRate (
  537.         [in] ULONG *    pSymbolRate
  538.         );
  539.     HRESULT
  540.     get_SymbolRate (
  541.         [in, out] ULONG *   pSymbolRate
  542.         );
  543.     HRESULT
  544.     put_SpectralInversion (
  545.         [in] SpectralInversion *    pSpectralInversion
  546.         );
  547.     HRESULT
  548.     get_SpectralInversion (
  549.         [in, out] SpectralInversion *   pSpectralInversion
  550.         );
  551. }
  552. typedef enum
  553. {
  554.     KSPROPERTY_IPSINK_MULTICASTLIST,
  555.     KSPROPERTY_IPSINK_ADAPTER_DESCRIPTION,
  556.     KSPROPERTY_IPSINK_ADAPTER_ADDRESS
  557. } KSPROPERTY_IPSINK;
  558. //---------------------------------------------------------------------
  559. // IBDA_IPSinkControl interface
  560. //---------------------------------------------------------------------
  561. [
  562.     object,
  563.     uuid(3F4DC8E2-4050-11d3-8F4B-00C04F7971E2),
  564.     pointer_default(unique)
  565. ]
  566. interface IBDA_IPSinkControl : IUnknown
  567. {
  568.     HRESULT GetMulticastList (
  569.                 [in, out] unsigned long *pulcbSize,
  570.                 [in, out] BYTE **pbBuffer
  571.     );
  572.     HRESULT GetAdapterIPAddress (
  573.                 [in,out] unsigned long *pulcbSize,
  574.                 [in,out] BYTE **pbBuffer
  575.     );
  576. }
  577. //
  578. //  mpeg-2 demultiplexer-specific interfaces follow
  579. //
  580. //---------------------------------------------------------------------
  581. // IEnumPIDMap interface
  582. //---------------------------------------------------------------------
  583. #ifdef REMOVE_THESE
  584. typedef enum {
  585.     MEDIA_TRANSPORT_PACKET,         //  complete TS packet e.g. pass-through mode
  586.     MEDIA_ELEMENTARY_STREAM,        //  PES payloads; audio/video only
  587.     MEDIA_MPEG2_PSI,                //  PAT, PMT, CAT, Private
  588.     MEDIA_TRANSPORT_PAYLOAD         //  gathered TS packet payloads (PES packets, etc...)
  589. } MEDIA_SAMPLE_CONTENT ;
  590. typedef struct {
  591.     ULONG                   ulPID ;
  592.     MEDIA_SAMPLE_CONTENT    MediaSampleContent ;
  593. } PID_MAP ;
  594. #endif // REMOVE_THESE
  595. [
  596.     object,
  597.     uuid (afb6c2a2-2c41-11d3-8a60-0000f81e0e4a),
  598.     pointer_default(unique)
  599. ]
  600. interface IEnumPIDMap : IUnknown
  601. {
  602.     HRESULT
  603.     Next (
  604.         [in]                            ULONG       cRequest,
  605.         [in, out, size_is (cRequest)]   PID_MAP *   pPIDMap,
  606.         [out]                           ULONG *     pcReceived
  607.         ) ;
  608.     HRESULT
  609.     Skip (
  610.         [in]    ULONG   cRecords
  611.         ) ;
  612.     HRESULT
  613.     Reset (
  614.         ) ;
  615.     HRESULT
  616.     Clone (
  617.         [out]   IEnumPIDMap **  ppIEnumPIDMap
  618.         ) ;
  619. } ;
  620. //---------------------------------------------------------------------
  621. // IMPEG2PIDMap interface
  622. //---------------------------------------------------------------------
  623. [
  624.     object,
  625.     uuid (afb6c2a1-2c41-11d3-8a60-0000f81e0e4a),
  626.     pointer_default(unique)
  627. ]
  628. interface IMPEG2PIDMap : IUnknown
  629. {
  630.     HRESULT
  631.     MapPID (
  632.         [in]    ULONG                   culPID,
  633.         [in]    ULONG *                 pulPID,
  634.         [in]    MEDIA_SAMPLE_CONTENT    MediaSampleContent
  635.         ) ;
  636.     HRESULT
  637.     UnmapPID (
  638.         [in]    ULONG   culPID,
  639.         [in]    ULONG * pulPID
  640.         ) ;
  641.     HRESULT
  642.     EnumPIDMap (
  643.         [out]   IEnumPIDMap ** pIEnumPIDMap
  644.         ) ;
  645. } ;