📄 rmaplugn.pas
字号:
unit RmaPlugn;
interface
uses
PnResult, PnTypes, RmaPckts;
(****************************************************************************
*
* $Id: rmaplugn.h,v 1.39 2000/05/10 16:13:52 ndwyer Exp $
*
* Copyright (C) 1995-1999 RealNetworks, Inc. All rights reserved.
*
* http://www.real.com/devzone
*
* This program contains proprietary
* information of Progressive Networks, Inc, and is licensed
* subject to restrictions on use and distribution.
*
*
* Plugin init / inspector interfaces
*
*)
(****************************************************************************
*
* Function:
*
* RMACreateInstance()
*
* Purpose:
*
* Function implemented by all plugin DLL's to create an instance of
* any of the objects supported by the DLL. This method is similar to
* Window's CoCreateInstance() in its purpose, except that it only
* creates objects from this plugin DLL.
*
* NOTE: Aggregation is never used. Therefore an outer unknown is
* not passed to this function, and you do not need to code for this
* situation.
*
*)
function RMACreateInstance(out ppIUnknown: IUnknown): PN_RESULT; stdcall;
{$EXTERNALSYM RMACreateInstance}
(****************************************************************************
*
* Function:
*
* RMAShutdown()
*
* Purpose:
*
* Function implemented by all plugin DLL's to free any *global*
* resources. This method is called just before the DLL is unloaded.
*
*)
function RMAShutdown: PN_RESULT; stdcall;
{$EXTERNALSYM RMAShutdown}
(****************************************************************************
*
* Interface:
*
* IRMAPlugin
*
* Purpose:
*
* Interface exposed by a plugin DLL to allow inspection of objects
* supported by the plugin DLL.
*
* IID_IRMAPlugin:
*
* {00000C00-0901-11d1-8B06-00A024406D59}
*
*)
const
IID_IRMAPlugin: TGUID = '{00000C00-0901-11d1-8B06-00A024406D59}';
{$EXTERNALSYM IID_IRMAPlugin}
type
IRMAPlugin = interface (IUnknown)
['{00000C00-0901-11d1-8B06-00A024406D59}']
(************************************************************************
* Method:
* IRMAPlugin::GetPluginInfo
* Purpose:
* Returns the basic information about this plugin. Including:
*
* bMultipleLoad Whether or not this plugin can be instantiated
* multiple times. All File Formats must set
* this value to TRUE. The only other type of
* plugin that can specify bMultipleLoad=TRUE is
* a filesystem plugin. Any plugin that sets
* this flag to TRUE must not use global variables
* of any type.
*
* Setting this flag to TRUE implies that you
* accept that your plugin may be instantiated
* multiple times (possibly in different
* address spaces). Plugins are instantiated
* multiple times only in the server (for
* performance reasons).
*
* An example of a plugin, that must set this
* flag to FALSE is a filesystem plugin that
* uses a single TCP connection to communicate
* with a database.
*
* pDescription which is used in about UIs (can be NULL)
* pCopyright which is used in about UIs (can be NULL)
* pMoreInfoURL which is used in about UIs (can be NULL)
* ulVersionNumber The version of this plugin.
*)
function GetPluginInfo(var bMultipleLoad: BOOL; var pDescription, pCopyright,
pMoreInfoURL: PChar; var ulVersionNumber: ULONG32): HRESULT; stdcall;
(************************************************************************
* Method:
* IRMAPlugin::InitPlugin
* Purpose:
* Initializes the plugin for use. This interface must always be
* called before any other method is called. This is primarily needed
* so that the plugin can have access to the context for creation of
* IRMABuffers and IMalloc.
*)
function InitPlugin(pContext: IUnknown): HRESULT; stdcall;
end;
{$EXTERNALSYM IRMAPlugin}
(****************************************************************************
*
* Interface:
*
* IRMAPluginEnumerator
*
* Purpose:
*
* provide methods to enumerate through all the plugins installed
*
* IID_IRMAPluginEnumerator:
*
* {00000C01-0901-11d1-8B06-00A024406D59}
*
*)
const
IID_IRMAPluginEnumerator: TGUID = '{00000C01-0901-11d1-8B06-00A024406D59}';
{$EXTERNALSYM IID_IRMAPluginEnumerator}
type
IRMAPluginEnumerator = interface (IUnknown)
['{00000C01-0901-11d1-8B06-00A024406D59}']
(************************************************************************
* Method:
* IRMAPluginEnumerator::GetNumOfPlugins
*
* Purpose:
* return the number of plugins available
*
*)
function GetNumOfPlugins: ULONG32; stdcall;
(************************************************************************
* Method:
* IRMAPluginEnumerator::GetPlugin
* Purpose:
* Return an instance (IUnknown) of the plugin
*
*)
function GetPlugin(ulIndex: ULONG32; out pPlugin: IUnknown): HRESULT; stdcall;
end;
{$EXTERNALSYM IRMAPluginEnumerator}
(****************************************************************************
*
* Interface:
*
* IRMAPluginGroupEnumerator
*
* Purpose:
*
* Provide a way to enumerate through all of the plugins which
* implement a specific interface.
*
* IID_IRMAPluginGroupEnumerator:
*
* {00000C02-0901-11d1-8B06-00A024406D59}
*
*)
const
IID_IRMAPluginGroupEnumerator: TGUID = '{00000C02-0901-11d1-8B06-00A024406D59}';
{$EXTERNALSYM IID_IRMAPluginGroupEnumerator}
CLSID_IRMAPluginGroupEnumerator: TGUID = '{00000C02-0901-11d1-8B06-00A024406D59}';
{$EXTERNALSYM CLSID_IRMAPluginGroupEnumerator}
type
IRMAPluginGroupEnumerator = interface (IUnknown)
['{00000C02-0901-11d1-8B06-00A024406D59}']
(******************************************************************
* Method:
* IRMAPluginGroupEnumerator::Init
*
* Purpose:
* tell the group enumerator which interface to group the plugins
* into, this method must be called before the other methods can
* be called.
*
*)
function Init(const iid: TGUID): HRESULT; stdcall;
(******************************************************************
* Method:
* IRMAPluginGroupEnumerator::GetNumOfPlugins
*
* Purpose:
* return the number of plugins available that support a particular
* interface.
*
*)
function GetNumOfPlugins: ULONG32; stdcall;
(******************************************************************
* Method:
* IRMAPluginGroupEnumerator::GetPlugin
* Purpose:
* Return an instance (IUnknown) of the plugin
*
*)
function GetPlugin(ulIndex: UINT32; out pPlugin: IUnknown): HRESULT; stdcall;
end;
{$EXTERNALSYM IRMAPluginGroupEnumerator}
(****************************************************************************
*
* Interface:
*
* IRMAPluginReloader
*
* Purpose:
*
* Tells the client core to reload all plugins.
*
* IID_IRMAPluginReloader:
*
* {00000C03-0901-11d1-8B06-00A024406D59}
*
*)
const
IID_IRMAPluginReloader: TGUID = '{00000C03-0901-11d1-8B06-00A024406D59}';
{$EXTERNALSYM IID_IRMAPluginReloader}
type
IRMAPluginReloader = interface (IUnknown)
['{00000C03-0901-11d1-8B06-00A024406D59}']
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -