驅動程序(1) win10下Visual Studio 2017的安裝以及雙機調試搭建

前言:畢業上班以來,現在這個項目比較缺一個做windows下驅動程序開發的,所以本人就負責這方面的工作。之前沒有接觸過,完全萌新,全靠一本武安河編著的《Windows設備驅動程序WDF開發》和各路網上大神們的博客。現在把這段時間來的一些經歷和體會寫下來,如有錯誤還請各位請點輕噴 QAQ

主要的一些資料來源和引用:
[1] 武安河《Windows設備驅動程序WDF開發》
[2] 微軟官網Windowsqu驅動程序入門
https://msdn.microsoft.com/zh-cn/library/windows/hardware/ff554690(v=vs.85).aspx
[3] cnblogs博主lulujianjie的《基於WDF的PCI/PCie接口卡Windows驅動程序》
https://www.cnblogs.com/jacklu/p/4679304.html
[4] CSDN博主Sagittarius_Warrior的一系列關於驅動程序的博客
https://blog.csdn.net/Sagittarius_Warrior/article/list/9
[5] CSDN博主chenchong_219的《從零開始學習Windows WDF驅動程序開發》
https://blog.csdn.net/chenchong_219/article/details/21655481
[6] 還有一些其他博主的博客,這裏就不一一列舉了

一. win10下Visual Studio的安裝

本人用的系統是windows10教育版,首先去微軟官網下載VS Community 2017,https://visualstudio.microsoft.com/zh-hans/vs/ 如果是個人或者小型企業開發,社區版是最好的,因爲它是免費的,只要註冊個微軟賬戶就可以使用了。目前VS也出了最新的2017,所以還是用最新版本的,但是目前網上博客還是很多在使用15或者更早版本的,不過也沒關係,其實大同小異,主要功能還是沒有變化的。

下載之後會先安裝的是一個VS Installer,這是一個輔助安裝工具,在這裏你可以選擇修改安裝VS的哪些模塊。因爲本人需要做的是KMDF相關的開發,所以就選了默認的幾個模塊,比較重要的是Windows 10 SDK(這裏我選擇了最新版10.0.17134.0)和windows Driver Kit(這個WDK需要單獨安裝,微軟官網搜索WDK選擇相應版本安裝即可
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk)
這裏寫圖片描述

安裝好VS之後啓動,在文件->新建項目->Windows Driver->WDF下選擇Kernel Mode Driver(KMDF),這是一個KMDF的模板。
這裏寫圖片描述

命好名和選好存放位置後,確認創建。在右邊的解決方案資源管理器中可以看到,這個模板已經將KMDF驅動程序的開發劃分了5個頭文件和3個源文件,各個部分都已經給出了框架的代碼和註釋,我們需要做的就是在其中寫入自己需求的代碼,所以說是已經很大程度方便了開發者。
這裏寫圖片描述
device.h包含了一些設備的定義信息;driver.h包含了驅動的定義信息;public.h包含了一些驅動程序和應用程序共同的聲明,可以給兩者共同使用;queue.h包含了隊列的定義信息;trace.h包含了用來追蹤相關函數的定義信息,可以不用修改。

driver.c包含了驅動的入口函數DriverEntry和一些其他回調函數,例如設備的添加EvtDeviceAdd;device.c包含了一些控制設備的回調函數,例如可以在此編寫設備資源的獲取函數EvtPrepareHardware;queue.c包含了一些控制隊列的回調函數,例如由應用程序觸發的EvtIoDeviceControl函數。

二. win10下VS的雙機調試搭建

雙機調試網上很多博客已經講過了,但是大都數都是利用虛擬機的方式,而用兩臺計算機的形式則很少,因爲本人兩種方式都做了,這裏就主要講兩臺計算機如何建立通信。其實方法和虛擬機大同小異,主要是可能中間過程不一樣。
(1) 首先需要給兩臺計算機安裝上相同的windows 10,版本也最好一樣,然後拿一個路由器,讓兩臺計算機處於同一個局域網下,在CMD命令提示符裏ping對方主機名,確保兩者之間可以互相ping通。搭建局域網的目的是因爲通信過程中我選擇的是Network方式,讓兩臺計算機處於同一個局域網下可以最大限度減少網絡帶來的干擾。

(2) 接着打開目標機的CMD命令提示符,執行命令 bcdedit/debug on 開啓測試模式;bcdedit/dbgsettings net hostip:w.x.y.z port:n 設置相關參數,w.x.y.z是主機IP4地址,n是選擇的網絡端口,同時生成一個key,待會主機會用到;可利用命令bcdedit/dbgsettings 來查看已經設置好的參數,如下圖所示
這裏寫圖片描述
同時,如果測試模式開啓成功的話,在目標機桌面的右下角會看到測試模式的字樣,並顯示相關的版本信息。
這裏寫圖片描述

(3) 目標機配置好之後,先去主機VS的同一目錄下找到windows kits->10->Remote->x64下的Windows SDK Direct x64 Remote-x64_en-us文件,點擊安裝好,之後複製到目標機上,進行同樣的安裝。之後就可以在主機的VS上開始建立通信了,選擇Driver->Test->Configure Devices->Add New Device,Net work host name填寫目標機的名稱,然後選擇第一種設置方式;
這裏寫圖片描述
接着選擇kernel mode,連接方式爲Network,port number、key、host ip就是在目標機裏設置的那些;配好之後點擊下一步,顯示Configuration Progress,等待通信完成,status出現Configured for driver testing狀態表明通信已建立成功。
這裏寫圖片描述

到這裏VS的安裝和初步通信就完成了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章