开发者在内核态使用WFP实现网络数据包过滤步骤:
- 定义一个或多个呼出接口,向过滤引擎注册呼出接口
- 添加呼出接口到过滤引擎
- 设计一个或多个子层,将子层添加到分层中
- 设计过滤器,把呼出接口、分层、子层和过滤器关联起来,向过滤引擎添加过滤器
注册呼出接口 FwpsCalloutRegister0/FwpsCalloutRegister1/FwpsCalloutRegister2
卸载呼出接口 FwpsCalloutUnregisterById/FwpsCalloutUnregisterByKey
打开过滤引擎、添加呼出接口
FwpmEngineOpen0(engineHandle)//打开过滤引擎
FwpmCalloutAdd0(engineHandle, callout) //呼出接口添加到过滤引擎
移除呼出接口 FwpmCalloutDeleteById0/FwpmCalloutDeleteByKey0
子层的添加 FwpmSubLayerAdd0(engineHandle, subLayer)
子层的移除 FwpmSubLayerDlelteByKey0
过滤器的添加FwpmFilterAdd0(engineHandle)
过滤器的移除FwpmFilterDleteById0/FwpmFilterDeleteByKey0