Windows筛选平台错误

时间:2012-06-09 11:40:49

标签: c++ c windows wfp

我是Windows过滤平台的新手。我正在尝试学习这个...我开始使用msdn网站的代码..作为here。我试图编译代码,我得到13个错误,这些错误在头文件“fwptypes.h”中。 我不知道如何解决这个问题..任何建议.. 这是错误IMG

2 个答案:

答案 0 :(得分:2)

为消除第一个错误(预编译头),有三种方法:

  1. 将项目设置更改为“未使用预编译标题”(右键单击项目 - >在弹出菜单中选择“属性” - >配置属性 - > C / C ++ - >预编译标题 - >预编译标题)。
  2. 或2.将演示代码复制到头文件而不是cpp文件。

    或3.在演示代码前添加“stdafx.h”。

    对于其他编译错误,请尝试此操作(此解决方案来自http://social.msdn.microsoft.com/Forums/en-US/wfp/thread/8fd93a3d-a794-4233-9ff7-09b89eed6b1f,我测试过,它有效):

    标头文件中有一个错误(额外的行空格)。您可以直接修改副本:

    FwpTypes.h @第275行:

    #define FWP_ACTION_BLOCK \
       (0x00000001 | FWP_ACTION_FLAG_TERMINATING)
     #define FWP_ACTION_PERMIT \
       (0x00000002 | FWP_ACTION_FLAG_TERMINATING)
    #define FWP_ACTION_CALLOUT_TERMINATING \
       (0x00000003 | FWP_ACTION_FLAG_CALLOUT | FWP_ACTION_FLAG_TERMINATING)
    #define FWP_ACTION_CALLOUT_INSPECTION \
       (0x00000004 | FWP_ACTION_FLAG_CALLOUT | FWP_ACTION_FLAG_NON_TERMINATING)
    #define FWP_ACTION_CALLOUT_UNKNOWN \
       (0x00000005 | FWP_ACTION_FLAG_CALLOUT)
    #define FWP_ACTION_CONTINUE \
       (0x00000006 | FWP_ACTION_FLAG_NON_TERMINATING)
    #define FWP_ACTION_NONE \
       (0x00000007)
    #define FWP_ACTION_NONE_NO_MATCH \
       (0x00000008)
    

    FwpTypes.h @ line 343

    #define FWP_FILTER_ENUM_VALID_FLAGS \
       (FWP_FILTER_ENUM_FLAG_BEST_TERMINATING_MATCH | \
        FWP_FILTER_ENUM_FLAG_SORTED)
    

    IkeTypes.h @ line 367

    #define IKEEXT_ERROR_CODE_COUNT  \
       (ERROR_IPSEC_IKE_NEG_STATUS_END - ERROR_IPSEC_IKE_NEG_STATUS_BEGIN)
    

答案 1 :(得分:0)

您可以使用WinDivert开源WFP标注驱动程序。

WinDivert实质上将数据包传递给基础Windows过滤平台(WFP)数据包注入功能。

查看此链接以获取更多信息.. http://reqrypt.org/windivert.html