⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basehand.h

📁 linux下的一款播放器
💻 H
📖 第 1 页 / 共 2 页
字号:
    /************************************************************************     *	Method:     *	    IHXPluginHandler3::RemovePluginMountPoint     *     *	Purpose:     *     */    STDMETHOD( RemovePluginMountPoint )( THIS_ const char* pName );    /************************************************************************     *	Method:     *	    IHXPluginHandler3::FindImplementationFromClassID     *     *	Purpose:     *	    Finds a CommonClassFactory plugin which supports the     *	    ClassID given. An instance of the Class is returned.     *	    The plugin instance is initialized with the specified     *	    context     */    STDMETHOD( FindImplementationFromClassID )( THIS_ REFGUID GUIDClassID,						REF(IUnknown*) pIUnknownInstance,						IUnknown* pIUnkOuter, IUnknown* pContext );    /************************************************************************     *	Method:     *	    IHXPluginHandler3::FindCLSIDFromName     *     *	Purpose:     *     *	    Maps a text name to a CLSID based on information from     *	    component plugins     */    STDMETHOD( FindCLSIDFromName )( THIS_ const char* pName, REF(IHXBuffer*) pCLSID );    /************************************************************************     *	Method:     *	    IHXPluginHandler3::FindGroupOfPluginsUsingValues     *     *	Purpose:     *	    Builds a collection of plugins that match the criteria     *     */    STDMETHOD(FindGroupOfPluginsUsingValues)(THIS_ IHXValues* pValues,				    REF(IHXPluginSearchEnumerator*) pIEnumerator);    /************************************************************************     *	Method:     *	    IHXPluginHandler3::FindGroupOfPluginsUsingStrings     *     *	Purpose:     *	    Builds a collection of plugins that match the criteria     *     */    STDMETHOD(FindGroupOfPluginsUsingStrings)(THIS_ char* PropName1,				    char* PropVal1,				    char* PropName2,				    char* PropVal2,				    char* PropName3,				    char* PropVal3,				    REF(IHXPluginSearchEnumerator*) pIEnumerator);    /************************************************************************     *	Method:     *	    IHXPluginHandler3::GetPlugin     *     *	Purpose:     *	    Allocates a plugin based on index.  Supports aggregation     *     */    STDMETHOD(GetPlugin)(THIS_ ULONG32 ulIndex,				    REF(IUnknown*) pIUnkResult,				    IUnknown* pIUnkOuter );    /************************************************************************     *	Method:     *	    IHXPluginHandler3::FindPluginUsingValues     *     *	Purpose:     *	    Allocates a plugin based on criteria.  Supports aggregation     *     */    STDMETHOD(FindPluginUsingValues)(THIS_ IHXValues*,				    REF(IUnknown*) pIUnkResult,				    IUnknown* pIUnkOuter );    /************************************************************************     *	Method:     *	    IHXPluginHandler3::FindPluginUsingStrings     *     *	Purpose:     *	    Allocates a plugin based on criteria.  Supports aggregation     *     */    STDMETHOD(FindPluginUsingStrings)(THIS_ char* PropName1,				    char* PropVal1,				    char* PropName2,				    char* PropVal2,				    char* PropName3,				    char* PropVal3,				    REF(IUnknown*) pIUnkResult,				    IUnknown* pIUnkOuter );    /************************************************************************     *	Method:     *	    IHXPluginHandler3::UnloadPluginFromClassID     *     *	Purpose:     *	    Finds a plugin from the classID and unloads it if it supports CanUnload2	 *		and returns TRUE in response to query     */    STDMETHOD( UnloadPluginFromClassID )( THIS_ REFGUID GUIDClassID );    /************************************************************************     *	Method:     *	    IHXPluginHandler3::UnloadPackageByName     *     *	Purpose:     *	    finds a package from the name passed in and attempts to unload it.     */    STDMETHOD (UnloadPackageByName) (const char* pName);    //------------------------------------ Class Methods    Errors		    Stat(const char* pszFilename, struct stat* pStatBuffer);    IHXBuffer*		    ChecksumFile(char* pszFileName, IHXBuffer* pPathBuffer);    IHXBuffer*		    ConvertToAsciiString(char* pBuffer, UINT32 nBuffLen);    HX_RESULT		    FindGroupOfPluginsUsingStrings(char* PropName1,						    char* PropVal1,						    char* PropName2,						    char* PropVal2,						    char* PropName3,						    char* PropVal3,						    REF(CPluginEnumerator*) pEnumerator);    HX_RESULT		    FindGroupOfPluginsUsingValues(IHXValues* pValues,						    REF(CPluginEnumerator*) pEnumerator);    void		    ReportError( UINT8 severity, const char* pDLLName, const char* pDesc );    static const char* const	zm_pszFileExtension;    static const char* const	zm_pszDirectorySeperator;    static const char* const	zm_pszValueSeperator;    static const char* const	zm_pszListStart;    static const char* const	zm_pszListEnd;    static const char* const	zm_pszValueSeperator2;    static const char   	zm_cDirectorySeperator;    static const char* const	zm_pszKeyNameRegKey;    static const char* const	zm_pszRegKeySeperator;    HX_RESULT ReloadPluginsNoPropagate();    HX_RESULT ReloadPluginsNoPropagateWithFindFile(               PluginMountPoint* pMountPoint, CFindFile* pFileFinder,               IHXBuffer* pPathBuffer, char* pszPluginDir);    HX_RESULT ReloadPluginsNoPropagate( PluginMountPoint* pMountPoint );private:    void UnloadDeadDLLs(void);    Errors		    LoadDLL(char* pszDllName, PluginMountPoint* pMountPoint);    void		    LoadPluginsFromComponentDLL( BaseHandler::PluginDLL* pPluginDll,							IHXComponentPlugin* pIIterator );    // Methods to determine out of data DLLs    BOOL		    FindPlugin(const char* pFileName, UINT32 nDLLIndex, REF(UINT32) nIndex);    HX_RESULT		    AddToValues(IHXValues*, char* pPropName, char* pPropVal, eValueTypes eValueType);    HX_RESULT		    RefreshPluginInfo( PluginMountPoint* pMountPoint );    CHXMapStringToOb	    m_MountPoints;    CHXSimpleList	    m_PluginDLLList;    CHXSimpleList	    m_PluginList;    CHXSimpleList	    m_MiscDLLList;    CHXMapStringToOb	    m_GUIDtoSupportList;    IUnknown*		    m_pContext;    class PluginMountPoint    {    public:	PluginMountPoint( BaseHandler* pContext, const char* pName,			  UINT32 majorVersion, UINT32 minorVersion,			  IHXBuffer* pPath );	~PluginMountPoint();	STDMETHOD_(ULONG32,AddRef)( THIS );	STDMETHOD_(ULONG32,Release)( THIS );#if !defined(_STATICALLY_LINKED) || defined(HELIX_CONFIG_CONSOLIDATED_CORE)	IHXBuffer* Path();#endif    private:#if !defined(_STATICALLY_LINKED) || defined(HELIX_CONFIG_CONSOLIDATED_CORE)	IHXBuffer* m_pPath;#endif	INT32 m_lRefCount;    };    class PluginDLL : public IUnknown    {    public:	PluginDLL(const char* pszFileName, PluginMountPoint* pMountPoint,		    BaseHandler* pBaseHandler);	~PluginDLL();	/*	 *	IUnknown methods	 */	STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj);	STDMETHOD_(ULONG32,AddRef)	(THIS);	STDMETHOD_(ULONG32,Release)	(THIS);	Errors			Load(IUnknown* pContext);	HX_RESULT		Unload(BOOL safe = TRUE);	BOOL			IsLoaded();	Errors			CreateInstance( IUnknown** ppUnk, UINT32 uIndex );	UINT32			AddDLLReference();	UINT32			ReleaseDLLReference();	// Accessors	void			SetHash(char* phash) {m_hash = phash;}	void			SetFileSize(INT32 nSize) {m_nSizeBites = nSize;}	PluginMountPoint*	GetMountPoint() { return m_pMountPoint; }	IHXBuffer*		GetFileName();	INT32			GetFileSize() { return m_nSizeBites; }	void			SetNamespace(IHXBuffer* pNamespace);	IHXBuffer*		GetNamespace();	const char*		GetHash() { return (const char*) m_hash; }	CHXString const&	GetPackageName () const { return m_packageName; }	UINT32			GetNumPlugins() { return m_NumOfPlugins; }	BOOL			DoesExist() { return m_bDoesExist; }    private:	FPCREATEINSTANCE	m_fpCreateInstance;	FPSHUTDOWN		m_fpShutdown;	FPCANUNLOAD2		m_fCanUnload;	PluginMountPoint*	m_pMountPoint;	IHXBuffer*		m_pFileName;	IHXBuffer*		m_pNamespace;	CHXString		m_packageName;	CHXString		m_hash;	LONG32			m_nSizeBites;	INT32			m_lRefCount;	UINT16			m_NumOfPlugins : 16;	HX_BITFIELD		m_bHas_factory : 1;	HX_BITFIELD		m_bLoaded : 1;	BOOL			m_bDoesExist;	DLLAccess*		m_pDLLAccess;	UINT32			m_nActiveReferences;	BaseHandler*		m_pBaseHandler;    };    class Plugin : public IUnknown    {	public:	STDMETHOD(QueryInterface)	(THIS_					REFIID riid,					void** ppvObj);	STDMETHOD_(ULONG32,AddRef)	(THIS);	STDMETHOD_(ULONG32,Release)	(THIS);	Plugin(IUnknown* pContext);	~Plugin();	// Exposed to the BaseHandler	void                        SetPluginProperty(const char * pszPluginType);	BOOL			    DoesMatch(IHXValues* pValues);	Errors			    GetValuesFromDLL(IHXPlugin* pHXPlugin);	// Creates an instance of the top-level plugin object	Errors			    GetPlugin( REF(IUnknown*) ppUnknown );	// Checks to see if this is a component plugin and does the appropriate indirection	Errors			    GetInstance(REF(IUnknown*) ppUnknown, IUnknown* pIUnkOuter = NULL );	HX_RESULT		    GetPluginInfo(REF(IHXValues*));	IHXBuffer*		    GetFileName();	BOOL			    IsLoaded();	void			    SetInfoNeedsRefresh(BOOL bRefresh) { m_bInfoNeedsRefresh = bRefresh;}	void			    SetDLL(PluginDLL * pPluginDll);	PluginDLL*		    GetDLL() {return m_pPluginDLL;}	void			    SetIndex(UINT16 nIndex);	UINT16			    GetIndex() {return m_nPluginIndex;}	void			    SetPropertyULONG32(char* , char*);	void			    SetPropertyCString(char*, char*);	void			    SetPropertyBuffer(char*, BYTE*, UINT32);	// FIX  This is to support the initialization of component plugins	void InitializeComponentPlugin( IHXPlugin* pIPlugin, IHXValues* pIValues );	// void* because the client doesn't have these	// XXXAH not supported currently...  They were not in the old plugin handler either...	// must be some code in the server that talks directly to this (BLEECH!)	void*			    m_process;    private:	LONG32			    m_lRefCount;	UINT16			    m_nPluginIndex;	PluginDLL*		    m_pPluginDLL;	IHXValues*		    m_pValues;	HX_BITFIELD		    m_bCanUnload : 1;	HX_BITFIELD		    m_bInfoNeedsRefresh : 1;	IUnknown*		    m_pContext;	IHXCommonClassFactory*	    m_pClassFactory;	// Methods to retreive from the DLL	Errors	    GetBasicValues(IHXPlugin* pHXPlugin);	Errors	    GetExtendedValues(IHXPlugin* pHXPlugin);	// Support Functions	HX_RESULT   CatStrings(char** pInStrings,			       REF(IHXBuffer*) pOutBuffer);	BOOL	    AreBufferEqual(IHXBuffer* pBigBuff,				   IHXBuffer* pSmallBuff);	Errors	    CreateWatcher(IUnknown* pUnknown);    };    class OtherDLL    {    public:	    CHXString			m_filename;	    CHXString			m_fileChecksum;	    PluginMountPoint*		m_pMountPoint;    };};class CPluginEnumerator :    public CUnknownIMP,    public IHXPluginSearchEnumerator{public:    CPluginEnumerator();    virtual ~CPluginEnumerator();    DECLARE_UNKNOWN_NOCREATE( CPluginEnumerator )    /*     * IHXPluginSearchEnumerator     */    STDMETHOD_(UINT32, GetNumPlugins)(THIS);    STDMETHOD_(void, GoHead)(THIS);    STDMETHOD(GetNextPlugin)( THIS_ REF(IUnknown*) pIUnkResult,				    IUnknown* pIUnkOuter );    STDMETHOD(GetNextPluginInfo)( THIS_ REF(IHXValues*) pRetValues );    STDMETHOD(GetPluginAt)( THIS_ UINT32 index,				    REF(IUnknown*) pIUnkResult,				    IUnknown* pIUnkOuter );    STDMETHOD(GetPluginInfoAt)( THIS_ UINT32 index,				    REF(IHXValues*) pRetValues );    //---------------- Class methods    void Add(BaseHandler::Plugin* pPlugin);    // FIX This is for backwards compatibility, and should be removed    HX_RESULT GetNext(REF(IUnknown*) pRetUnk);protected:private:    CHXSimpleList   m_ListOfPlugins;    UINT32	    m_nIndex;};#endif /* _BASEHAND_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -