過濾鉤子驅動程式一(微軟DDK文件,FLASHSKY翻譯) (轉)
本章說明過濾鉤子. 一個過濾鉤子驅動程式是用於操作中的一個IP過濾驅動程式的上下文
中處理或過濾包,過濾鉤子驅動程式擴充套件了IP過濾驅動程式的功能。下面主題描述了過濾鉤子驅動程式
的一些特性, 解釋怎樣建立過濾鉤子並列出實現一個過濾鉤子驅動程式相關的輸入輸出控制程式碼的參考
資訊:
1.1 關於過濾鉤子驅動程式
一個過濾鉤子驅動程式是一個用於過濾網路包的核心驅動程式. 一個過濾鉤子驅動程式擴充套件系統提
供的IP過濾驅動程式的功能。一個過濾鉤子驅動程式僅僅只能於2000及其之後的系統上。僅僅只有一個
過濾鉤子驅動程式能被安裝在系統之上並且被IP過濾驅動程式使用。如果一個過濾鉤子驅動程式的指向用於
IP過濾驅動程式的擴充套件鉤子指標為空,那麼他只能使用IP過濾驅動程式註冊自己。一旦一個過濾鉤子驅動程
序使用了IP過濾驅動程式註冊自己,IP過濾程式給這個IP過濾程式的擴充套件鉤子分派,用這種方法,
這個IP過濾驅動程式確保自己只能接受和使用單個的過濾鉤子驅動程式.
1.2 建立一個過濾鉤子驅動程式
一個過濾鉤子驅動程式在包過濾不能滿足過濾網路包時候來建立。模式應用程式使用這些API來
建立和管理系統在IP過濾驅動程式中提供的輸出和輸入過濾器。更多API資訊檢視SDK。
一個過濾鉤子驅動程式是在核心模式驅動程式下開發的. 另外, 一個過濾鉤子驅動程式完成一個過濾鉤
子回撥函式並在系統提供的IP過濾驅動程式中註冊這個回撥函式. 這個回撥函式被看作一個過濾鉤子。這個
IP過濾驅動程式以後使用這個過濾鉤子以決定怎樣處理到達和輸出的包.
下面的章節將說明怎樣建立一個過濾鉤子驅動程式
1.2.1 建立過濾鉤子
一個過濾鉤子在一個PacketFilterExtensionPtr型別的函式時被建立。
當一個過濾鉤子驅動程式在系統提供的IP過濾驅動程式中註冊自己的過濾鉤子實體指標時 ,這個過濾鉤子
驅動程式給他的過濾鉤子提供符號地址. 因為一個過濾鉤子驅動程式提供這個地址, 而不是名字,這個過濾鉤
子可以選擇任何名字。當然,好的程式習慣是用其基本的功能來命名這個過濾鉤子的名字。
一個過濾鉤子對到達與發出的包進行特定的動作,他將與IP過濾驅動程式傳送給過濾鉤子來檢查怎樣的包
將進一步處理的資訊與到達的特定資訊做比較。在過濾鉤子檢查包以後,他將使用PF_FORWARD, PF_DROP, 或
PF_PASS返回響應程式碼給IP過濾驅動程式怎樣處理的資訊:
PF_FORWARD
規定給IP過濾驅動程式馬上返回轉發響應給IP棧. 對於本地包, IP轉發他們到棧頂. 如果包目標地址為外
部機器並且允許, IP路由他們到對應的路由.
PF_DROP
規定給IP過濾驅動程式馬上返回drop響應給IP棧. IP將drop這個包.
PF_PASS
規定給IP過濾驅動程式過濾這個包並且返回這個結果響應給IP棧. IP過濾驅動程式怎樣處理這個過濾包決
定於他怎樣在Packet Filtering API中做的設定. 過濾鉤子如果他檢查到他不能處理的包但將允許IP過濾驅動
程式過濾包的時候返回這個pass響應。
1.2.2 過濾鉤子例子
本節顯示了一個簡單的過濾鉤子基於某幾個固定的包屬性來構成forward和drop檢查. 這個過濾鉤子指定
drop TCP包而forward其他的包.
注意:如果特定或TCP/UDP埠的包必須被過濾,考慮使用包過濾API替代建立一個使用者模式的應用
程式。這些API了系統提供的IP過濾驅動程式處理包而不需要在其上關聯一個過濾鉤子驅動程式.
#define PROT_TCP 6
// Drop all TCP packets
PF_FORWARD_ACTION
DropTcpPackets(
unsigned char *PacketHeader,
unsigned char *Packet,
unsigned int PacketLength,
unsigned int RecvInterfaceIndex,
unsigned int SendInterfaceIndex,
IPAddr RecvLinkNextHop,
IPAddr SendLinkNextHop
)
{
if (PacketHeader->iph_protocol == PROT_TCP)
{
return PF_DROP;
}
return PF_FORWARD;
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1000280/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [翻譯]ElasticSearch官方文件-執行查詢和過濾操作Elasticsearch
- 驅動開發 鍵盤過濾驅動程式-- 傳統的鍵盤過濾
- 怎麼翻譯整篇Excel文件?Excel文件翻譯一招搞定Excel
- 文件翻譯器怎麼用?如何翻譯Word文件?
- 分享一次批量文件翻譯的開發過程
- 一個檔案系統過濾驅動的demo
- JavaPoet 文件翻譯Java
- 有ppt文件翻譯軟體嗎?如何翻譯整篇ppt文件
- MPAndroidChart文件翻譯Android
- Moya官方文件翻譯
- Samza文件翻譯 : Backgroud
- 本人翻譯的文件
- [翻譯]關於通用文件轉換器Pandoc
- 有關RFC文件的翻譯說明 (轉)
- WINDOWS鉤子函式(轉)Windows函式
- 實用的Word文件翻譯方法分享,讓Word文件快速翻譯
- 簡單建立VC + DDK的驅動開發環境開發環境
- Sequelize 中文文件 v4 – Hooks – 鉤子Hook
- 怎麼把Excel文件翻譯成中文?Excel文件翻譯方法介紹Excel
- docker官方文件翻譯3Docker
- SnapKit 中文文件翻譯APK
- docker官方文件翻譯4Docker
- rabbitmq 官方文件翻譯-2MQ
- docker官方文件翻譯5Docker
- docker官方文件翻譯2Docker
- docker官方文件翻譯1Docker
- Core Foundation 官方文件翻譯
- Samza文件翻譯 : Architecture
- Akka Stream文件翻譯:Motivation
- Guava文件翻譯之 ServiceGuava
- Guava文件翻譯之ListenableFutureGuava
- expat介紹文件翻譯
- TailWind文件翻譯說明以及每日翻譯進度AI
- HarmonyOS USB DDK助你輕鬆實現USB驅動開發
- 系統鉤子的使用 (轉)
- 大家翻譯的時候能不能動動腦子。
- Apache Hadoop文件翻譯之一(HDFS架構)ApacheHadoop架構
- A-Frame.js 學習&文件翻譯(一)實體JS