接口设计方案

接口设计方案
接口设计方案

接口设计方案

一、设计方案

由甲方调用监控模块,控制监控模块的启停、设置策略等,通过甲方调用监控模块DLL 的接口将监控策略告知监控模块,由监控模块监控相关操作行为,并根据策略配置调用甲方提供的文件容检查模块,对相关文件进行文件容筛查,来确定文件是否是涉密文件。同时通过甲方程序调用乙方监控模块DLL接口获取监控结果。

一、接口部分(监控模块DLL,乙方提供)

************************************

Function:Init

Description:初始化操作

Input:无

Output:无

Return:true:成功,false:失败

Other:

***********************************

1、bool Init();

************************************

Function:SetRule

Description:设置监控规则

Input:char* pRule:监控规则,XML格式,见附1

Output:无

Return:true:成功,false:失败

Other:

***********************************

2、bool SetRule(char* pRule);

************************************

Function:Start

Description:设置完规则,启动监控规则生效

Input:无

Output:无

Return:true:成功,false:失败

Other:

***********************************

3、bool Start();

************************************

Function:WaitData

Description:实时等待获取监控数据可以是一条可以是多条。返回监控结果见附2

Input:无

Output:int &nCount返回总条数,char**&pData返回数据。

Return:-1.异常0.成功获取数据1.结束/ 停止(其他地方调用Stop接口停止)

Other:建议乙方部实现用信号、核事件等处理方式。

***********************************

4、int WaitData(int &nCount, char**& pData);

甲方调用伪代码:

ThreadFunc()//实时线程

{

While(TRUE)

{

char** pData = NULL;

int nCount = 0;

int nRet = WaitData(nCount,pData);//等待一条或多条数据时返回,没有数据就等待。

switch(nRet)

{

-1.异常continue;

0.成功获取数据pData[0]、pData[1]、……

1.结束/ 停止(其他地方调用Stop停止)Return;

}

FreeData(pData);

}

}

************************************

Function:FreeData

Description:释放数据存接口,对应WaitData函数Input:int nCount 要释放的元素数量,char**要释放的数据Output:无

Return:无

Other:

***********************************

5、FreeData (int nCount ,char** pData);

************************************

Function:Stop

Description:停止监控,监控规则失效

Input:无

Output:无

Return:true:成功,false:失败

Other:

***********************************

6、bool Stop();

************************************

Function:UnInit

Description:程序退出

Input:无

Output:无

Return:true:成功,false:失败

Other:

***********************************

7、UnInit();

二、文件检查模块

/*********************接口说明***************************

//创建文件检查实例

void (*PCreateFileCheckerObject)(IFileChecker **pObject);

//释放文件检查实例

void (*PReleaseFileCheckerObject)(IFileChecker **pObject);

多规则多种关键字组合,则创建多个实例

----------------------- IFileChecker--------------------------

//初始化

void Init(const char *pName, const char *pKeyWords);

pName:实例名称随意。但多个实例并行时不能重复;

pKeyWords: 关键词组。格式:";秘密;绝密;"

//结束调用

void UnInit();

//获取文件信息

bool GetFileInfo(const char *pFilePath, TipsFileBlock *pTFB);

pFilePath:文件路径

pTFB:返回数据结构

//释放文件信息

void FreeFileInfo(TipsFileBlock * pTFB);

pTFB:需要释放的数据结构

//停止当前的文件检查

void StopCheck();

*************************************************************/

//------------------------------(.h)头文件如下----------------------------- #pragmaonce

structTipsFileBlock

{

char *pKeyWords;//关键字

char *pSecretLevel; //密级:秘密、、绝密中的一个

char*pFileBlock; //片段

};

classIFileChecker

{

public:

virtualvoid Init(constchar *pKeyWords) = 0;

virtualbool GetFileInfo(constchar *pFilePath, TipsFileBlock *pTFB) = 0;

virtualvoid FreeFileInfo(TipsFileBlock * pTFB) = 0;

virtualvoid UnInit() = 0;

virtualvoid StopCheck() = 0;

};

typedefvoid (*PCreateFileCheckerObject)(IFileChecker **pObject);

typedefvoid (*PReleaseFileCheckerObject)(IFileChecker **pObject);

//------------------------------头文件 end-----------------------------

//示例

//--------------获取接口类-----------------

HMODULE hDll = LoadLibrary(_T("TipsFileChecker.dll"));

if (NULL ==hDll) return;

PCreateFileCheckerObject pCreateFileChecker =

(PCreateFileCheckerObject)GetProcAddress(hDll,"CreateFileCheckerObject"); PReleaseFileCheckerObject pReleaseFileChecker =

(PReleaseFileCheckerObject)GetProcAddress(hDll,"ReleaseFileCheckerObject");

if (NULL == pCreateFileChecker || NULL == pReleaseFileChecker) return;

IFileChecker* pFileChecker = NULL;

pCreateFileChecker(&pFileChecker);

//---------------初始化提供关键字------------

CStringA strName = "FeiMi1"; //多个实例名称任意,但不同。例如:FeiMi2、FeiMi3、…CStringA strKeyWords = "秘密;;绝密; ";

pFileChecker->Init(strName,strKeyWords);

//----------------文件命中片段提取---------

CStringA strFilePath = "C:\\123.docx";

TipsFileBlock fb;

pFileChecker->GetFileInfo(strFilePath,&fb);

//....

pFileChecker->FreeFileInfo(&fb);

//----------------------结束释放----------------

pFileChecker->StopCheck();

pFileChecker->UnInit();

pReleaseFileChecker(&pFileChecker);

FreeLibrary(hDll);

三、附

附1:

规则XML:

="qq.exe;explorer.exe;"WhiteProcess = "explorer.exe;wps.exe;"IsBan ="0">

解释:

TipsType Type = "Rule"为规则xml

IsMon:是否监控 1监控 0不监控

MonPath:监控文件夹,采用分号拼接,如果为空表示全盘监控

MonFileType:监控文件类型,采用分号拼接,如果为空表示不限类型

IsBan:是否拦截 1拦截 0不拦截

FileNameWords:文件名检查关键字,如果为空表示不检查

ContentWords:文件容检查关键字,如果为空表示不检查

WhiteProcess:进程白

WhitePath:监控路径白

MonProcess:监控进程,如果为空表示全部监控

附2:

结果XML:

NET操作行为监控举例:

Net容监控举例:

相关主题
相关文档
最新文档