Settings | Sign in | Sign up

The author has 2 posts.

【轉載】Windows驅動程序歷史介紹

Floor 1 巨大八爪鱼 5/25/25 9:07
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。

個人建議:

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

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

https://www.kechuang.org/t/80561
Floor 2 巨大八爪鱼 5/25/25 9:25
KMDF和UMDF V1支持XP系統。

Content converter:

Reply the post
Content:
User: You are currently anonymous.
Captcha:
Unclear? Try another one.
©2010-2025 Purasbar Ver3.0 [Mobile] [Desktop]
Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported license.