wfp框架解析

本文详细解释了WFP框架的6个主要API及其作用,包括FwpmEngineOpen0-FwpmTransactionCommit0,强调了calloutKey在注册过程中的重要性和不同参数的正确设置。还提到了WFP关闭时的清理步骤。
摘要由CSDN通过智能技术生成

我一直对wfp框架含混不清,搞驱动开发有一段时间了,拿着老板的钱,到对自己手头工作的一些基础概念都弄不明白,实在是说不过去,寝食难安,特此加深一下记忆和理解。

通过仔细分析开发过的wfp项目代码,发现WFP项目框架都有如下特征。
wfp框架有如下6个步骤,分别调用如下6个函数完成设置:

  1. FwpmEngineOpen0
  2. FwpmTransactionBegin0
  3. FwpsCalloutRegister0
  4. FwpmCalloutAdd0
  5. FwpmFilterAdd0
  6. FwpmTransactionCommit0

这6个API参数比较复杂,详细的参数可自行MSDN。下面稍微展开说一下这6个API的作用。

FwpmEngineOpen0:This function opens a session to the Windows Filtering Platform (WFP) filter engine.这个HANDLE是接下来其他函数必要的输入参数。与此函数相对的是FwpmEngineClose,关闭引擎。

FwpmTransactionBegin0:在当前会话中开始显式事务。

FwpsCalloutRegister0:注册回调函数。此函数参数比较复杂,主要是用来注册实现网络过滤功能操作的回调函数。

FwpmCalloutAdd0:增加回调函数。此函数参数为FWPM_CALLOUT0,而FwpsCalloutRegister0的参数为FWPS_CALLOUT0。

FwpmFilterAdd0: adds a new filter object to the system.

FwpmTransactionCommit0:commits the current transaction within the current session。

需要注意的几点:

  1. 除去初始化函数,一个完整的过滤规则要有以下3个函数的调用步骤才能完成注册:FwpsCalloutRegister0,FwpmCalloutAdd0,FwpmFilterAdd0。
  2. F w p s C a l l o u t R e g i s t e r 0 和 F w p m C a l l o u t A d d 0 中的 c a l l o u t K e y 要相同。 此值是一个自定义的 G U I D ,假设其为 A 。 \color{red}FwpsCalloutRegister0和FwpmCalloutAdd0中的calloutKey要相同。\\此值是一个自定义的GUID,假设其为A。 FwpsCalloutRegister0FwpmCalloutAdd0中的calloutKey要相同。此值是一个自定义的GUID,假设其为A
  3. F W P M F I L T E R 0 里面的 a c t i o n . c a l l o u t K e y 要和 F w p s C a l l o u t R e g i s t e r 0 以及 F w p m C a l l o u t A d d 0 中的 c a l l o u t K e y 相同,即必须都是上一条中的 A 。 \color{red}FWPM_FILTER0里面的action.calloutKey 要和\\FwpsCalloutRegister0以及FwpmCalloutAdd0中的calloutKey相同,即必须都是上一条中的A。 FWPMFILTER0里面的action.calloutKey要和FwpsCalloutRegister0以及FwpmCalloutAdd0中的calloutKey相同,即必须都是上一条中的A
  4. F W P M _ C A L L O U T 0 中的 a p p l i c a b l e L a y e r 和 F W P M F I L T E R 0 中的 l a y e r K e y 要相同。 此值是一个 w i n d o w s 定义的过滤类型,定义在系统头文件 f w p m k . h 中, 必须是一个合法的注册类型,而不能是任意值。 \color{red}FWPM\_CALLOUT0 中的 applicableLayer和FWPM_FILTER0中的layerKey要相同。\\此值是一个windows定义的过滤类型,定义在系统头文件fwpmk.h中,\\必须是一个合法的注册类型,而不能是任意值。 FWPM_CALLOUT0中的applicableLayerFWPMFILTER0中的layerKey要相同。此值是一个windows定义的过滤类型,定义在系统头文件fwpmk.h中,必须是一个合法的注册类型,而不能是任意值。
  5. F W P M _ F I L T E R 0 中的 s u b L a y e r K e y 字段有两点要注意。 当此值是 w i n d o w s 自定义类型是可以直接使用,比如 F W P M _ S U B L A Y E R _ U N I V E R S A L 。 若此值是自定义的,那就不能直接使用,必须使用 F w p m S u b L a y e r A d d 函数先创建一个子层, 然后在才能在 F W P M _ F I L T E R 0 的 s u b L a y e r K e y 字段中使用。 \color{red}FWPM\_FILTER0中的subLayerKey字段有两点要注意。\\当此值是windows自定义类型是可以直接使用,比如FWPM\_SUBLAYER\_UNIVERSAL。\\若此值是自定义的,那就不能直接使用,必须使用FwpmSubLayerAdd函数先创建一个子层,\\然后在才能在FWPM\_FILTER0的subLayerKey字段中使用。 FWPM_FILTER0中的subLayerKey字段有两点要注意。当此值是windows自定义类型是可以直接使用,比如FWPM_SUBLAYER_UNIVERSAL若此值是自定义的,那就不能直接使用,必须使用FwpmSubLayerAdd函数先创建一个子层,然后在才能在FWPM_FILTER0subLayerKey字段中使用。
  6. 上述过程的目的是,一个子层可以包含多个功能层,框架具有更好的扩展性。
  7. FWPM_FILTER中的numFilterConditions参数,一般设置为0。If you specify 0, this filter invokes its callout for all traffic in its layer。
  8. 除此之外,注册过程中还需要写入其他大量参数,但是这些参数MSDN上有明确的解释,在此不再赘述。

