最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

驅(qū)動開發(fā):配置Visual Studio驅(qū)動開發(fā)環(huán)境

2023-03-13 14:58 作者:孤風(fēng)洗劍  | 我要投稿

在正式開始驅(qū)動開發(fā)之前,需要自行搭建驅(qū)動開發(fā)的必要環(huán)境,首先我們需要安裝Visual Studio 2013這款功能強大的程序開發(fā)工具,在課件內(nèi)請雙擊ISO文件并運行內(nèi)部的vs_ultimate.exe安裝包,Visual Studio的安裝非常的簡單,您只需要按照提示全部選擇默認(rèn)參數(shù)即可,根據(jù)機器配置不同可能需要等待一段時間;

回到頂部

配置驅(qū)動開發(fā)環(huán)境

在正式開始驅(qū)動開發(fā)之前,需要自行搭建驅(qū)動開發(fā)的必要環(huán)境,首先我們需要安裝Visual Studio 2013這款功能強大的程序開發(fā)工具,在課件內(nèi)請雙擊ISO文件并運行內(nèi)部的vs_ultimate.exe安裝包,Visual Studio的安裝非常的簡單,您只需要按照提示全部選擇默認(rèn)參數(shù)即可,根據(jù)機器配置不同可能需要等待一段時間;

接著讀者還需要繼續(xù)安裝Windows Driver Kit 8.1工具包,請將該工具包解壓縮到桌面,并雙擊wdksetup.exe進行安裝,過程中只需要一直下一步,并等待WDK工具包安裝完成;

WDK就是內(nèi)核編程開發(fā)工具包,某些讀者可能聽說過DDK或者IFSDDK,最典型的開發(fā)工具包莫過于DDK7600,直到目前此類工具包仍然可以正常使用,但并不推薦。

為了能測試驅(qū)動程序運行狀態(tài),讀者需安裝VMWare虛擬機,雙擊附件中的VMware-workstation-full-16.2.4-20089737.exe安裝程序一直點擊下一步即可,需要注意的是在如下選項中請在增強型鍵盤驅(qū)動程序上打?qū)?,之后等待安裝完畢即可;

接著打開VMware虛擬機,并在【文件】處選擇【新建虛擬機】,單機下一步并選中【稍后安裝操作系統(tǒng)】,在操作系統(tǒng)選擇頁面選擇【W(wǎng)in10 x64】版本。

在硬件配置處,讀者可根據(jù)自己電腦的配置靈活的選擇,當(dāng)自定義配置完成后,則虛擬機模板將被創(chuàng)建。

虛擬機模板創(chuàng)建完成后,讀者可根據(jù)如下配置選擇編輯虛擬機設(shè)置,并在磁盤位置處將課件中的cn_windows_10_consumer_editions_version_1903_x64_dvd_8f05241d.iso掛載到虛擬機上;

點擊開啟虛擬機,并按照提示將Windows系統(tǒng)正確的安裝,需要注意的是在選擇版本時,讀者最好使用教育版與筆者開發(fā)環(huán)境保持一致,至此只需等待系統(tǒng)安裝完畢,根據(jù)系統(tǒng)差異安裝時間可能有所差別,耐性等待即可;

當(dāng)一切安裝就緒后我們需要在系統(tǒng)中安裝VMware Tools工具,該組件在安裝后可讓虛擬機具備有拖拽上傳文件的功能,且鼠標(biāo)鍵盤將可以自由切換,該功能是我們必須要用到的;

安裝VMware Tools工具很容易,只需要點擊安裝菜單,后會在虛擬機中出現(xiàn)DVD驅(qū)動器,此時雙擊驅(qū)動器并按照要求安裝即可,安裝完成后重啟系統(tǒng),此時則具備了拖拽上傳功能;

當(dāng)這些都做好以后,建議用戶關(guān)閉虛擬機,并點擊【虛擬機】菜單,找到【快照】并拍攝一個快照,快照的作用是當(dāng)虛擬機系統(tǒng)出現(xiàn)問題后可快速恢復(fù)到初始模式,避免重裝系統(tǒng),在后續(xù)課程中讀者會出現(xiàn)無數(shù)次的藍(lán)屏,而虛擬機快照的快速恢復(fù)功能則是一個很好的選擇;

