You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WFP驱动Win7下调用FwpmProviderAdd返回STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS求助

解决Win7下WFP驱动调用FwpmProviderAdd返回STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS的问题

针对你遇到的Win7环境下WFP驱动无法启动、调用FwpmProviderAdd()返回STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS的问题,结合Win7 WFP的特性,有以下几个可行的解决方向:

  • 启用持久化Provider标志
    Win7的WFP引擎对非持久化Provider的添加限制更严格,当系统中存在动态会话(比如临时防火墙规则生效中)时,不允许添加未标记为持久化的Provider。取消你代码中FWPM_PROVIDER_FLAG_PERSISTENT的注释,确保Provider被标记为持久化:

    provider.flags = FWPM_PROVIDER_FLAG_PERSISTENT;
    
  • 检查引擎初始化参数
    确认打开WFP引擎时使用的参数是否兼容Win7。Win7下打开引擎建议明确指定FWPM_ENGINE_FLAG_USE_KERNEL_MODE(如果你的驱动是内核模式),避免使用高版本系统才支持的标志,比如FWPM_ENGINE_FLAG_NETWORK_AWARE。

  • 显式创建会话并关联操作
    在Win7中,若当前系统有活跃的动态会话,直接添加Provider会触发该错误。可以显式创建一个会话,将Provider添加操作关联到这个会话中:

    HANDLE sessionHandle = NULL;
    NTSTATUS status = FwpmSessionCreate(g_EngineHandle, NULL, &sessionHandle);
    if (NT_SUCCESS(status)) {
        status = FwpmProviderAdd(g_EngineHandle, &provider, sessionHandle);
        // 操作完成后关闭会话
        FwpmSessionDelete(g_EngineHandle, sessionHandle);
    }
    
  • 验证ServiceName的正确性
    Win7下WFP对Provider的serviceName字段校验更严格,确保该名称和你的驱动服务名称完全一致,且服务已正确注册并处于可启动状态。

另外,Win7的WFP API行为和Win8+存在差异,建议参考Win7对应的WFP文档,确认API参数的兼容性要求。

内容的提问来源于stack exchange,提问作者Lion Kuo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 09:02:29