下面的代码是" Veto"," Hard Block"还是两者兼而有之?
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
答案 0 :(得分:0)
它是硬块,但不是 Veto 。
硬动作是除了将 actionType 设置为 FWP_ACTION_BLOCK 或 FWP_ACTION_PERMIT <之外,还重置 FWPS_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) {...}