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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows 7 驱动开发

發(fā)布時間:2023/12/10 windows 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows 7 驱动开发 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

本文是對Win7(64)+VS2010+WDK7.1.0WinDDK\7600.16385.1)開發(fā)驅(qū)動的小結(jié)。?

?

一、系統(tǒng)工具

?

1Win7(amd64)系統(tǒng)

注:已裝系統(tǒng)后,管理員身份運行cmd命令,查看bcdedit?/set?testsigning?truebcdedit??/debug?on?等命令是否運行成功。若失敗,請將bcdedit命令所在文件夾boot對應(yīng)的盤(一般C盤)設(shè)置為活動狀態(tài);若依然失敗,請修復(fù)C盤下的Boot(系統(tǒng)引導(dǎo)文件所在),或重裝系統(tǒng)。

?

2、VS2010

?

3、WDK7.1.0WinDDK\7600.16385.1

地址:https://msdn.microsoft.com/en-us/windows/hardware/hh852365?該地址還連接?Windbg?調(diào)試工具?和Windows?Symbols?,可以下載下來備后續(xù)調(diào)試時用。

?

4WinDbg

地址:http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Symbols

地址:https://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx

注:Symbol文件是從微軟的網(wǎng)站上http://msdl.microsoft.com/download/symbols下載而來,這個網(wǎng)址是不可以用IE直接打開的,WinDbg->File->Symbol?File?Path界面中輸入SRV*C:\WINDOWS\Symbols*http://msdl.microsoft.com/download/symbols;?并選擇ReloadWinDbg會自動幫你下載,關(guān)鍵是勾選reload

?

5InstDrv軟件(用于安裝、啟動、停止、卸載驅(qū)動)

注:srvinstw.exe?也可以安裝、卸載sys文件,但需要在cmd命令窗口下執(zhí)行net?start?驅(qū)動名、net?stop?驅(qū)動名來啟動、停止服務(wù)。

?

664Signer-V1.2Win7?64位?私有測試數(shù)字簽名軟件)

?

7DbgWiew.exe?(查看內(nèi)核模塊的輸出信息)

地址:https://technet.microsoft.com/en-us/sysinternals/bb896647.aspx

?

8、虛擬機(WMware10.0供雙機調(diào)試)

地址:http://www.microsoft.com/zh-CN/download/confirmation.aspx?id=8002

?

9、其他軟件:?虛擬光驅(qū)DAEMON?Tools?LiteEasyBCD(系統(tǒng)引導(dǎo)文件修復(fù)工具)PartitionManager(將C盤設(shè)置為活動分區(qū))等

?

?

二、配置VS2010?64位開發(fā)環(huán)境

1、在VSVisualC++下新建?空項目

?

?

添加Driver類,將頭文件刪除,將Driver.cpp文件修改為Driver.c文件,內(nèi)容如下:

#include?"ntddk.h"

?

//?提供一個Unload函數(shù)只是為了

VOID?DriverUnload1(PDRIVER_OBJECT?driver)

{

//?但是實際上我們什么都不做,只打印一句話:

DbgPrint("MyDriver:?Our?driver?is?unloading\r\n");

}

?

NTSTATUS

DriverEntry(PDRIVER_OBJECT?DriverObject,PUNICODE_STRING?RegistryPath)

{

DbgPrint("MyDriver:?Hello,?my?salary!");

DriverObject->DriverUnload?=?DriverUnload1;

return?STATUS_UNSUCCESSFUL;

}

?

注:添加類后,在屬性中顯示出C/C++項,供配置屬性。

?

2、點擊VS中的解決方案配置的下按鈕(即debug所處的下拉框按鈕),點擊配置管理器,點擊活動方案配置,點擊新建,輸入DriverDebug64、默認空,解決方案平臺:選X64

建成后的效果

?

3、點擊VS中視圖->其他窗口->屬性管理器

?

?

