配置WINDOWS驅動程式的開發環境-走出第一步

來源:互聯網
上載者:User
 一個星期前老師給我布置了一項任務:開發我們自己設計的一塊板子的PCI裝置驅動,並給我指出了方向,具體說就是“三步走”戰略:

(1)入門。熟悉基於DriverStudio開發環境的裝置驅動開發,同時側面瞭解PCI裝置驅動程式的相關知識。(2)進階。運用純DDK進行驅動開發,著重於學習別人的執行個體,並能熟練進行調試和修改。(3)實戰。深入研究PCI匯流排標準,結合具體的電路板特性開發出一套自己的裝置驅動。現在正在入門階段的初級,總結一下近一周以來的WINDOWS驅動程式開發學習過程中的經驗:我目前使用的開發環境是:WINDDK/2600 + Visual Studio 6.0 + Compuware/DriverStudio 3.2參考的主要入門書是:《Windows 2000/XP WDM 裝置驅動程式開發(第二版)》武安河 編著-----------------------------------------學習中遇到的問題和解決方案:(1)拿到附書代碼,運行出了第一個驅動程式CharSample,步驟如下:先雙擊代碼光碟片提供的註冊表匯入檔案Windows2K-XP.reg,然後運行DriverStudio內建的EzDriverInstaller工具,開啟sys目錄下的驅動安裝設定檔CharSample.inf,然後Add New Device,提示需要.sys驅動系統檔案,找到sys/objchk/i386目錄下的CharSample.sys檔案,確定後將提示The Driver Loaded Successfully!(如果報錯,而且裝置前帶!號,一般是因為忘記匯入註冊表了)      如此安裝好驅動以後,就可以運行exe/objchk/i386目錄下的應用程式Test_CharSample.exe進行測試了!(2)運行成功後,重新編譯時間卻總出現錯誤,編譯不過去!錯誤是:fatal   error   LNK1181:   cannot   open   input   file   "....../DriverStudio/DriverWorks/lib/I386/checked/vdw_wdm.lib" 通過網上學習和交流找到答案:原來是因為配置開發環境時,漏掉了如下一個步驟:編譯....../Compuware/DriverStudio/DriverWorks/source目錄下的工程得到vdw_wdm.lib檔案!編譯時間,注意用VC開啟工程檔案後,有兩個工程,要先將VdwLibs工程設為當前Active Project,然後在工具列上單擊右鍵選擇“組建”,在彈出的編譯工具列中配置一下編譯平台的設定:選擇Win32 WDM Checked平台(因為我們用的XP),然後編譯就應該可以了,但是還有可能出現編譯錯誤:fatal error C1083: Cannot open include file: 'warning.h': No such file or directory為啥呢?因為沒有選擇DDK環境,此時應該在DriverStudio菜單-》DDK Build Setting...中選擇我們先前安裝的DDK的目錄,我安裝的目錄是C:/WINDDK/2600,這樣就可以編譯通過了!編譯完後會在"....../DriverStudio/DriverWorks/lib/I386/checked/"目錄下產生vdw_wdm.lib檔案,做完這些後在去編譯自己編寫的驅動程式工程就不會有上面所列的錯誤了!當然,也有可能會出現這樣的編譯錯誤:fatal error C1051: program database file, '....../compuware/driverstudio/driverworks/source/obj/i386/wdmchecked/vdw_wdm.pdb', has an obsolete format, delete it and recompile不過編譯器提示的應該夠清楚了,只要把串連目錄下的檔案刪除再編譯一次就可以了!(3)用嚮導建立一個驅動工程,進行編譯會產生如下錯誤:Linking   with   DDK   linker...   LINK   :   fatal   error   LNK1181:   cannot   open   input   file   ' ntstrsafe.lib'   Error   executing   link.exe.因為這個檔案在xpddk裡面是沒有的,在2003 ddk裡面有,拷貝一個過來就可以了,或者在工程-》設定-》串連選框中把 ntstrsafe.lib這個串連項去掉  結果點的時候只能點一個工程,要麼在工程設定串連中無法找到ntstrsafe.lib這個庫,只點driver那個工程然後再刪去對那個找不到的庫的串連就OK了。這個原因主要是:

don't know how to make 'D:/WINDDK/2600/lib/wxp/i386/ntstrsafe.lib' 解決辦法
driverstudio產生的驅動工程都會要串連ntstrsafe.lib這個庫,但實際上這個庫並不存在,在Project的Settings裡的Link項中去掉這個庫,然後在工程中的sources檔案裡邊,找到下面一行:

TARGETLIBS=$(DDK_LIB_PATH)/ntstrsafe.lib $(DDK_LIB_PATH)/csq.lib

直接刪除即可。

DS 3.2自動產生的程式報告不是有效win32應用程式的解決方案:使用driverstudio內建的bulid(dirverstudio->Build with BUILD.exe)進行進行編譯即可,不要用VC帶的那個build進行編譯,編譯驅動程式的時候好像用VC帶的那個build編譯還行,不過最好還是用driverstudio內建的那個build進行編譯好些吧,我想。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.