另外,当wfp关闭时,需要做的动作有如下几个:

  1. FwpmCalloutDeleteById
  2. FwpsCalloutUnregisterById
  3. FwpmEngineClose
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WPF(Windows Presentation Foundation)和MVVM(Model-View-ViewModel)是Microsoft的两个技术,用于创建.NET桌面应用程序。 首先,WPF是一种用于构建Windows应用程序的UI框架。它提供丰富的图形、动画和交互式功能,使开发人员能够创建现代化和可视化吸引人的用户界面。WPF利用XAML(可扩展应用程序标记语言)来定义应用程序的布局和外观。 而MVVM是一种用于设计和组织WPF应用程序的方法。它将应用程序分为三个主要部分:模型(Model)、视图(View)和视图模型(ViewModel)。模型表示应用程序的数据和业务逻辑,视图负责显示用户界面,而视图模型负责管理视图和模型之间的通信。 关于WPF MVVM框架下载的问题,Microsoft已经为开发人员提供了免费的Visual Studio开发工具(包括Community版、Professional版和Enterprise版),这些工具已经集成了WPF和MVVM支持。只需访问Microsoft官方网站,下载和安装适用于您操作系统的Visual Studio版本即可开始使用它们。 此外,还有一些第三方MVVM框架可供选择,比如Prism、Caliburn.Micro和MVVM Light等。这些框架可以简化WPF应用程序的开发过程,并提供了一些额外的功能和工具来帮助开发人员更好地实现MVVM模式。您可以在它们的官方网站上找到框架的下载链接,并按照说明进行安装和使用。 总结而言,要下载WPF MVVM框架,您可以选择免费的Visual Studio开发工具或第三方MVVM框架。只需在相关官方网站上找到并下载适用于您的操作系统的版本,然后按照相应的安装和使用说明进行操作即可。 ### 回答2: WFPWindows Presentation Foundation的缩写,是Microsoft Windows操作系统中一种基于.NET Framework的图形用户界面开发框架。MVVM是一种模式,即模型-视图-视图模型,用于应用程序的开发。这种模式通过将数据的业务逻辑和界面的展示逻辑分离,使开发变得更加清晰和可维护。 要下载WFP MVVM框架,首先需要确认你拥有.NET Framework的正确版本。WFP是.NET Framework的一部分,因此你需要去Microsoft官方网站或其他可靠的软件下载网站下载并安装适合你计算机操作系统的.NET Framework版本。 一旦你安装了.NET Framework,你就可以去GitHub等代码托管平台搜索WFP MVVM框架。GitHub上有许多开源项目提供现成的WFP MVVM框架。你可以在这些项目的页面上找到框架源代码和下载链接。确保选择最新版本的框架,并根据项目文档找到可用的下载链接。 下载完成后,你可以将框架的源代码解压到你的计算机上,并使用任何你喜欢的集成开发环境(IDE)打开框架项目。在IDE中,你可以探索框架的源代码、查看示例和文档,从而更好地了解如何使用WFP MVVM框架进行应用程序开发。 总结就是,要下载WFP MVVM框架,你需要先安装适合你计算机操作系统的.NET Framework,然后搜索并下载合适的开源框架代码,最后在你喜欢的IDE中打开框架项目开始使用。 ### 回答3: WFP (Windows Presentation Foundation) 是一种用于构建 Windows 平台应用程序的用户界面框架。MVVM (Model-View-ViewModel) 是一种软件架构模式,专注于分离应用程序的用户界面逻辑和业务逻辑。 要下载WPF MVVM框架,您可以按照以下步骤进行操作: 1. 打开您常用的浏览器,如Google Chrome、Microsoft Edge等。 2. 进入搜索引擎网站,如www.google.com。 3. 在搜索框中输入“WPF MVVM框架下载”。 4. 点击搜索按钮,搜索引擎会为您提供相关的结果。 5. 浏览搜索结果页面,寻找适合您需求的框架。 6. 一般来说,您可以选择从开源社区、GitHub或NuGet等平台下载WPF MVVM框架。选取一个可靠且常用的框架。 7. 点击下载按钮,选择适用于您的操作系统的版本(如Windows 7/8/10)。 8. 等待下载完成。 9. 打开下载的文件,按照安装向导的指示进行安装。 10. 安装完成后,您可以开始使用WPF MVVM框架建立您的应用程序。 总之,下载WPF MVVM框架相对简单。通过在浏览器中搜索并选择合适的框架,您可以迅速获取所需的下载链接,并按照安装指南进行安装。这样,您就可以开始使用WPF MVVM框架构建高效、模块化的Windows应用程序了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值