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

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

[in] layerId

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

[in] calloutId

筛选器引擎中标注的运行时标识符。 调用 FwpsCalloutRegister0FwpsCalloutRegister1FwpsCalloutRegister2 函数注册标注时,将返回此标识符。

[in] flowContext

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

返回值

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

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

言论

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

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

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

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

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

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

要求

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

另请参阅

将上下文与数据流关联

FwpsCalloutRegister0

FwpsCalloutRegister1

FwpsCalloutRegister2

FwpsFlowRemoveContext0

Windows 筛选平台示例

分类Fn

flowDeleteFn