FwpsFlowAssociateContext0 函数 (fwpsk.h)

FwpsFlowAssociateContext0 函数将标注驱动程序定义的上下文与数据流相关联。

注意FwpsFlowAssociateContext0FwpsFlowAssociateContext 的特定版本。 有关详细信息 ,请参阅 WFP Version-Independent 名称和面向特定版本的 Windows
 

语法

NTSTATUS FwpsFlowAssociateContext0(
  [in] UINT64 flowId,
  [in] UINT16 layerId,
  [in] UINT32 calloutId,
  [in] UINT64 flowContext
);

参数

[in] flowId

一个运行时标识符,指定要与上下文关联的数据流。 数据流的运行时标识符通过传递给标注驱动程序的 classifyFn 标注函数的FWPS_METADATA_FIELD_FLOW_HANDLE元数据值提供给标注驱动程序。

[in] layerId

与上下文关联的筛选层的运行时标识符。 上下文将仅与指定的筛选层相关联。 有关详细信息,请参阅 运行时筛选层标识符

[in] calloutId

筛选器引擎中标注的运行时标识符。 当标注驱动程序调用 FwpsCalloutRegister0、FwpsCalloutRegister1FwpsCalloutRegister2 函数以向筛选器引擎注册标注时,将返回此标识符。

[in] flowContext

要与数据流关联的标注驱动程序定义的上下文。 此参数不得为零。 此上下文对筛选器引擎是不透明的。

返回值

FwpsFlowAssociateContext0 函数返回以下 NTSTATUS 代码之一。

返回代码 说明
STATUS_SUCCESS
上下文已成功与数据流关联。
STATUS_INVALID 参数
flowContext 参数为 NULL,或者 calloutID 参数指定的标注未注册 flowDeleteFn
STATUS_OBJECT_NAME_EXISTS
上下文已与数据流关联。 在这种情况下,标注驱动程序应首先调用 FwpsFlowRemoveContext0 函数以删除现有上下文,然后再次调用 FwpsFlowAssociateContext0 函数以将新上下文与数据流相关联。
其他状态代码
出现了错误。

注解

筛选数据流时,标注驱动程序可以调用 FwpsFlowAssociateContext0 函数,以将上下文与数据流相关联。 然后,它可以使用此上下文保留筛选器引擎在该数据流的 标注的 classifyFn 标注函数的调用之间任何特定于驱动程序的数据或状态信息。

筛选器引擎中必须有一个标注,该层由已注册 flowDeleteFn 标注函数的 layerId 参数标识。 否则,对 FwpsFlowAssociateContext0 函数的 调用将返回STATUS_INVALID_PARAMETER。 当流终止时,筛选器引擎会调用该 flowDeleteFn 标注函数,以便标注驱动程序可以清理与流关联的上下文。

可以为同一流多次调用 FwpsFlowAssociateContext0 。 在每次调用中,必须指定不同的标注和不同的上下文-每个添加的标注一个上下文。

FwpsFlowAssociateContext0 函数将单个上下文与单个添加的标注相关联。

可以将多个上下文与一个流相关联。 但是,每个上下文都必须与不同的标注相关联。 新标注可以与上一个标注位于同一层,也可以位于不同的层。

有关详细信息和示例代码,请参阅将上下文与数据流关联和 Windows 筛选平台示例

要求

要求
最低受支持的客户端 从 Windows Vista 开始可用。
目标平台 通用
标头 fwpsk.h (包括 Fwpsk.h)
Library Fwpkclnt.lib
IRQL <= DISPATCH_LEVEL

另请参阅

将上下文与数据流相关联

FwpsCalloutRegister0

FwpsCalloutRegister1

FwpsCalloutRegister2

FwpsFlowRemoveContext0

Windows 筛选平台示例

classifyFn

flowDeleteFn