WDF驅動模型是微軟推出的驅動程式開發環境。
基本介紹
- 中文名:WDF驅動模型
- 地位:開發驅動程式的基礎
- 性質:驅動程式
- 目的:簡化驅動開發
驅動介紹,發展歷史,改進原因,
驅動介紹
如所周知,自Windows 2000開始,開發驅動程式必以WDM為基礎的,但其開發難度之大,根本不能奢望像用戶模式應用程式開發那樣容易。為改善這種局面,微軟推出了新的驅動程式開發環境。
發展歷史
1.最先開始使用的是VXD(早廢棄了)。
2.自Windows 2000開始,開發驅動程式必以WDM為基礎的,意為Windows Driver Model,是一個標準的驅動模型,意思是說你可以在這個模型上有所改動,WDM是Vista以前平台的驅動模型(vista支持大部分的WDM驅動)。
3.WDF是Vista及其以後OS的驅動模型,意為Windows Driver Foundation,此模型比WDM更先進、合理(微軟是這樣說的),將WDF中關於電源、PnP等一些複雜的細節由微軟實現,所以在此模型上開發驅動會 比以前要簡單。
改進原因
要預先指出的是,這不是另起爐灶改弦更張,而是以WDM為基礎進行了建模和封裝,顯著特點是降低了開發難度。因為:
1、將原來普通程式設計中基於對象的技術套用到了驅動開發中。WDM中雖也有對象模型,但與真正的基於對象技術根本就不是一回事。為了實現基於對象的技術,微軟精心設計了對象模型並進行了封裝。屬性、方法、事件等等“一個都不能少”。
2、無論核心模式的驅動程式或者用戶模式的驅動程式,都採用同一套對象模型構建,採用同一個基礎承載。這個基礎就是WDF。WDF雖然已經是經過封裝和定義的對象模型,但對核心模式和用戶模式對象來說,WDF又是兩者的父對象。換言之兩者都是繼承了WDF才得到的,或者都是從WDF派生而來的。相對於核心模式,派生出的對象稱為“KMD框架”即KMDF;相對於用戶模式,派生出的模型稱為“UMD框架”即UMDF。無論何種模式的框架,其內部封裝的方法、執行的行為其實還是用WDM完成的。
3、更重要的,也是微軟反覆炫耀的是封裝了驅動程式中的某些共同行為:例如即插即用和電源管理就屬於這種共同行為。因為大多數驅動程式中都需要處理即插即用和電源管理問題,據說這大概要上千行的代碼,況且,沒有相當水平還不一定能處理好。為了一勞永逸,WDF乾脆將即插即用和電源管理封裝了進了對象之內,一舉成了對象的預設(默認)行為。
4、改變了作業系統核心與驅動程式之間的關係,WDM驅動程式中,一方面要處理硬體,另一方面要處理驅動程式與作業系統核心的互動。現在WDF則將驅動程式與作業系統核心之間進行了分離,驅動程式與作業系統互動工作交給框架內封裝的方法(函式)完成,這樣驅動開發者只需專注處理硬體的行為即可。這不僅避免了顧此失彼兩面不周的弊端,也由於雙方的分離,對作業系統內的某些改動,硬體製造商配套驅動程式的開發都有莫大的好處。
5、兩種模式的驅動程式(KMDF、UMDF)都使用同一環境進行構建,這一環境稱為WDK。
6、雖然經過封裝並引入基於對象的技術,所開發的驅動程式在執行效率上並不比原來遜色。