接口设计方案.docx
《接口设计方案.docx》由会员分享,可在线阅读,更多相关《接口设计方案.docx(14页珍藏版)》请在冰豆网上搜索。
![接口设计方案.docx](https://file1.bdocx.com/fileroot1/2022-10/27/301a6cdf-a1c0-46d2-b683-5f2bd69c3c86/301a6cdf-a1c0-46d2-b683-5f2bd69c3c861.gif)
接口设计方案
接口设计方案
一、设计方案
由甲方调用监控模块,控制监控模块的启停、设置策略等,通过甲方调用监控模块DLL
的接口将监控策略告知监控模块,由监控模块监控相关操作行为,并根据策略配置调用甲方
提供的文件内容检查模块,对相关文件进行文件内容筛查,来确定文件是否是涉密文件。
同
时通过甲方程序调用乙方监控模块DLL接口获取监控结果。
甲方文件内
容检查模块
甲方
监控模块
监控
程序
DLL
一、接口部分(监控模块DLL,乙方提供)
************************************
Function:
Init
Description:
初始化操作
Input:
无
Output:
无
Return:
true:
成功,false:
失败
Other:
***********************************
1、boolInit();
************************************
Function:
SetRule
Description:
设置监控规则
Input:
char*pRule:
监控规则,XML格式,见附1
Output:
无
Return:
true:
成功,false:
失败
Other:
***********************************
2、boolSetRule(char*pRule);
************************************
Function:
Start
Description:
设置完规则,启动监控规则生效
Input:
无
Output:
无
Return:
true:
成功,false:
失败
Other:
***********************************
3、boolStart();
************************************
Function:
WaitData
Description:
实时等待获取监控数据可以是一条可以是多条。
返回监控结果见
附
2
Input:
无
Output:
int&nCount返回总条数,char**&pData返回数据。
Return:
-1.异常0.成功获取数据1.结束/停止(其他地方调用
Stop接口停止)
Other:
建议乙方内部实现用信号、内核事件等处理方式。
***********************************
4、intWaitData(int&nCount,char**&pData);
甲方调用伪代码:
ThreadFunc()//实时线程
{
While(TRUE)
{
char**pData=NULL;
intnCount=0;
intnRet=WaitData(nCount,pData);//等待一条或多条数据时返回,没有数据就等待。
switch(nRet)
{
-1.异常continue;
0.成功获取数据pData[0]、pData[1]、⋯⋯
1.结束/停止(其他地方调用Stop停止)Return;
}
FreeData(pData);
}
}
************************************
Function:
FreeData
Description:
释放数据内存接口,对应
Input:
intnCount要释放的元素数量,
WaitData函数
char**要释放的数据
Output:
无
Return:
无
Other:
***********************************
5、FreeData(intnCount,char**pData);
************************************
Function:
Stop
Description:
停止监控,监控规则失效
Input:
无
Output:
无
Return:
true:
成功,false:
失败
Other:
***********************************
6、boolStop();
************************************
Function:
UnInit
Description:
程序退出
Input:
无
Output:
无
Return:
true:
成功,false:
失败
Other:
***********************************
7、UnInit();
二、文件检查模块
/*********************接口说明***************************
//创建文件检查实例
void(*PCreateFileCheckerObject)(IFileChecker**pObject);
//释放文件检查实例
void(*PReleaseFileCheckerObject)(IFileChecker**pObject);
多规则多种关键字组合,则创建多个实例
-----------------------IFileChecker--------------------------
//初始化
voidInit(constchar*pName,constchar*pKeyWords);
pName:
实例名称随意。
但多个实例并行时不能重复;
pKeyWords:
关键词组。
格式:
"机密;秘密;绝密;"
//结束调用
voidUnInit();
//获取文件信息
boolGetFileInfo(constchar*pFilePath,TipsFileBlock*pTFB);
pFilePath:
文件路径
pTFB:
返回数据结构
//释放文件信息
voidFreeFileInfo(TipsFileBlock*pTFB);
pTFB:
需要释放的数据结构
//停止当前的文件检查
voidStopCheck();
*************************************************************/
//------------------------------(.h)
头文件如下
-----------------------------
#pragmaonce
structTipsFileBlock
{
char*pKeyWords;//关键字
char*pSecretLevel
char*pFileBlock;//
;
//密级:
秘密、机密、绝密中的一个
片段
};
classIFileChecker
{
public:
virtualvoid
Init
(constchar
*pKeyWords)=0;
virtualboolGetFileInfo(constchar*pFilePath,TipsFileBlock*pTFB)=0;virtualvoidFreeFileInfo(TipsFileBlock*pTFB)=0;virtualvoidUnInit()=0;
virtualvoidStopCheck()=0;
};
typedefvoid(*PCreateFileCheckerObject)(IFileChecker**pObject);typedefvoid(*PReleaseFileCheckerObject)(IFileChecker**pObject);
//------------------------------头文件end-----------------------------
//示例
//--------------获取接口类-----------------
HMODULEhDll=LoadLibrary(_T("TipsFileChecker.dll"));
if(NULL==hDll)return;
PCreateFileCheckerObjectpCreateFileChecker=
(PCreateFileCheckerObject)GetProcAddress(hDll,"CreateFileCheckerObject");
PReleaseFileCheckerObjectpReleaseFileChecker=
(PReleaseFileCheckerObject)GetProcAddress(hDll,"ReleaseFileCheckerObject");
if(NULL==pCreateFileChecker||NULL==pReleaseFileChecker)return;
IFileChecker*pFileChecker=NULL;
pCreateFileChecker(&pFileChecker);
//---------------
初始化提供关键字
------------
CStringAstrName=
"FeiMi1"
;//多个实例名称任意,但不同。
例如:
FeiMi2、FeiMi3、⋯
CStringAstrKeyWords="秘密;机密;绝密;";
pFileChecker
->Init
(strName,strKeyWords);
//----------------
文件命中片段提取
---------
CStringAstrFilePath
="C:
\\123.docx"
;
TipsFileBlock
fb;
pFileChecker
->GetFileInfo
(strFilePath
&fb);
//....
pFileChecker
->FreeFileInfo
(&fb);
//----------------------
结束释放
----------------
pFileChecker
->StopCheck();
pFileChecker
->UnInit();
pReleaseFileChecker(&pFileChecker);
FreeLibrary(hDll);
三、附
附1:
规则XML:
"Rule">