WDK(Windows Driver Kit)是微軟推出的Windows驅(qū)動(dòng)程序工具包,它包含Windows Driver Device Kit (DDK),用于測試 Windows 驅(qū)動(dòng)器的可靠性和穩(wěn)定性。微軟最新版本為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等系統(tǒng)!

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