日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Win1909+vs2019+Windows 10 WDK 2004(10.0.19041.1) + Windows 10 SDK 2004(10.0.19041.1)环境搭建

發布時間:2024/8/1 windows 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Win1909+vs2019+Windows 10 WDK 2004(10.0.19041.1) + Windows 10 SDK 2004(10.0.19041.1)环境搭建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 安裝vs2019,安裝的時候,Workloads選項卡必須選中“Desktop developmet with c++”,這個是驅動開發必須的。?
  • “Individual components”選項卡里,必須選中“Visual Studio SDK”(注意不是Windows SDK),這樣在安裝WDK的時候,才會安裝VS插件(即vs開始菜單中增加Driver菜單項,且VS創建工程的時候,可以選項驅動類型的工程模板)。

  • 安裝Windows 10 SDK 2004(10.0.19041.1),否則在安裝Windows 10 WDK 2004(10.0.19041.1)的時候,會提示SDK不兼容。
  • 安裝Windows 10 WDK 2004(10.0.19041.1)
  • 新建Empty WDM Driver工程
  • 創建First.c文件并加入到工程,內容如下:

    #include <ntddk.h>

    ?

    void DriverUnload(PDRIVER_OBJECT pDriverObject)

    {

    }

    ?

    NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegPath)

    {

    ?????? if (NULL != pDriverObject)

    ?????? {

    ????????????? pDriverObject->DriverUnload = DriverUnload;

    ?????? }

    ?

    ?????? return STATUS_SUCCESS;

    }

    5. 編譯,出現錯誤:

    1>------ 已啟動生成: 項目: MyDriver1, 配置: Debug x64 ------

    1>Building 'MyDriver1' with toolset 'WindowsKernelModeDriver10.0' and the 'Desktop' target platform.

    1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160\Microsoft.CppBuild.targets(458,5): error MSB8040: 此項目需要緩解了 Spectre 漏洞的庫。從 Visual Studio 安裝程序(單個組件選項卡)為正在使用的任何工具集和體系結構安裝它們。了解詳細信息: https://aka.ms/Ofhn4c

    1>已完成生成項目“MyDriver1.vcxproj”的操作 - 失敗。

    ========== 生成: 成功 0 個,失敗 1 個,最新 0 個,跳過 0 個 ==========

    ?

    這個錯誤提示要在VS2019安裝程序中,定位到“單個組件”選項卡,把Spectre組件安裝了,經搜索,有大量Spectre選項,先把X86/X64的全裝了,大約10幾GB。

    重新編譯,也是然并卵。

    還是沒有把引起編譯錯誤的關鍵Spectre項安裝上。從上圖可以看到,這些Spectre是針對不同SDK版本的,有for ATL V141的,有For C++ V14.20的,有“帶有Spectre緩解措施的C++ v14.21 ATL for V142生成工具”的,這里有從v14.21到v14.27。全裝太大,該裝哪個呢,突然想到可以從工程配置中找一找。在工程宏中,搜索14.2,出來的全是14.27,所以可以確認,我們需要的是14.27版本:

    接著,在vs2019安裝程序中,搜索14.27:

    把這些都安裝上,生新編譯,這個錯誤就沒有了。

    也可以采用第二種方案,就是設置工程,讓它不使用Spectre緩解:

    如果編譯出現下面的錯誤:

    1>------ Build started: Project: FirstDriver, Configuration: Debug x64 ------

    1>Building 'FirstDriver' with toolset 'WindowsKernelModeDriver10.0' and the 'Desktop' target platform.

    1>C:\Program Files (x86)\Windows Kits\10\build\WindowsDriver.common.targets(460,5): error MSB6004: The specified task executable location "\stampinf.exe" is invalid.

    1>Done building project "FirstDriver.vcxproj" -- FAILED.

    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

    表示SDK的版本與WDK的版本不一致,我們只需要在vs工程中,重新指定SDK版本即可:

    對于WDK1709,我們指定與之匹配的SDK版本:10.0.16299.0

    ?

    6. 再次編譯,出現如下錯誤:

    1>------ 已啟動生成: 項目: MyDriver2, 配置: Debug x64 ------

    1>Building 'MyDriver2' with toolset 'WindowsKernelModeDriver10.0' and the 'Desktop' target platform.

    1>Stamping x64\Debug\MyDriver2.inf

    1>Stamping [Version] section with DriverVer=09/24/2020,17.53.38.653

    1>D:\myvc\MyDriver2\MyDriver2.inf : error 1297: Device driver does not install on any devices, use primitive driver if this is intended.

    1>已完成生成項目“MyDriver2.vcxproj”的操作 - 失敗。

    ========== 生成: 成功 0 個,失敗 1 個,最新 0 個,跳過 0 個 ==========

    不管它,先把MyDriver2.inf從工程中移除,

    7. 再次編譯,出現如下錯誤:

    1>------ 已啟動生成: 項目: MyDriver2, 配置: Debug x64 ------

    1>Building 'MyDriver2' with toolset 'WindowsKernelModeDriver10.0' and the 'Desktop' target platform.

    1>First.c

    1>D:\myvc\MyDriver2\First.c(3,34): error C2220: 以下警告被視為錯誤

    1>D:\myvc\MyDriver2\First.c(3,34): warning C4100: “pDriverObject”: 未引用的形參

    1>D:\myvc\MyDriver2\First.c(8,68): warning C4100: “pRegPath”: 未引用的形參

    1>已完成生成項目“MyDriver2.vcxproj”的操作 - 失敗。

    ========== 生成: 成功 0 個,失敗 1 個,最新 0 個,跳過 0 個 ==========

    說是兩個參數沒有被使用,在驅動開發中,要求比較嚴苛,警告默認都是當錯誤來對待的。最簡單的方法是,在代碼中引用一下這兩個變量,例如增加下面兩行,只引用,什么也不干:

    pDriverObject;

    pRegPath;

    這種寫法太Low了,驅動提供了一個宏,專門用來引用變量:

    UNREFERENCED_PARAMETER(pDriverObject);

    引用后再次編譯,可編譯通過,生成.sys和.pdb文件。

    ?

    總結:就是WDK版本和SDK版本要一致才行,例如,都是10.0.16299.x版本(后面的x代表的小版本可以不同)。另外,有時候Clear all工程還是編譯不過,但關閉vs后清空臨時文件再編譯就可以了,很是詭異。

    總結

    以上是生活随笔為你收集整理的Win1909+vs2019+Windows 10 WDK 2004(10.0.19041.1) + Windows 10 SDK 2004(10.0.19041.1)环境搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。