回到頂部

配置驅(qū)動開發(fā)模板

1.打開Visual Studio開發(fā)工具,然后選擇【文件】菜單新建項目,并在已安裝模板中選中【Visual C++】新建空項目,并將項目名稱命名為【W(wǎng)inDDK】點擊確定。

2.依次選擇【解決方案視圖-源文件-添加新建項】選項卡,或者直接按下Ctrl + Shift + A快捷打開菜單,并創(chuàng)建main.c文件。

3.接著需要修改配置管理器,添加自定義配置管理,選擇【生成-配置管理器-新建】選項卡,此處我們命名為WinDDK即可。

4.修改配置屬性中的【常規(guī)】屬性,點擊菜單欄中的調(diào)試,選擇【W(wǎng)inDDK屬性-配置-常規(guī)】修改為標(biāo)黃處所示內(nèi)容即可。

5.配置可執(zhí)行文件路徑與導(dǎo)入庫路徑,這里我們選擇【配置屬性-VC++目錄】依次將如下信息填入配置項。

可執(zhí)行目錄 C:\Program Files (x86)\Windows Kits\8.1\bin\x64 C:\Program Files (x86)\Windows Kits\8.1\bin 包含目錄 C:\Program Files (x86)\Windows Kits\8.1\Include\km C:\Program Files (x86)\Windows Kits\8.1\Include\shared C:\Program Files (x86)\Windows Kits\8.1\Include\um C:\Program Files (x86)\Windows Kits\8.1\Include\wdf\kmdf\1.13C:\Program Files (x86)\Windows Kits\8.1\Include\wdf\umdf\2.0C:\Program Files (x86)\Windows Kits\8.1\Include\winrt 引用目錄 C:\Program Files (x86)\Windows Kits\8.1\Lib\win7\km\x64 庫目錄 C:\Program Files (x86)\Windows Kits\8.1\Lib\win7\km\x64 C:\Program Files (x86)\Windows Kits\8.1\Lib\wdf\kmdf\x64\1.13C:\Program Files (x86)\Windows Kits\8.1\Lib\wdf\umdf\x64\2.0C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64 C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\km\x64

當(dāng)如上文件配置完成后,最終效果如下圖所示;

6.配置C/C++優(yōu)化選項,在配置屬性中找到【C/C++-所有選項】并依次修改下方幾個關(guān)鍵位置。

安全檢查 ? ? ? ? 禁用安全檢查 (/GS-)將警告視為錯誤 ? ?否 (/WX-)警告等級 ? ? ? ? 關(guān)閉所有警告 啟用C++異常 ? ? ?否 調(diào)用約定 ? ? ? ? __fastcall (/Gr)優(yōu)化 ? ? ? ? ? ?已禁用 (/Od)運行庫 ? ? ? ? ?多線程 (/MT)預(yù)處理器定義 ? ? _AMD64_;_DDK_;_WIN32_WINNT=0x0501;WINVER=0x0501;_NDEBUG;DBG=0;%(PreprocessorDefinitions)

當(dāng)如上文件配置完成后,最終效果如下圖所示;

7.配置連接器選項,選擇【連接器-所有選項】依次修改下方幾個關(guān)鍵位置。

附加選項 ? ? ? ? ? ?/IGNORE:4078 /safeseh:no 附加依賴項 ? ? ? ? ?ntoskrnl.lib;ndis.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib 固定基址 ? ? ? ? ? ?此處需要清空 忽略所有默認(rèn)庫 ? ? ?是 (/NODEFAULTLIB)啟用增量鏈接 ? ? ? ?否 (/INCREMENTAL:NO)驅(qū)動程序 ? ? ? ? ? ?驅(qū)動程序 (/Driver)入口點 ? ? ? ? ? ? ?DriverEntry 生成清單 ? ? ? ? ? ?否 (/MANIFEST:NO)生成調(diào)試信息 ? ? ? ?是 (/DEBUG)生成映射文件 ? ? ? ?是 (/MAP)數(shù)據(jù)執(zhí)行保護 ? ? ? ?是 (/NXCOMPAT)隨機基址 ? ? ? ? ? 此處需要清空 子系統(tǒng) ? ? ? ? ? ? 本機 (/SUBSYSTEM:NATIVE)

