驅動開發 —— 從零開始(1) 配置vs20xx+wdkxx+winX環境並附錄常見問題解決方式
網上教程很多、如何去安裝如何去配置
但是也有些坑感覺並不是那麼的完善
wdk+vs下載鏈接://docs.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk
只要wdk版本與sdk版本對應就行,不用在意是vs20xx
我這邊以vs2017+wdk10+win1909舉例子
一、安裝環境
在單個組件中選擇 SDK -> Windows 10 SDK(10.0.XXXXX.X) 我這裡使用的是Windows 10 SDK(10.0.17763.0)
然後去選擇你的WDK版本 我這裡對應的是Windows 10 版本 1809 的WDK 那麼下載這個就行了
WDK安裝包會自動檢測你與SDK版本符合不符合 如果不符合安裝的時候會有警告提示那麼換其他版本就行(手動狗頭)
WDK安裝完畢自動載入到vs擴展上,若沒有載入找到WDK根目錄列如:C:\Program Files (x86)\Windows Kits\10\Vsix
手動打開目錄下WDK.vsix重新安裝擴展即可
二、環境測試
安裝完畢後、新建項目
選擇一個空項目吧、添加新建項
為了省事直接建的是後輟名C、要不然還得extern 「C」
寫入程式碼
1 #include <ntddk.h> 2 3 //回調 監視系統進程列印 4 VOID nothting(HANDLE ppid, HANDLE mypid, BOOLEAN bcreate) 5 { 6 7 DbgPrint("ProcessNotify\n"); 8 } 9 //卸載函數 10 11 VOID DriverUnload(PDRIVER_OBJECT driver) 12 { 13 PsSetCreateProcessNotifyRoutine(nothting, TRUE); 14 DbgPrint("Unload"); 15 16 } 17 18 19 //入口函數 相當於main 20 NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path) 21 { 22 DbgPrint("%wZ\n", reg_path); 23 driver->DriverUnload = DriverUnload; 24 PsSetCreateProcessNotifyRoutine(nothting, FALSE); 25 return 0; 26 }
到現在你還是不可以跑、需要經過一下設置。
三、環境設置
設置C/C++的警告等級
其他的也不用過於設置、到用的時候你自然就會不用的時候設置了也沒用。
好了現在就可以跑通了。
四、常見問題
很多朋友可以跑通但是載入驅動的時候會出現錯誤,這裡也把錯誤都稍微的總結一下吧。
1、驅動禁止載入
如果你在64位跑但是你生成的是32位的驅動版本那指定是不行的
改為64位再生成
2、驅動沒有簽名
解決辦法1、開機F8 最後一項中選擇禁用驅動程式簽名強制 – > 不推薦 每次開機都要設置一遍
解決辦法2、
1.1右鍵桌面上的「電腦」→「屬性」。
1.2選擇左邊選項卡的「高級系統設置」。
1.3切換到左邊的「硬體」選項卡→選擇第二個「設備安裝設置」。
1.4在彈出來的窗口選擇「否」→第三項→「從不安裝」→「確定」即可
解決辦法3、
管理員打開CMD 輸入 bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS 回車
一勞永逸、不用每次開機設置
解決辦法4、 網上查找一個簽名工具列如:亞洲誠信 、找到一個過期的證書、給生成的sys文件簽上名即可 -> 推薦
3、警告 MSB8038 已啟用 Spectre 緩解,但找不到 Spectre 緩解庫。
安裝Spectre緩解庫、微軟官方講解的很詳細,我直接就複製過來了。
WDK 默認啟用了 Spectre 緩解,但需要為要開發的每個體系結構將 Spectre 緩解庫安裝在 Visual Stuido 中。 此外,開發適用於 ARM/ARM64 的驅動程式還需要這些體系結構的生成工具也安裝在 Visual Studio 中。 若要查找這些項,需要知道系統上安裝的 MSVC 的最新版本。
若要查找系統上安裝的最新版 MSVC,請在 Visual Studio 安裝程式中轉到「工作負荷」頁,在右側窗格的「安裝詳細資訊」下展開「使用 C++ 的桌面開發」,然後找到「MSVC v142 – VS 2019 C++ x64/x86 生成工具(V14.xx)」(請注意,其中的 xx 應該就是可用的最高版本)。
有了此資訊 (v14.xx),轉到「單個組件」,然後搜索「v14.xx」。 這會返回所有體系結構的工具集,包括 Spectre 緩解庫。 選擇要為其開發的驅動程式體系結構。
例如,搜索 v14.25 返回以下內容:
MSVC v142 – VS 2019 C++ ARM build tools (v14.25) |
MSVC v142 – VS 2019 C++ ARM Spectre-mitigated libs (v14.25) |
MSVC v142 – VS 2019 C++ ARM64 build tools (v14.25) |
MSVC v142 – VS 2019 C++ ARM64 Spectre-mitigated libs (v14.25) |
MSVC v142 – VS 2019 C++ x64/x86 build tools (v14.25) |
MSVC v142 – VS 2019 C++ x64/x86 Spectre-mitigated libs (v14.25) |