0

我对 Windows 过滤平台非常陌生.. 我正在尝试学习这个.. 我从 msdn 网站的代码开始.. 就像这里一样。我尝试编译代码,但在头文件 "fwptypes.h" 中出现 13 个错误。我不知道如何解决这个问题..任何建议..这是错误IMG

4

2 回答 2

2

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

  1. 将您的项目设置更改为“不使用预编译头文件”(右键单击项目->在弹出菜单中选择“属性”->配置属性->C/C++->预编译头文件->预编译头文件)。

或者 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 @ 第 343 行

#define FWP_FILTER_ENUM_VALID_FLAGS \
   (FWP_FILTER_ENUM_FLAG_BEST_TERMINATING_MATCH | \
    FWP_FILTER_ENUM_FLAG_SORTED)

IkeTypes.h @ 第 367 行

#define IKEEXT_ERROR_CODE_COUNT  \
   (ERROR_IPSEC_IKE_NEG_STATUS_END - ERROR_IPSEC_IKE_NEG_STATUS_BEGIN)
于 2012-06-11T08:19:31.207 回答
0

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

WinDivert 本质上将数据包传递给底层的 Windows 过滤平台 (WFP) 数据包注入函数。

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

于 2013-10-13T16:15:09.593 回答