4、右擊屬性管理器中的DriverDebug64,選擇屬性,在彈出的窗體中進行必要的設(shè)置。

(此處的設(shè)置都是必須的,?對復(fù)雜些的驅(qū)動開發(fā)也許還要額外另加設(shè)置)

?

注:WDK7.1.0默認安裝在C:\WinDDK\7600.16385.1文件夾下

?

?

1)常規(guī)

目標文件擴展名:.sys

2)VC++目錄

可執(zhí)行文件目錄(編譯器路徑):C:\WinDDK\7600.16385.1\bin\amd64

注:Xp系統(tǒng)64位如下:

----------C:\WinDDK\7600.16385.1\bin\x86\amd64

?????? ----------C:\WinDDK\7600.16385.1\bin\x86

包含目錄:C:\WinDDK\7600.16385.1\inc\api

C:\WinDDK\7600.16385.1\inc\crt

C:\WinDDK\7600.16385.1\inc\ddk

庫目錄:C:\WinDDK\7600.16385.1\lib\win7\amd64

3)C/C++

預(yù)處理器->預(yù)處理器定義:

_AMD64_=1,AMD64=1,STD_CALL=1,WINVER=0x0501,_DEBUG?=1

高級->調(diào)用約定:__stdcall?(/Gz)

代碼生成-->運行庫:選擇多線程調(diào)試/MTd 或者 多線程調(diào)試DLL/MDd (主要解決_DEBUG未預(yù)定義的問題)

4)連接器

輸入->附加依賴項:ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB;%(AdditionalDependencies)

輸入->忽略所有連接庫:是?(/NODEFAULTLIB)

清單文件->啟用用戶賬戶控制(UAC):否?(/MANIFESTUAC:NO)

系統(tǒng)->子系統(tǒng):控制臺?(/SUBSYSTEM:CONSOLE)

系統(tǒng)->驅(qū)動程序:驅(qū)動程序?(/Driver)

系統(tǒng)->堆棧保留大小:4194304(可修改)

系統(tǒng)->堆棧提交大小:4096??(可修改)

高級->入口點:DriverEntry

高級->基址:0x10000?

高級->隨機基址:(清空)

高級->數(shù)據(jù)執(zhí)行保護(dep): (清空)

?

調(diào)試下:

解決_DEBUG未預(yù)定義的問題

C/C++

代碼生成-->運行庫:選擇多線程調(diào)試/MTd?或者?多線程調(diào)試DLL/MDd?

解決找不到符合問題(包含調(diào)試信息的未生成工程名.pdb文件)

C/C++

常規(guī)-->調(diào)試信息格式:用于“編輯并繼續(xù)”的程序數(shù)據(jù)庫?(/ZI)

優(yōu)化:已禁用?(/Od)

連接器

生成調(diào)試信息:是?(/DEBUG)

?

注:參考C:\WinDDK\7600.16385.1文件夾的ia64X86等路徑,進行修改可以配置為ia6432位系統(tǒng)。

?

5、編譯若通過,則配置成功,并生產(chǎn).sys等文件。

?

三、調(diào)試

?

配置調(diào)試機

?

1、將Win7設(shè)置為可調(diào)試狀態(tài)

1)以管理員身份打開cmd命令窗口:Win?+?R?打開運行輸入框,輸入cmd;或鼠標點擊系統(tǒng)開始圖標,在輸入框中輸入cmd,右擊上方搜索顯示出的cmd.exe,以管理員身份運行。

2)依次輸入:

bcdedit?/?

Bcdedit?/enum?OSLOADER

Bcdedit?/copy?{current}?/d?“Windows?7?Copy”

Bcdedit?/debug?on

Bcdedit?/bootdebug?on

Bcdedit?/dbgsettings

Bcdedit?/timeout?7

?

2、將Win7設(shè)置為測試版

管理員身份運行cmd命令,bcdedit?/set?testsigning?true

?

3、測試證書數(shù)字簽名

