BAV.cpp
上传用户:chaoyu
上传日期:2013-04-28
资源大小:18k
文件大小:2k
源码类别:

杀毒

开发平台:

Visual C++

  1. // BAV.cpp : Defines the entry point for the console application.
  2. //
  3. #include "stdafx.h"
  4. #include "VirusDB.h"
  5. #include "ScanObject.h"
  6. #include "VirusInfo.h"
  7. #include "Engine.h"
  8. int _tmain(int argc, _TCHAR* argv[])
  9. {
  10. //////////////////////////////////////////////////////////////////////////
  11. //
  12. // 参数检查
  13. //
  14. if(argc<2)
  15. {
  16. printf("Not enough parameter!nBAV [drive:]pathn");
  17. return -1;
  18. }
  19. //////////////////////////////////////////////////////////////////////////
  20. //
  21. // 病毒库装载,先不从文件装载,后面版本增加。
  22. //
  23. CVirusDB cVDB;
  24. if( !cVDB.Load(NULL) )
  25. return -2;
  26. //////////////////////////////////////////////////////////////////////////
  27. //
  28. // 扫描
  29. //
  30. CEngine cBavEngine;
  31. PSCAN_RESULTS pScanResults = NULL;
  32. if( cBavEngine.Load(&cVDB) )
  33. {
  34. SCAN_PARAM stScanParam;
  35. stScanParam.nSize = sizeof(SCAN_PARAM);
  36. stScanParam.strPathName = argv[1]; // TODO: Add path verify here
  37. stScanParam.eAction = BA_SCAN;
  38. pScanResults = cBavEngine.Scan(&stScanParam);
  39. }
  40. //////////////////////////////////////////////////////////////////////////
  41. //
  42. // show results
  43. //
  44. if(pScanResults)
  45. {
  46. CVirusInfo cVInfo;
  47. printf("n---------------------- Done ----------------------n");
  48. printf("Total %d file(s), %d virus(es) detected.nn", pScanResults->dwObjCount, pScanResults->dwRecCount);
  49. printf("Total %d milliseconds, %d ms/file.n", pScanResults->dwTime, pScanResults->dwTime/pScanResults->dwObjCount);
  50. PSCAN_RECORD pScanRecord = pScanResults->pScanRecords;
  51. while( pScanRecord )
  52. {
  53. printf(""%s" infected by "%s" virus.n", pScanRecord->pScanObject->GetObjectName(), cVInfo.GetNameByID(pScanRecord->dwVirusID));
  54. pScanRecord = pScanRecord->pNext;
  55. }
  56. }
  57. //////////////////////////////////////////////////////////////////////////
  58. // 
  59. // clean up
  60. //
  61. cBavEngine.Release();
  62. cVDB.Unload();
  63. return 0;
  64. }