【问题标题】:What's the difference between "Veto" and "Hard Block"?“否决”和“硬块”有什么区别?
【发布时间】:2012-12-29 17:05:23
【问题描述】:

以下代码是称为“否决”、“硬块”还是两者兼而有之?

if (FWP_ACTION_PERMIT == classifyOut->actionType 
 && FlagOn(classifyOut->rights, FWPS_RIGHT_ACTION_WRITE))
{
    classifyOut->rights = 0;
    classifyOut->actionType = FWP_ACTION_BLOCK;
}

有关此问题的文档含糊不清。

请访问:http://msdn.microsoft.com/en-us/library/windows/desktop/aa364008(v=vs.85).aspx

【问题讨论】:

  • 因为 ACTION_WRITE 开启,所以是软块。
  • 没有。我将权限设置为0,并返回FWP_ACTION_BLOCK,所以肯定是“硬块”,但不知道这是否也是“否决”。

标签: c windows kernel firewall wfp


【解决方案1】:

这是一个硬块,但不是否决权

硬操作是除了将 actionType 设置为 FWP_ACTION_BLOCKFWP_ACTION_PERMITFWPS_RIGHT_ACTION_WRITE 标志的操作/em>。 (这在the documentation 中没有明确定义,但可以从第一个表中推断出来。)

在您的代码中,您正在重置标志,然后将 actionType 设置为 FWP_ACTION_BLOCK,使您的操作成为 硬块

classifyOut->rights = 0;
classifyOut->actionType = FWP_ACTION_BLOCK;

the documentation 中所述,

否决是在调用过滤器之前重置 FWPS_RIGHT_ACTION_WRITE 标志时过滤器返回的阻止操作。

在您的代码中,如果设置了标志,您只会发出一个块,使您的操作不是否决

if ( ... && FlagOn(classifyOut->rights, FWPS_RIGHT_ACTION_WRITE) {...}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-03
    • 2011-04-10
    • 2011-08-23
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多