以管理員身份運行64Signer?V1.2.exe,點擊瀏覽找到并雙機.sys文件,點擊簽名。

?

4、查看內(nèi)核輸出信息

以管理員身份運行Dbgview.exe,點擊Capture菜單,勾選上Captrue?kernel項。

?

5、配置WinDbg

1)設(shè)置系統(tǒng)字符表路徑:WinDbg->File->Symbol?File?Path界面中輸入

SRV*C:\WINDOWS\Symbols*http://msdl.microsoft.com/download/symbols;?并選擇

ReloadWinDbg會自動下載字符表,關(guān)鍵是勾選reload

2)設(shè)置自己生成的.sys對應(yīng)的字符(Symbol)路徑:

E:\Project\TestDriver\TestDriver\x64\DriverDebug64

3)設(shè)置自己生成.sys的原代碼路徑:E:\Project\TestDriver\TestDriver

注:自己生成的.sys文件默認路徑:E:\Project\TestDriver\x64\DriverDebug64

?

6、安裝.sys文件

以管理員身份運行運行InstDrv.exe,選擇.sys文件,進行安裝、啟動等操作

?

注:請不要在本地主機,測試含有斷點的內(nèi)核,否則卡機,無法進行任何操作,應(yīng)該采用雙機調(diào)試(即新建個虛擬機,本地機與虛擬機通過管道進行通信)。

?

配置虛擬機

?

1、安裝虛擬機

注:主板默認沒有開啟虛擬化技術(shù),一般方法是開機或重啟時按F12鍵進入BIOS菜單,將虛擬化(Virtualization...

?

2、配置虛擬機

1)開始-->WMware?Work?Stations-->雙擊“我的電腦”下的一個虛擬機(Windows?7?x64-->編輯虛擬機設(shè)置-->移除打印機-->添加竄行端口

2)選中剛添加的竄行端口,在右側(cè)的對話框中,設(shè)置如下:

勾選?啟動時連接

選擇?使用命名的管道(N

其下的兩個下拉框分別選擇:該端是服務(wù)器、另一端是應(yīng)用程序

3)本人執(zhí)行和未執(zhí)行該步驟都能夠調(diào)試成功。本步驟作為多余補償,如果你未執(zhí)行該步驟失敗,請將主機目錄C:\WINDOWS\Symbols下的拷貝到虛擬機的相同位置。并且把自己生成的驅(qū)動編譯后生成的字符文件(E:\Project\TestDriver\TestDriver\x64\DriverDebug64

目錄下)放到虛擬機的C:\WINDOWS\Symbols目錄下。主要匹配主、客機上字符的一致性。

3、雙機調(diào)試

給源代碼添加調(diào)試時中斷語句

#if?_DEBUG   //DBG

???? __debugbreak();?//64

#endif

重新生成sys文件,重新執(zhí)行以上步驟,然后以管理員身份打開主機上的WinDbg軟件,再在客戶機安裝.sys文件及開啟、關(guān)閉、卸載等操作。開啟后即進入中斷點,可以一步步進行調(diào)試。。。

注:匯編_asm?int?3?中斷,在xp上?正確,在64Win7上報錯。如果未能進入斷點進行調(diào)試,請檢查sys文件是否在客戶機(虛擬Win7系統(tǒng))安裝成功,系統(tǒng)字符集(Symbols)、本人字符Symbols是否下載或設(shè)置正確,管道端口是否正確等

?

提示:在本地主機上不以管理員身份運行軟件,也可能是管理員身份成功運行,而客戶機(虛擬機上一般都要是以管理員身份運行軟件)

?

若進行 Win7 + WDK8.0+Windbg 進行Driver Filter開發(fā),請將WDK7卸載,否則運行時會報大堆離奇錯誤。。。。

轉(zhuǎn)載于:https://www.cnblogs.com/shenchao/p/4832843.html

總結(jié)

以上是生活随笔為你收集整理的Windows 7 驱动开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。