diff --git a/sourcemm/CPlugin.cpp b/sourcemm/CPlugin.cpp index 8e88a9d..66a3cac 100644 --- a/sourcemm/CPlugin.cpp +++ b/sourcemm/CPlugin.cpp @@ -544,6 +544,20 @@ bool CPluginManager::QueryRunning(PluginId id, char *error, size_t maxlength) return pl->m_API->QueryRunning(error, maxlength); } +bool CPluginManager::QueryHandle(PluginId id, void *&handle) +{ + CPlugin *pl = FindById(id); + + if (!pl) + { + return false; + } + + handle = static_cast(pl->m_Lib); + + return true; +} + PluginIter CPluginManager::_begin() { return m_Plugins.begin(); diff --git a/sourcemm/CPlugin.h b/sourcemm/CPlugin.h index 74c8827..e70806c 100644 --- a/sourcemm/CPlugin.h +++ b/sourcemm/CPlugin.h @@ -35,8 +35,9 @@ * M 7: Changed template libraries (2005-08-11) * New loading structure mechanism * New SourceHook version - * C 8: New SourceHook version (2005-12-23) + * 8: New SourceHook version (2005-12-23) * New ISmmAPI additions + * C 9: New ISmmPluginManager additions */ #define PLAPI_MIN_VERSION 7 @@ -86,6 +87,7 @@ namespace SourceMM public: bool Query(PluginId id, const char *&file, Pl_Status &status, PluginId &source); bool QueryRunning(PluginId id, char *error, size_t maxlength); + bool QueryHandle(PluginId id, void *&handle); void AddPluginCvar(ISmmPlugin *api, ConCommandBase *pCvar); void AddPluginCmd(ISmmPlugin *api, ConCommandBase *pCmd); diff --git a/sourcemm/IPluginManager.h b/sourcemm/IPluginManager.h index 9cd0074..913dd6b 100644 --- a/sourcemm/IPluginManager.h +++ b/sourcemm/IPluginManager.h @@ -123,6 +123,15 @@ public: * @return Status value */ virtual bool QueryRunning(PluginId id, char *error, size_t maxlength) =0; + + /** + * @brief Returns the handle of a plugin (OS dependent meaning) + * + * @param id Id of plugin + * @param handle By reference handle of plugin, if any + * @return True if plugin id is valid, false otherwise + */ + virtual bool QueryHandle(PluginId id, void *&handle) =0; }; #endif //_INCLUDE_PLUGINMANAGER_H diff --git a/sourcemm/ISmmPlugin.h b/sourcemm/ISmmPlugin.h index 4aaf953..ac59685 100644 --- a/sourcemm/ISmmPlugin.h +++ b/sourcemm/ISmmPlugin.h @@ -20,7 +20,7 @@ #include #include "ISmmAPI.h" -#define PLAPI_VERSION 8 +#define PLAPI_VERSION 9 #define PLAPI_NAME "ISmmPlugin" class ISmmAPI;