PIOControl.cpp
上传用户:zhuzhu0204
上传日期:2020-07-13
资源大小:13165k
文件大小:2k
开发平台:

Visual C++

  1. // PIOControl.cpp
  2. #include "stdafx.h"
  3. #include "PIOControl.h"
  4. CPIOControl::CPIOControl()
  5. {
  6. m_fnIoControl = NULL;
  7. // 加载DLL模块,获取PLSPIoControl函数的指针
  8. TCHAR szPathName[256];
  9. wsprintf(szPathName, _T("%s%s"), strCurrentPath, _T("MyLsp.dll"));
  10. m_hLSPModule = ::LoadLibrary(szPathName);
  11. if(m_hLSPModule != NULL)
  12. {
  13. m_fnIoControl = (PFNLSPIoControl)::GetProcAddress(m_hLSPModule, "PLSPIoControl");
  14. }
  15. if(m_fnIoControl == NULL)
  16. {
  17. ::MessageBox(NULL, _T("Can not find LSP module"), _T("error"), 0);
  18. exit(0);
  19. }
  20. }
  21. CPIOControl::~CPIOControl()
  22. {
  23. if(m_hLSPModule != NULL)
  24. ::FreeLibrary(m_hLSPModule);
  25. }
  26. void CPIOControl::SetWorkMode(int nWorkMode)
  27. {
  28. // 设置工作模式
  29. m_IoControl.ucWorkMode = nWorkMode;
  30. m_fnIoControl(&m_IoControl, IO_CONTROL_SET_WORK_MODE);
  31. }
  32. int CPIOControl::GetWorkMode()
  33. {
  34. // 获取工作模式
  35. return m_fnIoControl(&m_IoControl, IO_CONTROL_GET_WORK_MODE);
  36. }
  37. void CPIOControl::SetRuleFile(RULE_FILE_HEADER *pHeader, RULE_ITEM *pRules)
  38. {
  39. // 申请一个临时的RULE_FILE对象
  40. RULE_FILE RuleFile;
  41. memcpy(&RuleFile.header, pHeader, sizeof(RULE_FILE_HEADER));
  42. memcpy(&RuleFile.LspRules, pRules, sizeof(RULE_ITEM) * pHeader->ulLspRuleCount);
  43. // 设置过滤规则
  44. m_IoControl.pRuleFile = &RuleFile;
  45. m_fnIoControl(&m_IoControl, IO_CONTROL_SET_RULE_FILE);
  46. }
  47. void CPIOControl::SetInstance(HWND hWnd, TCHAR *pszPathName)
  48. {
  49. // 设置实例句柄
  50. m_IoControl.hWnd = hWnd;
  51. wcscpy(m_IoControl.szPath, pszPathName);
  52. m_fnIoControl(&m_IoControl, IO_CONTROL_SET_INSTANCE);
  53. }
  54. void CPIOControl::GetSession(SESSION *pSession, int nIndex)
  55. {
  56. // 获取有事件发生的会话
  57. m_IoControl.pSession = pSession;
  58. m_IoControl.nSessionIndex = nIndex;
  59. m_fnIoControl(&m_IoControl, IO_CONTROL_GET_SESSION);
  60. }
  61. void CPIOControl::SetQuerySession(int nIndex, UCHAR ucAction)
  62. {
  63. // 返回查询结果
  64. m_IoControl.nSessionIndex = nIndex;
  65. m_IoControl.ucWorkMode = ucAction;
  66. m_fnIoControl(&m_IoControl, IO_CONTROL_SET_QUERY_SESSION);
  67. }
  68. void CPIOControl::GetQuerySession(SESSION *pSession, int nIndex)
  69. {
  70. // 获取查询的应用程序
  71. m_IoControl.pSession = pSession;
  72. m_IoControl.nSessionIndex = nIndex;
  73. m_fnIoControl(&m_IoControl, IO_CONTROL_GET_QUERY_SESSION);
  74. }