Windows驅動程序歷史介紹

Windows Windows 2000 Windows NT Windows XP 一個小時頭 2017-06-14

Windows驅動程序發展歷經了這麼幾個階段:

1. VxD階段:Windows 3.0/3.1/95/98/Me

編譯為VxD。系統啟動時加載或動態加載,必須用匯編編寫(通過VtoolsD也可以用C編寫),並且只支持Win3.x/9x。特點是I/O以驅動本身為對象。

2. NT階段:Windows NT 3.x/4.0/2000/XP->現在

編譯為SYS。以系統服務啟動,非即插即用,並且驅動程序需要自己搜索硬件資源。可以創建設備對象和符號鏈接。

3. WDM階段:Windows 98/Me/2000/XP->現在

編譯為SYS,同時提供INF文件。總線驅動向系統報告插入的新設備,然後系統讀取INF文件,按需加載驅動程序。與NT驅動的不同之處是有AddDevice和IRP_MJ_PNP函數。

4. WDF框架階段(KMDF、UMDF V1、UMDF V2)

a. KMDF(內核模式驅動框架):Windows 2000/XP->現在

KMDF是WDM的封裝,它使得編寫內核模式驅動程序更簡單、更可靠。

b. UMDF V1(用戶模式驅動框架V1):Windows XP->現在

UMDF V1是基於COM的用戶模式驅動編程框架。驅動編譯為DLL,運行於宿主進程之中。特點是安全,不會破壞內核運行導致藍屏崩潰等問題。由於運行於用戶模式,可以使用WinAPI,調試也比較方便,但是隻能通過訪問總線的方式操作硬件,而不能直接訪問硬件,某些硬件類型也不受支持。

c. UMDF V2(用戶模式驅動框架V2):Windows 8.1->現在

UMDF V2是基於C語言的用戶模式驅動編程框架,與KMDF高度相似,但實質上是UMDF V1的升級版,運行於用戶模式的宿主進程中。不支持老系統限制了它的應用。在技術允許的情況下,通過條件編譯,可以對老系統編譯為KMDF,而對新系統編譯為UMDF V2。

Windows驅動程序歷史介紹

個人建議:

建議先學習KMDF(學會KMDF以後UMDF V2可以很快上手),然後學習一下UMDF V1。不要太拘泥於NT和WDM驅動,雖然瞭解一遍它們是怎麼寫的還是有必要的。

微軟在Win10 Build14393收緊了內核模式驅動簽名政策,內核模式驅動必須強制簽名,而用戶模式則可通過註冊表關閉簽名,因此UMDF比NT、WDM、KMDF等內核模式驅動更方便。

相關推薦

推薦中...