rmaplgns.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:4k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /****************************************************************************
  2.  * 
  3.  *  $Id: rmaplgns.h,v 1.1 2003/05/30 02:17:36 gabest Exp $
  4.  *
  5.  *  Copyright (C) 1995-1999 RealNetworks, Inc. All rights reserved.
  6.  *  
  7.  *  http://www.real.com/devzone
  8.  *
  9.  *  This program contains proprietary 
  10.  *  information of Progressive Networks, Inc, and is licensed
  11.  *  subject to restrictions on use and distribution.
  12.  *
  13.  *
  14.  *  RealMedia Architecture Plug-in Interfaces.
  15.  *
  16.  */
  17. #ifndef _RMAPLGNS_H_
  18. #define _RMAPLGNS_H_
  19. /*
  20.  * Forward declarations of some interfaces defined or used here-in.
  21.  */
  22. typedef _INTERFACE  IUnknown     IUnknown;
  23. typedef _INTERFACE  IRMAObjectConfiguration     IRMAObjectConfiguration;
  24. typedef _INTERFACE  IRMAPluginProperties     IRMAPluginProperties;
  25. typedef _INTERFACE  IRMABuffer     IRMABuffer;
  26. typedef _INTERFACE  IRMAValues     IRMAValues;
  27. /****************************************************************************
  28.  * 
  29.  *  Interface:
  30.  *
  31.  * IRMAObjectConfiguration
  32.  *
  33.  *  Purpose:
  34.  *
  35.  * Interface for setting context and generic means of plugin 
  36.  * Configuration.
  37.  *
  38.  *  IRMAObjectConfiguration:
  39.  *
  40.  * {0x00002900-0901-11d1-8B06-00A024406D59}
  41.  *
  42.  */
  43. DEFINE_GUID(IID_IRMAObjectConfiguration,   0x00002900, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  44. #undef  INTERFACE
  45. #define INTERFACE   IRMAObjectConfiguration
  46. DECLARE_INTERFACE_(IRMAObjectConfiguration, IUnknown)
  47. {
  48.     /*
  49.      * IUnknown methods
  50.      */
  51.     STDMETHOD(QueryInterface) (THIS_
  52. REFIID riid,
  53. void** ppvObj) PURE;
  54.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  55.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  56.     /************************************************************************
  57.      * Method:
  58.      *     IRMAObjectConfiguration::SetContext
  59.      * Purpose:
  60.      *     This function is called to set the context for the plugin.
  61.      *     Either IRMAPlugin::InitPlugin or this function must be called 
  62.      *     before calling any other function on the plugin.
  63.      *     this is intended to be used as a shortcut for the plugin user.
  64.      *     If one needs to use SetConfiguration they only need to query
  65.      *     IRMAObjectConfiguration saving them from also querying for 
  66.      *     IRMAPlugin.
  67.      *
  68.      */
  69.     STDMETHOD(SetContext)
  70.     (
  71. THIS_
  72. IUnknown*   pIUnknownContext
  73.     ) PURE;
  74.     /************************************************************************
  75.      * Method:
  76.      *     IRMAObjectConfiguration::SetConfiguration
  77.      * Purpose:
  78.      *     This allows the user of a plugin to supply configuration
  79.      *     information.  This is often a set of CString properties
  80.      *     extracted from a list in the config file.  This allows
  81.      *     each plugin within a class (auth plugin, database plugin, etc..) 
  82.      *     to require a different set of parameters.
  83.      *
  84.      */
  85.     STDMETHOD(SetConfiguration)
  86.     (
  87. THIS_
  88. IRMAValues* pIRMAValuesConfiguration
  89.     ) PURE;
  90. };
  91. /****************************************************************************
  92.  * 
  93.  *  Interface:
  94.  *
  95.  * IRMAPluginProperties
  96.  *
  97.  *  Purpose:
  98.  *
  99.  * This allows plugins to return whatever properties they want.
  100.  *
  101.  *  IRMAPluginProperties:
  102.  *
  103.  * {0x00002901-0901-11d1-8B06-00A024406D59}
  104.  *
  105.  */
  106. DEFINE_GUID(IID_IRMAPluginProperties,   0x00002901, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  107. #undef  INTERFACE
  108. #define INTERFACE   IRMAPluginProperties
  109. DECLARE_INTERFACE_(IRMAPluginProperties, IUnknown)
  110. {
  111.     /*
  112.      * IUnknown methods
  113.      */
  114.     STDMETHOD(QueryInterface) (THIS_
  115. REFIID riid,
  116. void** ppvObj) PURE;
  117.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  118.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  119.     /************************************************************************
  120.      * Method:
  121.      *     IRMAPluginProperties::GetProperties
  122.      * Purpose:
  123.      *     A plugin will implement this in order to return plugin properties
  124.      *     that will allow it to be identified uniquely.  (PluginID, 
  125.      *     AuthenticationProtocol, etc..)
  126.      *
  127.      */
  128.     STDMETHOD(GetProperties)
  129.     (
  130. THIS_
  131. REF(IRMAValues*) pIRMAValuesProperties
  132.     ) PURE;
  133. };
  134. #endif /* !_RMAPLGNS_H_ */