當(dāng)如上文件配置完成后,最終效果如下圖所示;

8.上方的配置已經(jīng)基本完成了,接著我們編寫一段驅(qū)動初始化代碼,然后按下F7即可完成驅(qū)動的編譯。

// 署名權(quán)// right to sign one's name on a piece of work// PowerBy: LyShark// Email: me@lyshark.com#include <ntifs.h>// 卸載驅(qū)動NTSTATUS UnDriver(PDRIVER_OBJECT driver){ DbgPrint("Uninstall Driver Is OK \n"); return STATUS_SUCCESS;}// 驅(qū)動入口地址NTSTATUS DriverEntry(IN PDRIVER_OBJECT Driver, PUNICODE_STRING RegistryPath){ DbgPrint("Hello LyShark \n"); Driver->DriverUnload = UnDriver; return STATUS_SUCCESS;}

9.最后生成一個驅(qū)動開發(fā)模板,依次選擇【文件-導(dǎo)出模板-項目模板-下一步-完成】即可完成模板的導(dǎo)出,此時關(guān)閉VS工具并再次打開,就能直接使用我們的模板來開發(fā)驅(qū)動了,當(dāng)用戶需要使用時,不需要每次都配置。

  • 模板位置:C:\Users\admin\Documents\Visual Studio 2013\My Exported Templates

讀者也應(yīng)注意,如果用戶通過模板創(chuàng)建驅(qū)動開發(fā)項目則需要手動在配置菜單中切換到WinDDK選項的x64模式下。

回到頂部

配置驅(qū)動雙機調(diào)試

1.首先需要在VMware虛擬機關(guān)閉狀態(tài)下添加一個管道虛擬串口,此處需要刪除打印機,否則串口之間沖突。

操作步驟:編輯虛擬機設(shè)置?->?添加?->?串行端口?->?完成
參數(shù)配置:使用命名管道?->?\\.\pipe\com_1?->?該端是服務(wù)器,另一端是應(yīng)用程序?->?輪詢時主動放棄CPU->確定

2.開啟虛擬機中的Windows系統(tǒng),然后以管理員身份運行CMD命令行,輸入bcdedit命令,可以查看到系統(tǒng)的當(dāng)前啟動項,如果是新的系統(tǒng),則只會有{current}啟動項以及一個{bootmgr}項。

連續(xù)執(zhí)行下方的七條命令,依次建立啟動項,激活Windows系統(tǒng)的調(diào)試模式,并開啟串口通信,調(diào)試端口波特率為115200

bcdedit /set testsigning on bcdedit -debug on bcdedit /bootdebug on bcdedit /set "{current}" bootmenupolicy Legacy ? ? ? ? ? ? // 修改啟動方式為Legacy bcdedit /dbgsettings SERIAL DEBUGPORT:1 BAUDRATE:115200 ? ?// 設(shè)置串口1為調(diào)試端口波特率為115200 bcdedit /copy "{current}" /d "Debug" ? ? ? ? ? ? ? ? ? ? ? // 將當(dāng)前配置復(fù)制到Debug啟動配置 bcdedit /debug "{<新建的啟動配置的標(biāo)識符>}" on ? ? ? ? ? ? ? // 打開調(diào)試開關(guān)

但需要注意{<新建的啟動配置的標(biāo)識符>}需替換成{bdb0b3b6-3f21-11ed-9931-d46011246f28}標(biāo)志,如下所示。

3.最后查看一下當(dāng)前調(diào)試配置選項,執(zhí)行命令?bcdedit /dbgsettings,顯示出使用的第一個串口,波特率為115200bps,保持默認(rèn)不需要修改。

4.配置完成后,重新啟動系統(tǒng),在開機的時候選擇Windows10 [啟用調(diào)試程序]則系統(tǒng)會黑屏,說明已經(jīng)正常進入調(diào)試模式了。

5.此時回到物理機上面,解壓縮課件中的WinDBG_10.0.16299.15.zip到D盤根目錄下,我們在命令行中切換到WinDBG\x64的根目錄下,并執(zhí)行以下命令,即可連接虛擬機串口進行調(diào)試了。

  • 執(zhí)行命令?windbg.exe -b -k com:port=\\.\pipe\com_1,baud=115200,pipe?如下圖

