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

Visual C++

  1. //////////////////////////////////////////////////////////////////
  2. // iocommon.h文件
  3. #ifndef __IOCOMMON__H
  4. #define __IOCOMMON__H
  5. //////////////////////////////////////////////////////////
  6. // 定义IO数据类型
  7. typedef struct _PTUSERIO_OID_DATA 
  8. {
  9.     ULONG           Oid;
  10.     ULONG           Length;
  11.     UCHAR           Data[1];
  12. }PTUSERIO_OID_DATA, *PPTUSERIO_OID_DATA;
  13. // 网络活动状态
  14. typedef struct _PassthruStatistics 
  15. {
  16.    ULONG    nMPSendPktsCt;      // 通过MPSendPackets的封包
  17.    ULONG    nMPSendPktsDropped; // 在MPSendPackets中丢弃的封包
  18.    ULONG    nPTRcvCt;           // 通过PTReceive的封包
  19.    ULONG    nPTRcvDropped;      // 在PTReceive中丢弃的封包
  20.    ULONG    nPTRcvPktCt;        // 通过PTReceivePacket的封包
  21.    ULONG    nPTRcvPktDropped;   // 在PTReceivePacket中丢弃的封包
  22.    ULONG    nSendFlowRate; // 发送流量
  23.    ULONG    nRecvFlowRate; // 接收流量
  24. }PassthruStatistics, *PPassthruStatistics;
  25. // 过滤规则
  26. typedef struct _PassthruFilter
  27. {
  28. USHORT protocol; // 使用的协议
  29. ULONG sourceIP; // 源IP地址
  30. ULONG sourceMask; // 源地址屏蔽码     这里使用屏蔽码是为了能够设置一个IP地址范围
  31. ULONG destinationIP; // 目的IP地址
  32. ULONG destinationMask; // 目的地址屏蔽码
  33. USHORT sourcePort; // 源端口号
  34. USHORT destinationPort; // 目的端口号
  35. TCHAR szWebSiteURL[50]; // 网站URL
  36. TCHAR szDescription[100]; // 描述信息,过滤网站时使用
  37. BOOLEAN bDrop; // 是否丢弃此封包
  38. }PassthruFilter, *PPassthruFilter;
  39. // IP规则
  40. typedef struct _IPRule
  41. {
  42. TCHAR name[50]; // 规则名称
  43. BOOLEAN bState; // 规则状态
  44. USHORT protocol; // 对应的协议
  45. USHORT port; // 使用的端口
  46. TCHAR description[100]; // 规则的描述信息
  47. }IPRule, *PIPRule;
  48. typedef struct _ARPRule
  49. {
  50. UCHAR ucIP[4];
  51. UCHAR ucMac[6];
  52. struct _ARPRule *pNext;
  53. }ARPRule, *PARPRule;
  54. // 核心层模块工作模式
  55. #define IM_PASS_ALL  0
  56. #define IM_START_FILTER 1
  57. #define IM_DENY_ALL  2
  58. ////////////////////////////////////////////////////////////
  59. // 定义IO控制代码
  60. #define FSCTL_PTUSERIO_BASE      FILE_DEVICE_NETWORK
  61. // 枚举绑定的适配器
  62. #define IOCTL_PTUSERIO_ENUMERATE   
  63.             CTL_CODE(FSCTL_PTUSERIO_BASE, 0x201, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  64.  
  65. // 打开一个适配器
  66. #define IOCTL_PTUSERIO_OPEN_ADAPTER   
  67.             CTL_CODE(FSCTL_PTUSERIO_BASE, 0x202, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  68. #define IOCTL_PTUSERIO_SET_OID
  69. CTL_CODE(FSCTL_PTUSERIO_BASE, 0x203, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  70. #define IOCTL_PTUSERIO_QUERY_OID  
  71. CTL_CODE(FSCTL_PTUSERIO_BASE, 0x204, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  72.     
  73.     
  74. // 获取网络活动状态
  75. #define IOCTL_PTUSERIO_QUERY_STATISTICS   
  76. CTL_CODE(FSCTL_PTUSERIO_BASE, 
  77. 0x205, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  78.  
  79. // 重设网络活动状态
  80. #define IOCTL_PTUSERIO_RESET_STATISTICS   
  81. CTL_CODE(FSCTL_PTUSERIO_BASE, 
  82. 0x206, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  83.  
  84. // 添加一个过滤规则
  85. #define IOCTL_PTUSERIO_ADD_FILTER
  86. CTL_CODE(FSCTL_PTUSERIO_BASE,
  87. 0x207, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  88. // 清除过滤规则
  89. #define IOCTL_PTUSERIO_CLEAR_FILTER
  90. CTL_CODE(FSCTL_PTUSERIO_BASE,
  91. 0x208, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  92. // 设置核心层工作状态
  93. #define IOCTL_PTUSERIO_SET_WORKMODE
  94. CTL_CODE(FSCTL_PTUSERIO_BASE,
  95. 0x209, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  96. // 设置Ping
  97. #define IOCTL_PTUSERIO_SET_PING
  98. CTL_CODE(FSCTL_PTUSERIO_BASE,
  99. 0x20A, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  100. // 设置ARP过滤规则
  101. #define IOCTL_PTUSERIO_SET_ARP_RULE
  102. CTL_CODE(FSCTL_PTUSERIO_BASE,
  103. 0x20B, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  104. // 设置ARP过滤规则
  105. #define IOCTL_PTUSERIO_CLEAR_ARP_RULE
  106. CTL_CODE(FSCTL_PTUSERIO_BASE,
  107. 0x20C, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  108. #endif // __IOCOMMON__H