開發工具:Visual Studio 2015企業版
主 ? ? ?機:windows10 X64企業版,主機是安裝了Visual Studio 2015的操作系統,主要進行驅動開發和調試。
目 ?標 機:windows10 X86企業版,目標機是安裝和調試驅動的操作系統,和主機是分離的獨立的操作系統。
虛 ?擬 機:VMWear Workstation 12 Pro
前提:我們已經成功安裝了Visual Studio 2015以及WDK,而且更重要一點是一定要SDK版本和WDK版本保證一致,如果不一致會造成Visual Studio 2015里面C/C++的宏定義和使用的WDK不匹配,嚴重影響驅動程序的編譯!關于這個問題,可以看這篇文章:用Visual Studio 2015 編寫驅動之前一定要注意的問題!!! - sunylat - 博客園
好了,下面我就告訴大家我是如何一步步實現這個目標的!
一,配置目標機:讓目標機能夠和主機通訊,成為一個可以進行我們開發的驅動安裝和調試的操作系統。
1,添加和設置通訊的串口:我們通訊采用串口方式,默認情況下,在VM里面安裝的操作系統并沒有打開串口,需要我們手動添加,下面就是添加的過程。注意:添加端口時候,虛擬機中的操作系統必須是關機狀態才可以添加。
A,在想要設置為目標機的操作系統上鼠標右鍵->設置。
B,在虛擬機設置里面點擊下面的“添加”按鈕,隨后在彈出的“添加硬件向導”里面,選中左側列表中的“串行端口”,隨后點擊“下一步”按鈕。
?C,選中“輸出到命名管道”,隨后點擊“下一步”按鈕。
D,在這里,點擊中間的下拉列表,選擇“另一端是應用程序”,其它兩項不需要修改,上面一項是命名管道名稱;下面是啟動時連接,我們這兩項保持默認就可以了!隨后點擊“完成”按鈕。
E,這是最終配置截圖,如果配置都正確了,點擊“確定”按鈕,完成串口添加和設置。
?二,設置目標機:讓目標機成為一個可以安裝和調試我們開發驅動的環境。
1,允許目標機成為調試環境:執行兩個DOS命令。
啟動目標機操作系統后,以管理員權限打開DOS窗口,把盤符轉換到C盤根目錄下,隨后依次執行下面兩條命令:
A,bcdedit /debug on
B,bcdedit /dbgsettings serial debugport:1 baudrate:115200?
上面兩條命令執行時候,如果正常,應該沒有任何錯誤顯示,如果一切正常,那么隨后我們應該重新啟動一下當前操作系統!
操作系統啟動完畢后,如果我們想驗證上面命令操作是否成功,可以以管理員權限打開DOS窗口,執行這個命令:bcdedit /dbgsettings?
如果我們這些DOS命令設置成功了,那么這個驗證的DOS命令返回信息應該是這樣:
2,安裝WDK Test Target Setup程序:安裝這個程序后,才可以在主機端使用VS2015對目標機進行設置。注意:這個安裝程序有兩個版本,分別是X86和X64,對應不同平臺的操作系統,因為我的目標機是X86,所以我選擇的是:“C:\Program Files (x86)\Windows Kits\10\Remote\x86\WDK Test Target Setup x86-x86_en-us.msi”,如果你的目標機是X64平臺,你應該用這個安裝文件:“C:\Program Files (x86)\Windows Kits\10\Remote\x64\WDK Test Target Setup x64-x64_en-us.msi”。把這個安裝文件拷貝到目標機中,隨后安裝,安裝完畢后重新啟動一下操作系統!
通過上面的設置,我們已經完成了目標機的準備工作,剩下就是如何在VS2015里面建立同目標機的通訊了!!
二,在Visual Studio 2015里同目標機建立通訊:
A,在VS2015的菜單中,點擊“Driver”->"Test"->"Configure Devices"。
B,
C,
D,上面點擊“下一步”按鈕后,就進入了主機和目標機建立通訊的過程,這個過程需要一些時間,要耐心等待完成,不要進行其它操作,期間目標機會進行多次重啟操作,都是自動完成,我們不要進行任何人為干預!如果一切順利,我們就會成功建立主機和目標機的通訊,如下圖:
?三,編寫測試驅動程序:
A,點擊“新建項目”,在Visual C++里面選擇“WDF”,隨后在右側選擇指定項目,隨后點擊“確定”按鈕。
B,VS2015使用UMDF模板,自動給我們建立了一個驅動工程,包含了完整的驅動需要的各種文件,我們暫時不對這些文件做任何修改,為了保證這些文件可以正常編譯,從而測試發布到目標機中!
C,對這個驅動進行編譯,如果一切順利,那么從輸出窗口,我們應該能看到編譯成功的信息!
?四,發布到目標機:把我們編寫的驅動程序通過主機和目標機建立的通訊,發布到目標機中!在發布時候,確保目前目標機已經在VM中處于開機正常運行狀態!!!
A,在當前工程上鼠標右鍵,點擊“屬性”,隨后在左側選擇“Driver Install”->"Development",隨后右側選擇正確就可以發布了,選擇項目按照下面截圖標識!
B,點擊VS2015的菜單“生成”->“部署 UMDF 2 Driver1”,注意,這里面的“UMDF 2 Driver1”是我當前建立的工程名稱,如果你的工程名稱和我的不一樣,那么只是后面的工程名稱不同而已,也是選擇這個菜單項!
C,正在發布的截圖,輸出窗口會不斷出現各種信息!
D,發布成功的截圖:經過一小段時間等待,最終提示信息,我們的驅動發布成功了!!
五,驗證驅動是否發布成功:進入VM里面的目標機,隨后查找我們發布的驅動程序!
A,在我的電腦上鼠標右鍵,隨后在彈出菜單中點擊“管理”。
B,點擊左側“設備”,看右側的“Samples”下面,是不是已經有了我們發布的驅動?
?WDK10下載:Download the Windows Driver Kit (WDK) - Windows drivers | Microsoft Learn
?WDK10必須在安裝完SDK之后才安裝它!!SDK在安裝VS2015時候可以安裝!
MSDN驅動開發教程:製作您的第一個驅動程式 - Windows drivers | Microsoft Learn
微軟官方提供的Windows 10驅動例子:GitHub - microsoft/Windows-driver-samples: This repo contains driver samples prepared for use with Microsoft Visual Studio and the Windows Driver Kit (WDK). It contains both Universal Windows Driver and desktop-only driver samples.