Windows驅動 WFP之二WFP體系結構和組成

2021-06-18 18:32:00 字數 2596 閱讀 9116

不以物喜,不以己悲,做到這個,真的很難,人有的時候,真的需要一點點的肯定,不管是別人給予的,還是自己給予的,這才能構成前進的動力。想堅持一件事情。特別是技術相關的事情,是非常不容易的一件事,因為,技術真的很枯燥,無法與機器交流,所以,一定需要興趣,所以,將你的興趣溶於工作當中,才能讓你事半功倍。你才能因為解決了乙個bug,而開心半天,完成乙個功能,滿足感油然而生。其實,這也是不成熟的表現,自己,一直應該把握乙個方向,讓所有的事情都圍繞著這個進行,其實,我感覺在這裡的專案中已經學到很多了,而下面的專案,已經無法讓自己得到更多,所以,我必須勇敢的走出去。

今天,我們來看一下,wfp的體系結構和一些組成的部件。

因為,我這裡只看核心部分,所以只看wfp的callout驅動的開發。

callout這個單詞一直不知道怎麼翻譯,查了一下,說是標記的意思,但是翻譯是,標記驅動,又感覺很彆扭,索性也就不翻譯了。

callout驅動的作用:

深入分析:

對一些網路資料進行深入複雜的分析,從而決定哪些資料應該阻擋,哪些資料可以許可,哪些資料可以傳遞到另外的過濾驅動。比如病毒防護產品,進行一些病毒特徵碼的查詢等。

包的修改:

對網路包執行一些修改或者重新插入一些頭或者資料。比如網路位址翻譯產品(nat),修改ipv4包的頭。

流的修改:

對在流中的網路資料進行修改和重新插入。父母控制產品,可以刪除或者替換資料流中的關鍵字或者詞語。

資料登入:

記錄網路傳輸資料,網路監測產品。可以計算有多少資料報為了特定的原因被丟棄。

windows filtering platform callout drivers definitions

callout

callout提供一些功能,擴充套件wfp的能力。callout由一組callout函式和guid鍵組成,從而唯一標識callout.wfp包含許多內部的callout。其他另外的callout可以使用callout驅動來新增。

callout driver

callout驅動是乙個核心模式的驅動,執行乙個或者多個callout。callout驅動使用過濾引擎來註冊它的callout.以至於當計算機處理連線或者包的時候,過濾引擎可以呼叫callout的callout函式。

callout function

callout函式是callout 驅動實現的函式,是callout定義的函式。下面是callout函式的型別列表:

notifyfn函式處理通知。

classifyfn函式處理分類功能。

flowdeletefn函式處理流的刪除。

filter

乙個過濾為過濾tcp/ip網路資料定義了很多過濾的條件和在所有過濾條件都滿足情況下在資料上的將要發生的動作。如果過濾需要對網路資料進行額外的處理,它可以為過濾動作指定乙個callout,如果這個filter的條件都變為真,過濾引擎將網路資料傳遞給指定的callout讓其進行額外的處理。

filter engine

過濾引擎是wfp的乙個部件,它負責裝入filter,並對filter進行仲裁。filters被加入到過濾引擎劃入的過濾層,讓過濾引擎執行一些所需的過濾動作(許可,丟棄,callout).如果過濾引起中的filter為過濾動作指定了乙個callout,過濾引起呼叫callout的classifyfn函式,讓callout可以處理網路資料。

filtering layer

過濾層是tcp/ip網路協議棧資料傳遞給當前一組過濾器的過濾引擎匹配。網路協議棧中的每一層過濾層都用唯一的過濾層識別符號進行標識。

當乙個過濾器被加入到過濾引擎中,它就被加入到它需要過濾的網路資料的過濾層。指定那乙個過濾層的資料區域對於已經加入到過濾引起那一層的過濾器來說都是可以應用的,都是透明的。如果過濾引擎傳遞網路資料給callout進行額外的處理,這些網路資料也包含這些資料和這個過濾層上應用的任何的**資料。

run-time filtering layer identifiers (fwps_***)被核心模式的callout驅動使用。 management filtering layer

identifiers (fwpm_***)是通過使用者模式或者核心模式使用fwpm***函式直接和bfe(base filtering engine)進行互動。

fwps資料型別比fwpm資料型別的數量少得多,fwpm過濾層識別符號是guid(128bit),fwps過濾層識別符號是luid(64bit)更小空間的fwps資料型別增強了系統的效率。因為整數轉換比guid實時轉換更加快,核心記憶體處理fwps型別更加有效率。

windows filtering platform architecture overview

過濾引擎是wfp的核心。過濾引擎執行所有的基於tcp/ip網路資料的過濾操作。tcp/ip協議棧上有一些過濾層,網路資料被傳遞到過濾引擎進行處理。如果過濾器的所有的過濾條件都滿足,過濾引擎應用過濾的動作。

callout驅動通過過濾引擎注意額外的乙個或多個callouts來進行額外的過濾功能。過濾引擎中的過濾器可以為過濾動作指定callout.在這種情況下,過濾引擎傳遞網路資料給指定的callout,進行額外的處理。

windows filtering platform包含許多內部的callouts。

SylixOS CAN匯流排驅動之二

sylixos can 裝置除錯 除錯環境是在已經移植好sylixos的硬體開發平台上進行。由於imax6有2個控制器所以硬體上把can0和can1的兩個can h相連,兩個can l相連。can0和can1乙個做傳送乙個做接收,硬體連線完畢。注 不同板子的硬體平台可能不一樣,所以請根據自己板子的實...

Linux ALSA音效卡驅動之二 Platform

asoc被分為machine,platform和codec三大部件,platform驅動的主要作用是完成音訊資料的管理,最終通過cpu的數字音訊介面 dai 把音訊資料傳送給codec進行處理,最終由codec輸出驅動耳機或者是喇叭的音信訊號。在具體實現上,asoc有把platform驅動分為兩個部...

驅動開發之二 嘗試掛接file system

hookfilesystem.c 嘗試掛接file system include hookfilesystem.h handle hfilehandle object attributes objectattrib pdevice object pfiledeviceobject struct dr...