6.至此我們還需要加載符號,符號的作用是方便我們調(diào)試,該符號是由微軟官方維護的權(quán)威資料,在命令行下依次執(zhí)行以下命令,配置好符號加載并啟動系統(tǒng)。

kd> .sympath SRV*c:\mySymbols*http://msdl.microsoft.com/download/symbolskd> .reload kd> g kd> g kd> ed nt!Kd_SXS_Mask 0kd> ed nt!Kd_FUSION_Mask 0kd> u KiSystemServiceUser

這樣即可完成配置操作,此時系統(tǒng)已被斷下等待我們執(zhí)行操作,如下圖所示。

7.最后我們配置測試一下調(diào)試功能,首先編寫以下代碼,代碼中使用DbgBreakPoint()設(shè)置斷點,將會在入口處中斷。

// 署名權(quán)// right to sign one's name on a piece of work// PowerBy: LyShark// Email: me@lyshark.com#include <ntifs.h>// 驅(qū)動默認(rèn)回調(diào)NTSTATUS DriverDefaultHandle(PDEVICE_OBJECT pDevObj, PIRP pIrp){ NTSTATUS status = STATUS_SUCCESS; pIrp->IoStatus.Status = status; pIrp->IoStatus.Information = 0; IoCompleteRequest(pIrp, IO_NO_INCREMENT); return status;}// 驅(qū)動卸載函數(shù)VOID UnDriver(PDRIVER_OBJECT driver){ DbgPrint("驅(qū)動已卸載 \n");}// 驅(qū)動入口地址NTSTATUS DriverEntry(IN PDRIVER_OBJECT Driver, PUNICODE_STRING RegistryPath){ // 初始化默認(rèn)派遣函數(shù) NTSTATUS status = STATUS_SUCCESS; for (ULONG i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++) { Driver->MajorFunction[i] = DriverDefaultHandle; } // 設(shè)置斷點 DbgBreakPoint(); // KdBreakPoint(); // __debugbreak(); DbgPrint("驅(qū)動已加載 \n"); // 驅(qū)動卸載函數(shù) Driver->DriverUnload = UnDriver; return STATUS_SUCCESS;}

通過Visual Studio工具編譯如上代碼片段,并在WinDBG中輸入g命令讓系統(tǒng)運行起來,將編譯好的驅(qū)動程序拖入到虛擬機中,并以管理員身份打開Windows 64Signer.exe,使用該工具對驅(qū)動程序進行簽名,如下圖所示;

簽名完成后將我們的驅(qū)動文件WinDDK.sys,拖入到KmdManager.exe驅(qū)動加載工具中,并通過驅(qū)動加載工具加載運行,此時Windows系統(tǒng)會卡死,回到WinDBG中發(fā)現(xiàn)已經(jīng)可以進行調(diào)試了,如下圖所示;

此處需要擴展一個知識點,如果不使用WinDBG工具而想要獲取到DbgPrint()函數(shù)輸出結(jié)果,則你可以使用課件中提供的dbgview64.exe程序,不過此程序需要注意幾點,該程序需要使用管理員身份運行,且運行后需要將Capture菜單中的屬性全部打?qū)?,如下圖所示;

此時DebugView會出現(xiàn)很多的無用輸出,則你需要打開過濾器按鈕,輸入STORMINI將此類輸出屏蔽掉,如下圖所示;

至此再次使用KmdManager工具加載WinDDK驅(qū)動,則可以無干擾的輸出我們所需結(jié)果。


驅(qū)動開發(fā):配置Visual Studio驅(qū)動開發(fā)環(huán)境的評論 (共 條)

分享到微博請遵守國家法律
星子县| 仙游县| 莒南县| 荃湾区| 嵊州市| 托克逊县| 广宁县| 遵化市| 阳江市| 连平县| 滨海县| 阿图什市| 平泉县| 成武县| 达日县| 隆回县| 贡觉县| 宝应县| 长宁区| 济阳县| 祁东县| 江门市| 启东市| 浦江县| 塔河县| 肥城市| 洱源县| 临夏市| 海城市| 大渡口区| 托克逊县| 甘洛县| 青神县| 田林县| 井冈山市| 白沙| 理塘县| 电白县| 元江| 阿尔山市| 岚皋县|