共用方式為


圖說文字驅動程式程式設計考慮

當您撰寫 Windows 篩選平台圖說文字驅動程式時,請考慮下列主題。

使用者模式與核心模式

如果想要的篩選可以使用 Windows 篩選平台內建的標準篩選功能來完成,獨立軟體廠商 (ISV) 應該撰寫使用者模式管理應用程式來設定篩選引擎,而不是撰寫核心模式圖說文字驅動程式。 只有在您必須以標準、內建篩選功能無法處理的方式處理網路資料時,才應該寫入核心模式圖說文字驅動程式。 如需如何撰寫使用者模式 Windows 篩選平台管理應用程式的資訊,請參閱Microsoft Windows SDK中的Windows 篩選平台檔。

篩選層的選擇

圖說文字驅動程式應該在網路堆疊中可能最高的篩選層篩選網路資料。 例如,如果想要的篩選工作可以在資料流程層處理,則不應該在網路層實作。 如需驅動程式應該用來保證與 Windows 中 IPsec 相容性之篩選層建議的詳細資訊,請參閱 開發IPsec-Compatible圖說文字驅動程式

在 ALE) 流程建立的 ALE) 層 (強制執行封鎖

通常,如果其中一個 ALE 流程 的圖說文字已新增至篩選引擎, (FWPM_LAYER_ALE_FLOW_ESTABLISHED_V4或FWPM_LAYER_ALE_FLOW_ESTABLISHED_V6) 建立篩選層,則其 classifyFn 圖說文字函式絕對不應該傳回動作的FWP_ACTION_BLOCK。 在 ALE 流程的其中一個已建立篩選層時,不應決定授權或拒絕連線。 這類決策一律應在其他 ALE 篩選層的其中一個進行。

這類 classifyFn 圖說文字函式傳回動作FWP_ACTION_BLOCK的唯一有效原因是發生錯誤,如果建立的連接未結束,可能會造成潛在的安全性風險。 在此情況下,傳回動作的FWP_ACTION_BLOCK會關閉連線,以防止潛在的安全性風險遭到惡意探索。

注標函式執行時間

因為篩選引擎通常會在 IRQL = DISPATCH_LEVEL 呼叫圖說文字函式,所以請確定這些函式儘快完成執行,以確保系統有效率地執行。 在 IRQL = DISPATCH_LEVEL延伸執行可能會對系統的整體效能造成負面影響。

插入接收資料路徑

圖說文字應該在呼叫插入接收資料路徑的 封包插入函 式之前重新計算 IP 總和檢查碼,因為在從 IP 封包片段重新組譯封包時,原始封包中的總和檢查碼可能不正確。 沒有任何可靠機制可指出是否從片段重新組譯 net 緩衝區清單。

從傳輸層內嵌插入 TCP 封包

由於 TCP 堆疊的鎖定行為,傳輸層上的圖說文字無法從 classifyFn 圖說文字函式插入新的或複製的 TCP 封包。 如果需要內嵌插入,圖說文字必須排入佇列 DPC 才能執行插入。

傳出 IP 標頭對齊方式

描述 net buffer list 中 IP 標頭的 MDL (NET_BUFFER_CURRENT_MDL ( NET_BUFFER_LIST_FIRST_NB netBufferList) ) ) NET_BUFFER_LIST_FIRST_NB (netBufferList) ) ) ,當其中一個封包插入函式用來將封包資料插入傳出路徑時,必須靠指標對齊。 由於傳入封包的 IP 標頭 MDL 可能已對齊指標,因此圖說文字必須在將傳入封包插入至傳出路徑時, ( (尚未對齊) 。

Windows 篩選平台注標驅動程式