接口设计方案
接口设计方案、设计方案DLL由甲方调用监控模块,控制监控模块的启停、设置策略等,通过甲方调用监控模块的接口将监控策略告知监控模块,由监控模块监控相关操作行为,并根据策略配置调用甲方提供的文件内容检查模块,对相关文件进行文件内容筛查,来确定文件是否是涉密文件。时通过甲方程序调用乙方监控模块DLL接口获取监控结果甲方文件内容检查模块、接口部分(监控模块*Function:lnitDescription:初始化操作Input:无Output:无Return :Other:*监控模块监控DLLn*甲方程序true :成功,false :失败DLL,乙方提供)*Function:SetRuleDescription: 设置监控规则 lnput:char* pRule:监控规则,XML格式,见附1|111111 1M1Output:无Return : true :成功,false :失败Other:*2、bool SetRule(char* pRule);*Function:StartDescription:设置完规则,启动监控规则生效Input:无Output:无Return : true :成功,false :失败Other:*3、bool Start();*Function:WaitDataDescription:实时等待获取监控数据可以是一条可以是多条。返回监控结附2果见Input:无Output:int &nCount返回总条数,char*&pData返回数据。stop接口停止)Return : -1.异常0.成功获取数据1结束/停止(其他地方调用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.成功获取数据pData0 、pData11.结束/停止(其他地方调用Stop停止) Return;FreeData(pData);*WaitData 函数char*要释放的数据Function:FreeDataDescription:释放数据内存接口,对应"put:int nCount要释放的元素数量,Outp 无ut:Return :无Other:*5、FreeData (int nCount ,char* pData);*Function:StopDescription:停止监控,监控规则失效Input:无Output:无Return : true :成功,false :失败Other:*6、bool Stop();*Function:UnlnitDescription:程序退出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 GetFilelnfo(const char *pFilePath, TipsFileBlock *pTFB);pFilePath :文件路径pTFB:返回数据结构/释放文件信息void FreeFilelnfo(TipsFileBlock * pTFB);pTFB:需要释放的数据结构/停止当前的文件检查void StopCheck();*/(.h)头文件如 下#pragmaoncestructTipsFileBlockchar * pKeyWords; / 关键字char *;/密级:秘密、机密、绝密中的一个pSecretLevel片段char * pFileBlock /;classIFileChecker public :virtualvIni ( constc t harpKeyWords) = 0;oidvirtualbool GetFilelnfo ( constchar * pFilePath , TipsFileBlock * pTFB) = 0;virtualvoid FreeFileInfo ( TipsFileBlock * pTFB) = 0; virtualvoid Unlnit () = 0;virtualvoid StopCheck () = 0;; typedefvoid (* PCreateFileCheckerObject )( IFileChecker *pObject ); typedefvoid (*PReleaseFileCheckerObject )( IFileChecker * pObject );/ 头文件 end/示例/ 获取接口类HMODULEhDII = LoadLibraryif ( NULL= hDll ) return ;PCreateFileCheckerObject(PCreateFileCheckerObject"CreateFileCheckerObject" PReleaseFileCheckerObject(PReleaseFileCheckerObject"ReleaseFileCheckerObject"(_T( "TipsFileChecker.dll" );pCreateFileCheckerpReleaseFileChecker)GetProcAddress ( hDll , );)GetProcAddress ( hDll , );NULL=if ( NULL= pCreateFileChecker |pReleaseFileChecker ) returnIFileCheckerpCreateFileCheckerpFileChecker = NULL;(& pFileChecker );/-初始化提供关键字 FeiMi2 、 FeiMi3 、CStringA"FeiMi ; 多个实例名称任意,但不同。例strName =1" 女口:CStringA strKeyWords =" 秘密;机密;绝密;"pFileChec ->kerInit(strName,strKeyWords );/文件命中片段提取-CStringA"C:123.docxstrFilePathIIJTipsFileBlockfb ;pFileChec->(strFilePakerGetFileInfo th,&fb );/.pFileChec -> kerFreeFileInfo/->pFileChec StopCheck ker();pFileChecker-> Unlnit ();pReleaseFileChecker(& fb );结束释放 -(&pFileChecker);FreeLibrary ( hDll );三、附附1 :规贝y XML:<TipsTCM> vTipsType Type"Rule " >vRule >IVvNetOper IsMon =IVqq.exe;explorer.exe;vNetConteIsMonnt="秘密;绝密;"MonFileType =word.exe;wps. exe;MonFileTyp txt;docType ="上传;下载;"e =IV"MonProcessWhiteProceHssexplorer.exe;wps.exe;" IsBan :="0" >Type"上传;下FileNameWords =;" 秘密;绝密;"i"