許多驅(qū)動(dòng)程序開發(fā)都將環(huán)境架設(shè)在VC上,可是偶的本本上好不容易安了個(gè)vs2008,舍不得刪啊,因此毅然選擇vs2008,拋棄vc。要開發(fā)驅(qū)動(dòng),DDK是少不了的,但是現(xiàn)在操作系統(tǒng)日新月異,老DDK是不能適應(yīng)國家下一個(gè)“五十年計(jì)劃”滴~~于是,我又一次毅然決然選擇WDK代替DDK,呵呵,還是跟著微軟大蝦們的足跡,往前看吧......
先弄明白windows驅(qū)動(dòng)的前因后果吧,這是選擇開發(fā)環(huán)境和開發(fā)過程的基礎(chǔ)~ 1.首先,開發(fā)WINDOWS下的驅(qū)動(dòng)程序,需要一個(gè)專門的開發(fā)包,就像開發(fā)JAVA程序,需要一個(gè)JDK,開發(fā)WINDOWS應(yīng)用程序,需要SDK,現(xiàn)在開發(fā)WINDOWS下的驅(qū)動(dòng)程序,我們們需要一個(gè)DDK/WDK。 2.開發(fā)驅(qū)動(dòng)的工具包DDK(Driver Developer Kit)和WDK(Windows Driver Kit)的區(qū)別: 1).95/98/ME下,驅(qū)動(dòng)模型為:Vxd,相關(guān)資料可以看《編程高手箴言》的前幾個(gè)章節(jié),里面有很詳細(xì)的介紹,雖然這個(gè)東西已經(jīng)過時(shí),但大概看看還是會(huì)增長(zhǎng)見識(shí)的。 2).2000/XP/2003下,Windows采用WDM驅(qū)動(dòng)模型(Windows Driver Model),開發(fā)2000/XP/2003的驅(qū)動(dòng)開發(fā)包為:DDK。 3).Vista及以后版本,采用了WDF驅(qū)動(dòng)模型(Windows Driver Foudation),對(duì)應(yīng)的開發(fā)包:WDK。 其實(shí)WDK可以看做是DDK的升級(jí)版本,現(xiàn)在一般的WDK是包含以前DDK相關(guān)的功能,現(xiàn)在XP下也可以用WDK開發(fā)驅(qū)動(dòng),WDK能編譯出2000-2008的各種驅(qū)動(dòng)。 3.Vxd驅(qū)動(dòng)文件擴(kuò)展名為:.vxd。 WDM和WDF驅(qū)動(dòng)文件擴(kuò)展名為:.sys。 下面將整個(gè)環(huán)境搭建過程描述如下: ******************************************************************************************* 一、安裝階段 1. (虛擬機(jī)也可以不安裝) 安裝WinXP虛擬機(jī),VMware,系統(tǒng)安裝的是WinXP_Pro_SP2.iso。 安裝虛擬機(jī)可以用于調(diào)試,避免在真機(jī)上調(diào)試的時(shí)候,頻繁出現(xiàn)藍(lán)屏,重啟等現(xiàn)象。自己的環(huán)境,安全第一啊~~安裝好虛擬機(jī)后,還需要在虛擬機(jī)上安裝上XP系統(tǒng)。 2. 安裝Visual Studio 2008,安裝前請(qǐng)留出足夠大的空間,至少7G。 3. 安裝WDK。注意安裝時(shí)會(huì)選擇要安裝的內(nèi)容,此時(shí)不要安裝DSF。當(dāng)然啦,安全前得下載啊~~ 這個(gè)現(xiàn)在可以再微軟的官網(wǎng)上申請(qǐng)下載,給大家個(gè)網(wǎng)址吧https://connect.microsoft.com/default.aspx,這是connect的網(wǎng)址,你需要注冊(cè)一個(gè)liveID,然后在左側(cè)欄里找到“開發(fā)人員工具”,然后就能找到WDK了,申請(qǐng),下載,OK~ 傳說WDK支持Windows 7, Windows Vista, Windows XP, Windows Server 2008 R2, Windows Server 2008, and Windows Server 2003.等等版本系統(tǒng),不僅包含了原有DDK,還貌似包含了IFS的頭文件,哎喲,貌似很有用呢,能適應(yīng)長(zhǎng)期發(fā)展.....(關(guān)于WDK的介紹與安裝,請(qǐng)參考偶的后續(xù)博文~~) 4. 安裝srvinstw.exe,用于安裝生成的服務(wù)。 5、 安裝DDKWIZARD,安裝它主要是為了使你的vs支持驅(qū)動(dòng)程序開發(fā)。并將其中的ddkbuild.cmd,和ddkbuild.bat兩個(gè)文件放置到WDK的安裝目錄下,也就是C:\WinDDK下 ********************************************************************************************* 二、配置階段 0、 我的電腦-》屬性-》高級(jí)-》環(huán)境變量》用戶變量中 Path 后添加 C:\WinDDK\DDKBUILD.bat;C:\WinDDK\DDKBUILD.cmd;C:\WinDDK 然后再在系統(tǒng)變量中新建變量,根據(jù)不同的系統(tǒng),選擇下列中一個(gè): 2000 DDK: W2KBASE XP DDK: WXPBASE 2003 sp1 DDK: WNETBASE 【注】變量名應(yīng)與你要使用的DDK版本相符,比如我要開發(fā)XP驅(qū)動(dòng),使用XPDDK,所以變量名為WXPBASE,其值為:C:\WinDDK\7600.16385.0 1、打開VS2008,在菜單上選擇"工具"->"選項(xiàng)"彈出"選項(xiàng)"窗口,選擇"項(xiàng)目和解決方案"->"VC++目錄","顯示以下內(nèi)容的目錄" "可執(zhí)行文件"中添加 "C:\WinDDK" "C:\WinDDK\7600.16385.0\bin\x86\x86" "C:\WinDDK\7600.16385.0\bin\x86" "C:\WinDDK\7600.16385.0\tools\pfd\bin\bin\x86" "包含文件"中添加 "C:\WinDDK\7600.16385.0\inc" "C:\WinDDK\7600.16385.0\inc\api" "C:\WinDDK\7600.16385.0\inc\crt" "C:\WinDDK\7600.16385.0\inc\ddk" "引用文件"中添加 "C:\WinDDK\7600.16385.0\lib\wxp\i386" "庫文件"中添加 "C:\WinDDK\7600.16385.0\lib" "C:\WinDDK\7600.16385.0\lib\wxp\i386" "源文件"中添加 "C:\WinDDK\7600.16385.0\src" 以上添加完畢直接按"確定"關(guān)閉"選項(xiàng)"對(duì)話框 如果編譯出現(xiàn)C2144錯(cuò)誤的時(shí)候,請(qǐng)把以上添加的文件向前移動(dòng)(就是點(diǎn)擊"選項(xiàng)"對(duì)話框中的向上的箭頭按鈕) 2、設(shè)置虛擬機(jī)的可調(diào)模式: 1)打開boot文件的方式可以選用以下兩種: 1.我的電腦→屬性→高級(jí)→“啟動(dòng)和故障恢復(fù)-->編輯。 boot.ini的修改如下: 在虛擬機(jī)中,編輯boot.ini文件,在末尾添加一行:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200
2)保存后power off虛擬系統(tǒng)。在左邊欄中選擇Edit virtual machine settings-->add-->Serial Port-->Output to named pipe,此時(shí)出現(xiàn)三個(gè)文本框,依次填入:\\.\pipe\com_1”和“This end is the server.”,第3個(gè)修改為“The other end is an application.” 3)保存。配置真實(shí)機(jī)。創(chuàng)建windbg.exe在桌面的快捷方式,屬性-->目標(biāo)-->"C:\WINDDK\...\windbg.exe“ -b -k com:port=\\.\pipe\com_1,baud=115200,pipe 4)可以選擇配置真實(shí)機(jī)串口:我的電腦-->管理-->設(shè)備管理器-->端口com-->com1-->屬性-->端口設(shè)置-->每位秒數(shù)-->115200 5) 啟動(dòng)windbg.exe, 在file-->symbol file path ,添加微軟官方符號(hào)表srv*c:\symbols*http://msdl.microsoft.com/download/symbols 以及你自己工程中生成sys文件的目錄(就是你要編譯的驅(qū)動(dòng)服務(wù)文件的目錄,需要事先生成要調(diào)試的驅(qū)動(dòng)服務(wù).sys文件,并將.sys文件拷貝到虛擬機(jī)中),我的是E:\projects\Tests\first\objchk_wxp_x86\i386 ,兩路徑用分號(hào)分隔。勾選reload 6)啟動(dòng)虛擬機(jī),將sys文件提供的服務(wù)用srvinstw.exe安裝到虛擬機(jī)中。安裝中,選手動(dòng),NT驅(qū)動(dòng)不用填 7)重啟虛擬機(jī),選擇調(diào)試模式,啟動(dòng)真實(shí)機(jī)桌面設(shè)置過參數(shù)的windbg快捷方式,此時(shí)如果出現(xiàn) -------------------------- Could not start kernel debugging using com:pipe,port=\\.\pipe\com1,resets=10 parameters, Win32 error 0n2 系統(tǒng)找不到指定的文件。 說明虛擬機(jī)還沒有啟動(dòng)起來,只需要重啟windbg。在系統(tǒng)出現(xiàn)中斷時(shí),在windbg中輸入g。 8)進(jìn)入到系統(tǒng)后,運(yùn)行-->cmd-->net start 服務(wù)名 就可以啟動(dòng)你的驅(qū)動(dòng)服務(wù)了。 **************************************************************************************************************************** 新建項(xiàng)目: 1) VS2008-->新建項(xiàng)目-->DDK project-->Driver 2)F7,運(yùn)行,如果沒有生成sys,或者出現(xiàn)任何對(duì)話框,說明你配置出錯(cuò)啦~~ 有可能是在TOOL--->選項(xiàng)-->項(xiàng)目與解決方案-->VC++目錄-->可執(zhí)行文件 下,缺少了你放置DDKwizard的ddkbuild.cmd文件的目錄,請(qǐng)?zhí)钌稀;蛘呤悄愕沫h(huán)境變量沒設(shè)對(duì).... |
|