📄 plghand2.h
字号:
char* PropVal2,
char* PropName3,
char* PropVal3,
REF(UINT32) unIndex);
/************************************************************************
* Method:
* IHXPlugin2Handler::FindReturnPluginUsingStrings
*
* Purpose:
* Finds a plugin which matches the set of values given. A Plugin
* instance is returned.
* NOTE: that a max of two values may be given.
*/
STDMETHOD(FindPluginUsingStrings) (THIS_ char* PropName1,
char* PropVal1,
char* PropName2,
char* PropVal2,
char* PropName3,
char* PropVal3,
REF(IUnknown*) pUnk);
/************************************************************************
* Method:
* IHXPlugin2Handler::FindImplementationFromClassID
*
* Purpose:
* Finds a CommonClassFactory plugin which supports the
* ClassID given. An instance of the Class is returned.
*/
STDMETHOD(FindImplementationFromClassID)
(
REFGUID GUIDClassID,
REF(IUnknown*) pIUnknownInstance
);
/************************************************************************
* Method:
* IHXPlugin2Handler::Close
*
* Purpose:
* A function which performs all of the functions of delete.
*
*
*/
STDMETHOD(Close) (THIS);
/************************************************************************
* Method:
* IHXPlugin2Handler::SetRequiredPlugins
*
* Purpose:
* This function sets the required plugin list
*
*
*/
STDMETHOD(SetRequiredPlugins) (THIS_ const char** ppszRequiredPlugins);
/************************************************************************
* Method:
* IHXPlugin2HandlerEnumeratorInterface::GetNumPluginsSupporting
*
* Purpose: Required for the plugin enumerator.
*
*
*
*/
STDMETHOD(GetNumPluginsSupporting) (THIS_ REFIID iid, REF(UINT32) nNumPlugins);
/************************************************************************
* Method:
* IHXPlugin2HandlerEnumeratorInterface::GetPluginIndexSupportingIID
*
* Purpose: Required for the plugin enumerator.
*
*
*
*/
STDMETHOD(GetPluginIndexSupportingIID) (THIS_ REFIID iid, UINT32 nPluginIndex, REF(UINT32) nIndexOut);
/************************************************************************
* Method:
* IHXPlugin2HandlerEnumeratorInterface::AddSupportedIID
*
* Purpose: Required for the plugin enumerator.
*
*
*
*/
STDMETHOD(AddSupportedIID) (THIS_ REFIID iid);
/************************************************************************
* Method:
* IHXPluginHandler3::RegisterContext
*
* Purpose:
* Sets up the context without loading any plugin info
*
*/
STDMETHOD( RegisterContext )( THIS_ IUnknown* pContext );
/************************************************************************
* Method:
* IHXPluginHandler3::AddPluginMountPoint
*
* Purpose:
*
*/
STDMETHOD( AddPluginMountPoint )( THIS_ const char* pName, UINT32 majorVersion,
UINT32 minorVersion, IHXBuffer* pPath );
/************************************************************************
* Method:
* IHXPluginHandler3::RefreshPluginMountPoint
*
* Purpose:
*
*/
STDMETHOD( RefreshPluginMountPoint )( THIS_ const char* pName );
/************************************************************************
* 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);
//------------------------------------ IHXPluginDatabase interface methods
STDMETHOD( AddPluginIndex ) ( THIS_ const char* pKeyName, EPluginIndexType indexType, BOOL bScanExisting );
STDMETHOD( RemovePluginIndex )( THIS_ const char* pKeyName );
STDMETHOD( FindPluginInfoViaIndex )( THIS_ const char* pKeyName, const void* pValue, IHXValues** ppIInfo );
STDMETHOD( FindPluginSetViaIndex )( THIS_ const char* pKeyName, const void* pValue, IHXPluginSearchEnumerator** ppIEnumerator );
STDMETHOD( CreatePluginViaIndex )( THIS_ const char* pKeyName, const void* pValue, IUnknown** ppIUnkPlugin, IUnknown* pIUnkOuter );
//------------------------------------ Class Methods
Errors Stat(const char* pszFilename, struct stat* pStatBuffer);
IHXBuffer* ChecksumFile(char* pszFileName, IHXBuffer* pPathBuffer);
IHXBuffer* ConvertToAsciiString(char* pBuffer, UINT32 nBuffLen);
IHXBuffer* GetPluginDir();
IHXPreferences* GetPreferences();
CHXSimpleList& GetCanUnload2DllList() { return( m_CanUnload2DllList ); }
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;
#if !defined(HELIX_CONFIG_NOSTATICS)
static BOOL zm_bFasterPrefs;
#else
static const BOOL zm_bFasterPrefs;
#endif
HX_RESULT AddtoLRU(Plugin2Handler::PluginDLL* pDLL);
HX_RESULT RemoveFromLRU(Plugin2Handler::PluginDLL* pDLL);
HX_RESULT UpdateCache();
HX_RESULT ReloadPluginsNoPropagate();
HX_RESULT ReloadPluginsNoPropagate( PluginMountPoint* pMountPoint );
private:
static HX_RESULT VerifyChecksum_ (const char*);
void UnloadDeadDLLs(void);
IHXScheduler* m_pIScheduler;
CallbackHandle m_hScheduler;
enum
{
// kPingDuration = 1000 // USE ONLY FOR TESTING
kPingDuration = 60000 // 60000ms = 1 minute
};
IHXBuffer* GetDefaultPluginDir();
void WriteSupportedGUIDs();
HX_RESULT ConnectPluginToDLL(Plugin2Handler::Plugin * pPlugin);
Errors LoadDLL(char* pszDllName, PluginMountPoint* pMountPoint);
void LoadPluginsFromComponentDLL( Plugin2Handler::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);
UINT32 GetNumSupportedGUIDs();
HX_RESULT RemoveDLLFromGUIDSupportLists(const char* pszFileName);
HX_RESULT GetGUIDForIndex(UINT32 nIndex, REF(CHXString) sGUID);
HX_RESULT AddSupportForGUID(const char* pszGUID, PluginDLL* pDLL, UINT32 nIndexInDLL);
BOOL GetPluginFileInfo( REF(char*) pszCurrentPos,
REF(char*) pszName,
REF(char*) pszCheckSum,
REF(BOOL) bFactory,
REF(int) nDLLSize,
REF(int) nNumberPlugins);
BOOL GetNameValuePair(REF(char*) pszCurrentPos, REF(char*) pszName, REF(char*) pszValue);
BOOL GetPluginFileInfo(REF(char*) pszCurrentPos, REF(Plugin2Handler::Plugin*) pPlugin);
BOOL GetNextSupportingFile(REF(char*) pszCurrentPos, REF(char*) pszFileName, REF(UINT32) index);
BOOL GetGUIDInfo(REF(char*) pszCurrentPos, PluginMountPoint* pMountPoint, REF(char*) pszGUID, REF(CHXSimpleList*) pList);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -