hxcomm.h
来自「Amarok是一款在LINUX或其他类UNIX操作系统中运行的音频播放器软件。 」· C头文件 代码 · 共 626 行
H
626 行
/* * * This software is released under the provisions of the GPL version 2. * see file "COPYING". If that file is not available, the full statement * of the license can be found at * * http://www.fsf.org/licensing/licenses/gpl.txt * * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved. * */#ifndef _HXCOMM_H_#define _HXCOMM_H_#include "hxengin.h" /* For HXTimeval */#include "hxccf.h" /* For IHXCommonClassFactory. Formerly declared in this file. *//* * Forward declarations of some interfaces defined here-in. */typedef _INTERFACE IHXStatistics IHXStatistics;typedef _INTERFACE IHXRegistryID IHXRegistryID;typedef _INTERFACE IHXServerFork IHXServerFork;typedef _INTERFACE IHXServerControl IHXServerControl;typedef _INTERFACE IHXReconfigServerResponse IHXReconfigServerResponse;typedef _INTERFACE IHXBuffer IHXBuffer;typedef _INTERFACE IHXWantServerReconfigNotification IHXWantServerReconfigNotification; typedef _INTERFACE IHXFastAlloc IHXFastAlloc;/**************************************************************************** * * Interface: * * IHXStatistics * * Purpose: * * This interface allows update of the client statistics. * * IID_IHXStatistics: * * {00000001-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXStatistics, 0x00000001, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXStatisticsDECLARE_INTERFACE_(IHXStatistics, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXStatistics methods */ /************************************************************************ * Method: * IHXStatistics::Init * Purpose: * Pass registry ID to the caller * */ STDMETHOD(InitializeStatistics) (THIS_ UINT32 /*IN*/ ulRegistryID) PURE; /************************************************************************ * Method: * IHXStatistics::Update * Purpose: * Notify the client to update its statistics stored in the registry * */ STDMETHOD(UpdateStatistics) (THIS) PURE;};/**************************************************************************** * * Interface: * * IHXRegistryID * * Purpose: * * This interface is implemented by IHXPlayer, IHXStreamSource, * and IHXStream. It allows the user to get the registry Base ID, * for an object that you have a pointer to. * * IID_IHXRegistryID: * * {00000002-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXRegistryID, 0x00000002, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXRegistryIDDECLARE_INTERFACE_(IHXRegistryID, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXRegistryID methods */ /************************************************************************ * Method: * IHXRegistryID::GetID * Purpose: * Get the registry ID of the object. * */ STDMETHOD(GetID) (THIS_ REF(UINT32) /*OUT*/ ulRegistryID) PURE;};/**************************************************************************** * * Interface: * * IHXServerFork * * Purpose: * * This interface is implemented by the server context on Unix * platforms. This interface allows your plugin to fork off a * process. Note that the process that is forked off cannot use * any RMA APIs. The fork() system call is prohibited from within * a RMA plugin. * * IID_IHXServerFork: * * {00000003-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXServerFork, 0x00000003, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXServerForkDECLARE_INTERFACE_(IHXServerFork, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXServerFork methods */ /************************************************************************ * Method: * IHXServerFork::Fork * Purpose: * Fork off a child process. The child process cannot use any RMA * APIs. Upon successful completion, Fork returns 0 to the child * process and the PID of the child to the parent. A return value * of -1 indicates an error. * * Note: The child process should *NOT* Release any interfaces. * The cleanup of the IHXServerFork() interface and other * RMA interfaces is done by the parent. * */ STDMETHOD_(INT32, Fork) (THIS) PURE;};/* * * Interface: * * IHXServerControl * * Purpose: * * This interface provides access to the RealMedia server's controls * for shutting down (for now). * * Note: This registry is not related to the Windows system registry. * * IID_IHXServerControl: * * {00000004-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXServerControl, 0x00000004, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#define CLSID_IHXServerControl IID_IHXServerControl#undef INTERFACE#define INTERFACE IHXServerControlDECLARE_INTERFACE_(IHXServerControl, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXServerControl methods */ /************************************************************************ * Method: * IHXServerControl::ShutdownServer * Purpose: * Shutdown the server. */ STDMETHOD(ShutdownServer) (THIS_ UINT32 status) PURE;};/* * * Interface: * * IHXServerControl2 * * Purpose: * * Interface for extended server control methods. * * * IID_IHXServerControl2: * * {00000005-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXServerControl2, 0x00000005, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXServerControl2DECLARE_INTERFACE_(IHXServerControl2, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXServerControl2 methods */ /************************************************************************ * IHXServerControl2::RestartServer * * Purpose: * * Completely shutdown the server, then restart. Mainly used to * cause not hot setting config var changes to take effect. */ STDMETHOD(RestartServer) (THIS) PURE; /************************************************************************ * IHXServerControl2::ReconfigServer * * Purpose: * * Used to cause the server to re-read in config from file or registry * (however it was started) and attempt to use the values. */ STDMETHOD(ReconfigServer) (THIS_ IHXReconfigServerResponse* pResp) PURE;};/* * * Interface: * * IHXReconfigServerResponse * * Purpose: * * Response interface for IHXServerControl2::ReconfigServer * * * IID_IHXReconfigServerResponse: * * {00000006-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXReconfigServerResponse, 0x00000006, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXReconfigServerResponseDECLARE_INTERFACE_(IHXReconfigServerResponse, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /************************************************************************ * IHXReconfigServerResponse::ReconfigServerDone * * Purpose: * * Notification that reconfiguring the server is done. */ STDMETHOD(ReconfigServerDone) (THIS_ HX_RESULT res, IHXBuffer** pInfo, UINT32 ulNumInfo) PURE;};/* * * Interface: * * IHXServerReconfigNotification * * Purpose: * * Register with the server that you want notification when a reconfig * request comes in and want/need to take part in the reconfiguration. This * is used when you have configuration info outside the server config file * which needs to be re-initialized. * * * IID_IHXServerReconfigNotification: * * {00000007-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXServerReconfigNotification, 0x00000007, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXServerReconfigNotificationDECLARE_INTERFACE_(IHXServerReconfigNotification, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /************************************************************************ * IHXServerReconfigNotification::WantReconfigNotification * * Purpose: * * Tell the server that you want reconfig notification. */ STDMETHOD(WantReconfigNotification) (THIS_ IHXWantServerReconfigNotification* pResponse) PURE; /************************************************************************ * IHXServerReconfigNotification::CancelReconfigNotification * * Purpose: * * Tell the server that you no longer want reconfig notification. */ STDMETHOD(CancelReconfigNotification) (THIS_ IHXWantServerReconfigNotification* pResponse) PURE;};/* * * Interface: * * IHXWantServerReconfigNotification * * Purpose: * * Tell user that the server got a reconfig request and it is time to * do your reconfiguration. NOTE: You should not need this if all of your * configuration is stored in the config file; that is taken care of through * IHXActiveRegistry. * * IID_IHXWantServerReconfigNotification: * * {00000008-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXWantServerReconfigNotification, 0x00000008, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXWantServerReconfigNotificationDECLARE_INTERFACE_(IHXWantServerReconfigNotification, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /************************************************************************ * IHXWantServerReconfigNotification::ServerReconfig * * Purpose: * * Notify user that a server reconfig request had come in and it * is now your turn to do external (not server config) reconfiguration.* */ STDMETHOD(ServerReconfig) (THIS_ IHXReconfigServerResponse* pResponse) PURE;};// $Private:DEFINE_GUID(IID_IHXResolverExec, 0x00000009, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXResolverExecDECLARE_INTERFACE_(IHXResolverExec, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; STDMETHOD(ResolverExec) (THIS_ int readfd, int writefd) PURE;};/**************************************************************************** * * Interface: * * IHXFastAlloc * * Purpose: * * Basic memory management interface. * * IID_IHXFastAlloc: * * {0000000a-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXFastAlloc, 0x0000000a, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXFastAllocDECLARE_INTERFACE_(IHXFastAlloc, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXFastAlloc methods */ STDMETHOD_(void*,FastAlloc) (THIS_ UINT32 /*IN*/ count) PURE; STDMETHOD_(void,FastFree) (THIS_ void* /*IN*/ pMem) PURE;};#define FAST_CACHE_MEM\ void* operator new(size_t size, IHXFastAlloc* pMalloc = NULL)\ {\ void* pMem;\ if (pMalloc)\ {\ pMem = pMalloc->FastAlloc(size + sizeof(IHXFastAlloc*));\ }\ else\ {\ pMem = (void *)::new char [size + sizeof(IHXFastAlloc*)];\ }\ *(IHXFastAlloc**)pMem = pMalloc;\ return ((unsigned char*)pMem + sizeof(IHXFastAlloc*));\ }\\ void operator delete(void* pMem)\ {\ pMem = (unsigned char*)pMem - sizeof(IHXFastAlloc*);\ IHXFastAlloc* pMalloc = *(IHXFastAlloc**)pMem;\ if (pMalloc)\ {\ pMalloc->FastFree((char *)pMem);\ }\ else\ {\ delete[] (char *)pMem;\ }\ }\/**************************************************************************** * * Interface: * * IHXAccurateClock * * Purpose: * * High Accuracy, Cheap (no system-call) gettimeofday() * [ Only available on some Unix platforms, except QI can fail!! ] * * IID_IHXAccurateClock: * * {0000000b-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXAccurateClock, 0x0000000b, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXAccurateClockDECLARE_INTERFACE_(IHXAccurateClock, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXAccurateClock methods */ STDMETHOD_(HXTimeval,GetTimeOfDay) (THIS) PURE;};// $EndPrivate.#endif /*_HXCOMM_H_*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?