用Visual Studio 2015成功編譯、發布UMDF驅動到目標機!!

開發工具: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.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714413.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714413.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714413.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

阿里巴巴面試必備:數據庫集群知識全面解讀!

大家好,我是小米。今天,我們將深入探討阿里巴巴面試題中一個備受關注的話題:數據庫集群。作為技術領域中的一項重要實踐,數據庫集群不僅是企業架構中的核心組成部分,更是保障系統穩定性和數據可靠性的關鍵一環。讓我們一起來揭秘數據庫集群的奧秘吧! 主從復制過程 主從…

文件操作(超詳細版本)

本章重點 為什么使用文件什么是文件文件的打開和關閉文件的順序讀寫文件的隨機讀寫文件讀取結束的判定 為什么使用文件 我們前面學習結構體時,寫通訊錄的程序,當通訊錄運行起來的時候,可以給通訊錄中增加、刪除數 據,此時數據是…

手勢識別應用介紹

目錄 一、功能介紹 二、安裝部署說明 2.1 文件目錄說明 2.2 手勢識別部分 一、功能介紹 這是一個通過攝像頭捕獲手勢,根據不同的手勢來做出不同操作的計算機程序。目前可以識別9種手勢,可以根據識別到的手勢,進行打開應用、增大音量、減小音量…

[AIGC] 請舉例說明在運行時讀取注解的應用場景。

很高興你對于在運行時讀取注解的應用場景感興趣。以下是我為你整理的一些典型場景: 1. Spring框架 Spring框架廣泛地使用了運行時注解。例如Autowired注解,它可以在運行時實現依賴注入的功能。Spring在啟動時,會通過反射機制尋找到被Autowi…

mkfs.ext4 --- 對磁盤設備進行Ext4格式化

mkfs.ext4命令來自于英文詞組“make filesystem Ext4”的縮寫,其功能是用于對磁盤設備進行Ext4格式化的操作。 mkfs.ext4 參數-b block-size 塊大小(1k,2k,4k) -c 壞塊測試 -l filename從文件讀壞塊列表 -C cluster-size 簇大小 (大塊分配持性…

交友社交軟件開發-php交友聊天系統-

為了開發一個高效的交友系統,需要一個完善的信息管理和篩選機制。這個系統應該能夠根據用戶的個人信息、興趣愛好、價值觀等標準進行篩選,并向用戶提供符合他們要求心儀的人的信息。為了實現這個目標,系統可以利用人工智能技術,分…

MySQL基礎-----SQL語句之DDL語句

目錄 前言 開啟登錄數據庫 一、數據庫操作 1.查詢所有數據庫 2.切換使用數據庫 3.查詢當前使用的數據庫 4.創建數據庫 創建一個hello數據庫, 使用數據庫默認的字符集。 創建一個itheima數據庫,并且指定字符集 5.刪除數據庫 二、表操作 1.查詢當前數據庫所有…

JAVA的學習日記

JAVA的學習日記(2024.3.1)(b站韓順平老師課程學習筆記版) ps:撿起忘光光的Java語言 Sublime //1. public是公有,class是類 //2. public class Hello表示Hello是一個類,是一個public公有的類 //3. Hello{…

解決Unable to load class ‘org.gradle.api.attributes.VerificationType‘

在使用AdnroidStudio開發過程中難免會遇到Unable to load class org.gradle.api.attributes.VerificationType報錯,可以嘗試清理緩存重啟解決 打開 File-》Invalidate Caches... 重啟AndroidStudio后,重新加載即可,但也不是百分百解決。

【MySQL】:高效利用MySQL函數實用指南

🎥 嶼小夏 : 個人主頁 🔥個人專欄 : MySQL從入門到進階 🌄 莫道桑榆晚,為霞尚滿天! 文章目錄 📑前言一. MySQL函數概論二. 字符串函數三. 數值函數四. 日期函數五. 流程函數&#x1…

基于NSFW數據集的違規圖片檢測系統

目錄 一、功能介紹 二、安裝部署說明 2.1數據集簡介 2.2文件目錄說明 一、功能介紹 本程序是一個違規圖片檢測系統,能夠識別用戶上傳的信息圖片,是否包含有敏感(NSFW,Not Safe For Work)信息。 本程序使用雅虎開源的NS…

前后端分離開發

目錄 前言 一、前后端分離開發 1. 介紹 2. 開發流程 3. 前端技術棧 (1)開發工具: (2)技術框架: 二、Yapi 1. 介紹 2. 使用 (1)準備 (2)定義接口 (3&#x…

芯科科技為全球首批原生支持Matter-over-Thread的智能鎖提供強大助力,推動Matter加速成為主流技術

智能鎖領域的先鋒企業U-tec和Nuki選擇芯科科技解決方案,成為Matter-over-Thread應用的領先者 致力于以安全、智能無線連接技術,建立更互聯世界的全球領導廠商Silicon Labs(亦稱“芯科科技”,NASDAQ:SLAB)今…

2024廣東水展即將開幕 | 聚焦凈水行業熱點搶占行業新機遇

2024廣東水展即將開幕 | 聚焦凈水行業熱點搶占行業新機遇 隨著消費升級和人們對環境健康的意識增強,人們除了關注凈水產品的性能外,對產品的設計、服務、多應用場景化等需求也愈發多樣化。節能環保、智能化成為產品迭代升級主要方向。據奧維云網數據顯示…

Docker中使用Tomcat并部署war工程

系列文章目錄 文章目錄 系列文章目錄前言一、構建鏡像二、運行鏡像三、列出正在運行的容器四、停止正在運行的容器 前言 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站,這篇文…

物聯網技術助力智慧城市安全建設:構建全方位、智能化的安全防護體系

一、引言 隨著城市化進程的加速和信息技術的迅猛發展,智慧城市已成為現代城市發展的重要方向。在智慧城市建設中,安全是不可或缺的一環。物聯網技術的快速發展為智慧城市安全建設提供了有力支持,通過構建全方位、智能化的安全防護體系&#…

Kali Linux 安裝 + 獲取 root 權限 + 遠程訪問

一、什么是Kali kali是linux其中一個發行版,基于Debian,前身是BackTrack(簡稱BT系統)。kali系統內置大量滲透測試軟件,可以說是巨大的滲透系統,涵蓋了多個領域,如無線網絡、數字取證、服務器、密…

Python讀取hbase數據庫

1. hbase連接 首先用hbase shell 命令來進入到hbase數據庫,然后用list命令來查看hbase下所有表,以其中表“DB_level0”為例,可以看到庫名“baotouyiqi”是拼接的,python代碼訪問時先連接: def hbase_connection(hbase…

red hat 6.9版本7.9版本 忘記root密碼重置方法

文章目錄 1、重置密碼具體步驟Oracle Linux 6.9版本:1、開機到此界面按e2、在以下界面選擇后按e3、選擇相應內核后按e4、在此界面輸入 single 回車5、回到內核界面后按b進入引導系統6、在#后輸入passwd root修改密碼7、修改密碼:8、Reboot重啟9、使用新密…

【工作實踐-06】uniapp使用webView

一、建立APP頁面和webview的通訊 1.引入webview.js App 端使用 uni.web-view.js 的最低版為 uni.webview.1.5.4.js APP端可以支持網絡網頁和本地網頁,但如果使用本地網頁和相關資源(js、css等文件)必須放在 static 目錄下。 2.引入搭橋docum…