📄 hxplugn.h
字号:
/************************************************************************ * Method: * IHXPlugin2Handler::FindImplementationFromClassID * * Purpose: * Finds a CommonClassFactory plugin which supports the * ClassID given. An instance of the Class is returned. */ STDMETHOD(FindImplementationFromClassID) ( THIS_ REFGUID GUIDClassID, REF(IUnknown*) pIUnknownInstance ) PURE; /************************************************************************ * Method: * IHXPlugin2Handler::Close * * Purpose: * A function which performs all of the functions of delete. * * */ STDMETHOD(Close) (THIS) PURE; /************************************************************************ * Method: * IHXPlugin2Handler::SetRequiredPlugins * * Purpose: * This function sets the required plugin list * * */ STDMETHOD(SetRequiredPlugins) (THIS_ const char** ppszRequiredPlugins) PURE;};// $Private:/**************************************************************************** * * Interface: * * IHXPluginHandler3 * * Purpose: * * Extensions to the IHXPlugin2Handler so we can interact with the * Gemini Object Broker * * IID_IHXPluginHandler3: * * {32B19771-2299-11d4-9503-00902790299C} * */DEFINE_GUID( IID_IHXPluginHandler3, 0x32b19771, 0x2299, 0x11d4, 0x95, 0x3, 0x0, 0x90, 0x27, 0x90, 0x29, 0x9c);#undef INTERFACE#define INTERFACE IHXPluginHandler3DECLARE_INTERFACE_(IHXPluginHandler3, IUnknown){ /************************************************************************ * Method: * IHXPluginHandler3::RegisterContext * * Purpose: * Sets up the context without loading any plugin info * */ STDMETHOD( RegisterContext )( THIS_ IUnknown* pContext ) PURE; /************************************************************************ * Method: * IHXPluginHandler3::AddPluginMountPoint * * Purpose: * Sets up the plugins stored in this preferences object * */ STDMETHOD( AddPluginMountPoint )( THIS_ const char* pName, UINT32 majorVersion, UINT32 minorVersion, IHXBuffer* pPath ) PURE; /************************************************************************ * Method: * IHXPluginHandler3::RefreshPluginMountPoint * * Purpose: * Refreshes plugin information associated with this * preferences object */ STDMETHOD( RefreshPluginMountPoint )( THIS_ const char* pName ) PURE; /************************************************************************ * Method: * IHXPluginHandler3::RemovePluginMountPoint * * Purpose: * Removes plugins associated with this preferences object */ STDMETHOD( RemovePluginMountPoint )( THIS_ const char* pName ) PURE; /************************************************************************ * 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 ) PURE; /************************************************************************ * 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 ) PURE; /************************************************************************ * Method: * IHXPluginHandler3::FindGroupOfPluginsUsingValues * * Purpose: * Builds a collection of plugins that match the criteria * */ STDMETHOD(FindGroupOfPluginsUsingValues)(THIS_ IHXValues* pValues, REF(IHXPluginSearchEnumerator*) pIEnumerator) PURE; /************************************************************************ * 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) PURE; /************************************************************************ * Method: * IHXPluginHandler3::GetPlugin * * Purpose: * Allocates a plugin based on index. Supports aggregation * */ STDMETHOD(GetPlugin)(THIS_ ULONG32 ulIndex, REF(IUnknown*) pIUnkResult, IUnknown* pIUnkOuter ) PURE; /************************************************************************ * Method: * IHXPluginHandler3::FindPluginUsingValues * * Purpose: * Allocates a plugin based on criteria. Supports aggregation * */ STDMETHOD(FindPluginUsingValues)(THIS_ IHXValues*, REF(IUnknown*) pIUnkResult, IUnknown* pIUnkOuter ) PURE; /************************************************************************ * 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 ) PURE; /************************************************************************ * 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 ) PURE; /************************************************************************ * Method: * IHXPluginHandler3::UnloadPackageByName * * Purpose: * finds a package from the name passed in and attempts to unload it. */ STDMETHOD (UnloadPackageByName) (char const* pName) PURE;};// $EndPrivate.// $Private:/**************************************************************************** * * Interface: * * IHXPluginDatabase * * Purpose: * * Extensions to the plugin handler for optimized searching * on a single key * * IID_IHXPluginDatabase: * * {C2C65401-A478-11d4-9518-00902790299C} * */enum EPluginIndexType{ kIndex_StringType, kIndex_BufferType, kIndex_GUIDType, kIndex_MVStringType, kIndex_NumTypes};DEFINE_GUID( IID_IHXPluginDatabase, 0xc2c65401, 0xa478, 0x11d4, 0x95, 0x18, 0x0, 0x90, 0x27, 0x90, 0x29, 0x9c);#undef INTERFACE#define INTERFACE IHXPluginDatabaseDECLARE_INTERFACE_(IHXPluginDatabase, IUnknown){ /************************************************************************ * Method: * IHXPluginDatabase::AddPluginIndex * * Purpose: * Create a new index in the plugin-handler * */ STDMETHOD( AddPluginIndex ) ( THIS_ const char* pKeyName, EPluginIndexType indexType, BOOL bScanExisting ) PURE; /************************************************************************ * Method: * IHXPluginDatabase::RemovePluginIndex * * Purpose: * Remove an index from the plugin handler * */ STDMETHOD( RemovePluginIndex )( THIS_ const char* pKeyName ) PURE; /************************************************************************ * Method: * IHXPluginDatabase::FindPluginInfoViaIndex * * Purpose: * Look up a plugin's info based on a single attribute. Use an index if * possible, otherwise defer to a linear search * */ STDMETHOD( FindPluginInfoViaIndex )( THIS_ const char* pKeyName, const void* pValue, IHXValues** ppIInfo ) PURE; /************************************************************************ * Method: * IHXPluginDatabase::FindPluginSetViaIndex * * Purpose: * // XXXND Should this take pValue? Should it just return a list from an index? * Find a set of plugins matching a single attribute * */ STDMETHOD( FindPluginSetViaIndex )( THIS_ const char* pKeyName, const void* pValue, IHXPluginSearchEnumerator** ppIEnumerator ) PURE; /************************************************************************ * Method: * IHXPluginDatabase::FindPluginViaIndex * * Purpose: * Create a plugin based on a simple attribute. * */ STDMETHOD( CreatePluginViaIndex )( THIS_ const char* pKeyName, const void* pValue, IUnknown** ppIUnkPlugin, IUnknown* pIUnkOuter ) PURE;};// $EndPrivate.// $Private:/**************************************************************************** * * Interface: * * IHXProxiedPugin * * Purpose: * * Provides The IHXPlugin actually being used. * * IID_IHXProxiedPlugin: * * {00000C10-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXProxiedPlugin, 0x00000C0A, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXProxiedPluginDECLARE_INTERFACE_(IHXProxiedPlugin, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXProxiedPlugin methods */ /************************************************************************ * Method: * IHXProxiedPlugin::GetProxiedPlugin * Purpose: * Gets the Actual Plugin being used... */ STDMETHOD(GetProxiedPlugin)(THIS_ REF(IHXPlugin*) /*OUT*/ pPlugin) PURE;};// $EndPrivate.// $Private:/**************************************************************************** * * Component plugin property names * * These attribute names are standard. * * ComponentCLSID maps to an IHXBuffer value that contains the * binary CLSID for the component * * ComponentName maps to a string value that contains the tag or * actor name for the component * */#define PLUGIN_COMPONENT_CLSID "ComponentCLSID"#define PLUGIN_COMPONENT_NAME "ComponentName"/**************************************************************************** * * Interface: * * IHXComponentPlugin * * Purpose: * * Allows the plugin handler to iterator over multiple plugins in a DLL * * {F8A31571-22AC-11d4-9503-00902790299C} * */DEFINE_GUID( IID_IHXComponentPlugin, 0xf8a31571, 0x22ac, 0x11d4, 0x95, 0x3, 0x0, 0x90, 0x27, 0x90, 0x29, 0x9c);#undef INTERFACE#define INTERFACE IHXComponentPluginDECLARE_INTERFACE_(IHXComponentPlugin, IUnknown){ /* * IHXComponentPlugin methods */ /************************************************************************ * Method: * IHXComponentPlugin::GetNumberComponents * Purpose: */ STDMETHOD_(UINT32, GetNumComponents)(THIS) PURE; /************************************************************************ * Method: * IHXComponentPlugin::GetPackageName * Purpose: */ STDMETHOD_(char const*, GetPackageName)(THIS) CONSTMETHOD PURE; /************************************************************************ * Method: * IHXComponentPlugin::GetComponentInfoAtIndex * Purpose: */ STDMETHOD(GetComponentInfoAtIndex) (THIS_ UINT32 /*IN*/ nIndex, REF(IHXValues*) /*OUT*/ pInfo) PURE; /************************************************************************ * Method: * IHXComponentPlugin::CreateComponentInstance * Purpose: */ STDMETHOD(CreateComponentInstance)(THIS_ REFCLSID /*IN*/ rclsid, REF(IUnknown*) /*OUT*/ ppUnknown, IUnknown* /*IN*/ pUnkOuter) PURE;};/**************************************************************************** * * Interface: * * IHXPluginNamespace * * Purpose: * * Allows the plugin handler to retrieve a plugin's namespace * * {F09E8891-8E2D-11d4-82DB-00D0B74C2D25} * */DEFINE_GUID(IID_IHXPluginNamespace, 0xf09e8891, 0x8e2d, 0x11d4, 0x82, 0xdb, 0x0, 0xd0, 0xb7, 0x4c, 0x2d, 0x25);#undef INTERFACE#define INTERFACE IHXPluginNamespaceDECLARE_INTERFACE_(IHXPluginNamespace, IUnknown){ /************************************************************************ * Method: * IHXPluginNamespace::GetPluginNamespace * Purpose: */ STDMETHOD(GetPluginNamespace) (THIS_ REF(IHXBuffer*) /*OUT*/ pBuffer) PURE;};// $EndPrivate.#endif /* _HXPLUGN_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -