WDK(Windows Driver Kit)是微軟推出的Windows驅動程序工具包,它包含Windows Driver Device Kit (DDK),用于測試 Windows 驅動器的可靠性和穩定性。微軟最新版本為Windows Driver Kit 10 ,支持Windows 10 Windows Server 2019、Windows Server 2016、Windows 8.1 Windows Server 2012 R2、Windows 8 Windows Server 2012、Windows 7 Windows Server 2008 R2 SP1等系統!

Windows驅動程序工具包簡介
通用Windows驅動程序介紹
從 Windows 10 開始,你可以編寫在基于 OneCoreUAP 的 Windows 版本上工作的單個驅動程序,例如 Windows 10 桌面版(家庭版、專業版、企業版和教育版)、Windows 10 移動版和 Windows 10 IoT 核心版 (IoT Core)。此類驅動程序稱為通用 Windows 驅動程序。 通用 Windows 驅動程序調用一組適用于 Windows 驅動程序的接口子集。
當你使用 Microsoft Visual Studio 2015 生成通用 Windows 驅動程序時,Visual Studio 會自動檢查你的驅動程序調用的 API 對通用 Windows 驅動程序是否有效。 你還可以使用 ApiValidator.exe 作為執行此任務的獨立工具。 ApiValidator.exe 工具包含在適用于 Windows 10 的 Windows 驅動程序工具包 (WDK) 中。
通用 Windows 驅動程序還需要一種特殊類型的 INF 文件,稱為通用 INF。通用 INF 可以使用對舊 INF 文件可用的指令和部分子集。
當你準備就緒時,請使用 InfVerif 工具測試驅動程序的 INF 文件。除了報告 INF 語法問題,該工具還會報告 INF 文件是否適用于通用 Windows 驅動程序。
使用方法
一、源代碼編譯
在微軟官網上下載 WDK 開發包,里面有 WDK 編譯器,鏈接器,配置工具,如NMAKE。然后,用記事本寫 C 或 C++ 文件,編譯,鏈接就 OK 了。WDK 庫是一定要的,否則頭文件,導入庫都沒有,就無法編譯了。至于編譯器和連接器,其實就是普通的 cl.exe 和 link.exe 兩個工具,和 VS 中的 VC 編譯鏈接器是同一個。編譯的方法是:在自己的目錄如 c:\wdkdemo 中有個待編譯的 wdkdemo.c ,那么需要在這個目錄里加入兩個文件,一個是 makefile (無后綴名)的固定文件名,內容也是固定的:INCLUDE $(NTMAKEENV)\makefile.def另外一個文件是 sources (無后綴名)的固定文件名,內容為:targettype=drivertargetname=objsources=wdkdemo.c這兩個文件都是讓nmake 工具配置用的,最終調用合適的編譯器和鏈接器開關來編譯出 sys 。WDK包有個 build 命令行工具,當配置好了以上兩個文件后。雙擊 build 工具,進入到 c:\wdkdemo 目錄,輸入命令 build 回車,然后只要 wdkdemo.c 源代碼正確,就會生成 sys 文件了。
二、sys 文件安裝
在網上下載個免費的驅動安裝工具,這個不難吧,一般調試用的驅動,建議在安裝的時候,千萬記得要選擇手動模式,因為自啟動模式,如果驅動有BUG ,會導致藍屏,重啟機器后,驅動因自啟動又被加載,導致再次藍屏。
三、調試
在微軟官網下個 windbg ,但 windbg 需要調試機和被調試機模式,因此 windbg 最好配合 vmware 來使用。我感覺,sys 文件編譯是很麻煩的。不如編譯應用程序,只要一個 VS 可以搞定大部分的事情。驅動開發需要很多關于其他工具的知識。譬如,用記事本或者NOTEPAD++編輯源代碼感覺很吃力,因為 VS 沒有驅動開發的項目,因此 VS 不直接支持驅動開發,當然,可以進行配置,但 VS 配置驅動是很麻煩的。另外, windbg 有很多的調試命令,當然常規的命令一般4、5個就夠用了。VMWARE 的配置也是很麻煩的,當初,我自己研究了很長時間,網上雖然有教程,但都是講得不全面,譬如要配置10個地方,網上都是只說7、8個,導致 VMWARE 配置不成功。驅動開發還有 DRIVER STUDIO 這么一個 IDE 可以使用,另外還有 IRPTRACE ,DEVICE TREE , DEBUG VIEWER 等工具。我開發驅動的工具是 VMWARE + VS2010 + WDK + WINDBG + WINOBJ + IRPTRACE + DEBUG VIEWER 這幾個。