Skip to content

Commit

Permalink
插件接口精简
Browse files Browse the repository at this point in the history
  • Loading branch information
zhongyang219 committed Aug 26, 2021
1 parent 8ea3aca commit 87ea7a7
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 17 deletions.
1 change: 0 additions & 1 deletion PluginDemo/PluginDemo.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
extern "C" {
#endif

__declspec(dllexport) int TMPluginGetItemNum();
__declspec(dllexport) IPluginItem* TMPluginCreateInstance(int index);
__declspec(dllexport) void TMPluginInfoRequired();

Expand Down
1 change: 1 addition & 0 deletions PluginDemo/PluginDemo.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\include\PluginInterface.h" />
<ClInclude Include="DataManager.h" />
<ClInclude Include="framework.h" />
<ClInclude Include="pch.h" />
Expand Down
3 changes: 3 additions & 0 deletions PluginDemo/PluginDemo.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@
<ClInclude Include="DataManager.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="..\include\PluginInterface.h">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="dllmain.cpp">
Expand Down
5 changes: 0 additions & 5 deletions PluginDemo/dllmain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,6 @@ BOOL APIENTRY DllMain( HMODULE hModule,
return TRUE;
}

int TMPluginGetItemNum()
{
return 2;
}

IPluginItem* TMPluginCreateInstance(int index)
{
switch (index)
Expand Down
12 changes: 7 additions & 5 deletions TrafficMonitor/PluginManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,23 @@ void CPluginManager::LoadPlugins()
continue;
}
//获取函数的入口地址
pfTMPluginGetItemNum TMPluginGetItemNum = (pfTMPluginGetItemNum)::GetProcAddress(plugin_info.plugin_module, "TMPluginGetItemNum");
pfTMPluginCreateInstance TMPluginCreateInstance = (pfTMPluginCreateInstance)::GetProcAddress(plugin_info.plugin_module, "TMPluginCreateInstance");
plugin_info.MPluginInfoRequired = (pfTMPluginInfoRequired)::GetProcAddress(plugin_info.plugin_module, "TMPluginInfoRequired");
if (TMPluginGetItemNum == NULL || TMPluginCreateInstance == NULL || plugin_info.MPluginInfoRequired == NULL)
if (TMPluginCreateInstance == NULL || plugin_info.MPluginInfoRequired == NULL)
{
plugin_info.state = PluginState::PS_FUNCTION_GET_FAILED;
plugin_info.error_code = GetLastError();
continue;
}
int item_num = TMPluginGetItemNum();
for (int i = 0; i < item_num; i++)
int index = 0;
while (true)
{
std::shared_ptr<IPluginItem> item = std::shared_ptr<IPluginItem>(TMPluginCreateInstance(i));
std::shared_ptr<IPluginItem> item = std::shared_ptr<IPluginItem>(TMPluginCreateInstance(index));
if (item == nullptr)
break;
plugin_info.plugin_items.push_back(item);
m_plugins.push_back(item);
index++;
}
}
}
Expand Down
1 change: 0 additions & 1 deletion TrafficMonitor/PluginManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
#include "PluginInterface.h"
#include <memory>

typedef int (*pfTMPluginGetItemNum)();
typedef IPluginItem* (*pfTMPluginCreateInstance)(int);
typedef void (*pfTMPluginInfoRequired)();

Expand Down
9 changes: 4 additions & 5 deletions include/PluginInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,12 @@ class IPluginItem
/*
* 注意:插件dll需要导出如下函数
*
* int TMPluginGetItemNum();
* 一个插件dll可以提供多个实现IPluginItem接口的对象,对应多个显示项目。
* TMPluginGetItemNum函数返回对象的个数。
*
* IPluginItem* TMPluginCreateInstance(int index);
* TMPluginCreateInstance函数用于创建对象,返回IPluginItem接口的指针,
* 参数index为对象的索引,它的值必须大于或等于0且小于TMPluginGetItemNum的返回值。
* 一个插件dll可以提供多个实现IPluginItem接口的对象,对应多个显示项目。
* 参数index为对象的索引,它的值必须大于或等于0且小于IPluginItem接口的对象的个数。
* 例如插件提供两个显示项目,则当index等于0或1时返回对应IPluginItem接口的对象,
* 其他值时必须返回空指针。
*
* void TMPluginInfoRequired();
* 主程序会每隔一定时间调用此函数,插件需要在函数里获取一次监控的数据
Expand Down

0 comments on commit 87ea7a7

Please sign in to comment.