驅動開發 —— 從零開始(1) 配置vs20xx+wdkxx+winX環境並附錄常見問題解決方式

Db2k發表於2020-06-14

網上教程很多、如何去安裝如何去配置

但是也有些坑感覺並不是那麼的完善

wdk+vs下載連結:https://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)

相關文章