WDF驅動模型

2021-08-10 14:14:36 字數 1235 閱讀 7872

wdf驅動模型

如所周知,自windows 2000開始,開發驅動程式必以wdm為基礎的,但其開發難度之大,根本不能奢望像使用者模式應用程式開發那樣容易。為改善這種局面,微軟推出了新的驅動程式開發環境。要預先指出的是,這不是另起爐灶改弦更張,而是以wdm為基礎進行了建模和封裝,顯著特點是降低了開發難度。因為:

1、 將原來普通程式設計中基於物件的技術應用到了驅動開發中。wdm中雖也有物件模型,但與真正的基於物件技術根本就不是一回事。為了實現基於物件的技術,微軟精心設計了物件模型並進行了封裝。屬性、方法、事件等等「乙個都不能少」。

2、 無論核心模式的驅動程式或者使用者模式的驅動程式,都採用同一套物件模型構建,採用同乙個基礎承載。這個基礎就是wdf。wdf雖然已經是經過封裝和定義的物件模型,但對核心模式和使用者模式物件來說,wdf又是兩者的父物件。換言之兩者都是繼承了wdf才得到的,或者都是從wdf派生而來的。相對於核心模式,派生出的物件稱為「kmd框架」即kmdf;相對於使用者模式,派生出的模型稱為「umd框架」即umdf。無論何種模式的框架,其內部封裝的方法、執行的行為其實還是用wdm完成的。

3、 更重要的,也是微軟反覆炫耀的是封裝了驅動程式中的某些共同行為:例如即插即用和電源管理就屬於這種共同行為。因為大多數驅動程式中都需要處理即插即用和電源管理問題,據說這大概要上千行的**,況且,沒有相當水平還不一定能處理好。為了一勞永逸,wdf乾脆將即插即用和電源管理封裝了進了物件之內,一舉成了物件的預設(預設)行為。

4、 改變了作業系統核心與驅動程式之間的關係,wdm驅動程式中,一方面要處理硬體,另一方面要處理驅動程式與作業系統核心的互動。現在wdf則將驅動程式與作業系統核心之間進行了分離,驅動程式與作業系統互動工作交給框架內封裝的方法(函式)完成,這樣驅動開發者只需專注處理硬體的行為即可。這不僅避免了顧此失彼兩面不周的弊端,也由於雙方的分離,對作業系統內的某些改動,硬體製造商配套驅動程式的開發都有莫大的好處。

5、 兩種模式的驅動程式(kmdf、umdf)都使用同一環境進行構建,這一環境稱為wdk。

即kmdf,umdf的開發環境為wdk。 

windows device kit (wdk): 把測試套件(test suites)整合進來,ddk 就成了wdk。wdk是針對微軟作業系統系列的驅動器整合開發系統。它組合了windows ddk和hardware compatibility test (hct) kits(硬體相容性測試工具),同時提供了微軟內部用來測試windows作業系統穩定性和可靠性的測試套件。

6、 雖然經過封裝並引入基於物件的技術,所開發的驅動程式在執行效率上並不比原來遜色。

WDF驅動開發 CONTEXT和IO QUEUE

wdf裡面,大多數物件都支援自定義的資料,比如給裝置物件建立乙個context。物件上下文 先自定義乙個結構,比如 typedef struct device context 裡面放了乙個物件wdfqueue.然後給裝置物件建立乙個上下文記憶體塊。在使用之前先要宣告一下這個結構,相當於告訴框架,我們...

WDF驅動和3環通訊

ifndef ctl code h 89749 9961731 define ctl code h 89749 9961731 define ctl buffered ctl code file device unknown,0x850,method buffered,file any access...

WDF驅動中KMDF與UMDF區別

眾所周知,早期的windows 95 98的裝置驅動是vxd virtual device driver 其中x表示某一類裝置。從windows 2000開始,開發驅動程式必以wdm windows driver model 為基礎的,但是,如果使用ddk來開發wdm,其開發難度之大,根本不能奢望像...