• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            任我行

            一天一個腳印......
            每日一句:
            posts - 54, comments - 218, trackbacks - 1, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            驅動程序開發—編譯正傳

            Posted on 2006-01-03 10:10 任我行 閱讀(1714) 評論(0)  編輯 收藏 引用 所屬分類: 驅動開發

            我在前面也講過了一些關于編譯環境及工具的。在這里結合本例子我再說一下:

            DDK分為98 DDK和2000 DDK兩種,它們工作起來是大同小異的,不過有些驅動程序只能在2000 DDK中使用。由于Win98注定是一種即將被淘汰的操作系統了,所以我學習的時候也沒有過多的關注,我用的是2000的DDK,所以以下的所有內容都是針對2000 DDK的。

            ·準備工作
            1、確定你已經安裝了Visual C++
            2、安裝2000 DDK
            3、安裝2000 DDK成功后,在“開始”->“程序”里應該有“Development Kits”->“Windows 2000 DDK”的項目。
            注意一定要先安裝好VC,然后才安裝DDK,這個順序決不能顛倒!!
            4、保證DDKROOT環境變量設置為Windows 2000 DDK的基目錄,如果不是的話,請在控制面板“系統”屬性的“高級”標簽環境變量編輯器中設置好這個環境變量。


            ·編寫必需的文件
            編譯WDM程序的時候,有兩個文件是必須要有的,它們是:
            1、makefile
            (這個是什么啊?你可能會問。)對于比較年輕的程序員來說,有可能沒有見過這個文件吧。其實在VC這些IDE出現之前,我們都必須使用makefile來確定項目中哪些文件需要重新編譯,現在的IDE都把這個工作自動做好了
            我們要做的工作很簡單,就是提供這樣一個文件,它的內容是:

            #
            # DO NOT EDIT THIS FILE!!!  Edit .\sources. If you want to add a new source
            # file to this component.  This file merely indirects to the real make file
            # that is shared by all the driver components of the Windows NT DDK
            #

            !INCLUDE $(NTMAKEENV)\makefile.def


            正如它所述,不要編輯這個文件。事實上每個WDM程序所需要的makefile的內容都是一樣的,也就是說,我們只需要簡單地copy一個makefile到新的項目中就可以了
            2、Sources

            TARGETNAME=HelloWDM //編譯出來的驅動程序的名稱
            TARGETTYPE=DRIVER      //編譯的類型是驅動程序編譯
            DRIVERTYPE=WDM           //驅動程序的類型是WDM驅動程序
            TARGETPATH=OBJ             //生成的文件存放在OBJ目錄中

            INCLUDES=$(BASEDIR)\inc;\   //這是需要引入的頭文件
                     $(BASEDIR)\inc\ddk;\

            TARGETLIBS=$(BASEDIR)\lib\*\free\usbd.lib\  //這是需要引入的庫文件

            SOURCES=HelloWDM.cpp\    //這是源碼文件


            這個文件指定了驅動程序目標名是HelloWDM.sys,是一個WDM驅動程序,生成的文件存放在OBJ目錄中。值得注意的是,“=”前后不能有空格,否則編譯的時候會出錯。


            ·開始編譯
            娃哈哈,前面羅羅嗦嗦講了一大堆,現在終于到重點了。WDM程序的編譯過程比較特殊,它不是在VC里面按F7來編譯的(盡管你可以通過設置來達到這一目的),而是通過一個DDK實用工具build來完成。下面我們來講講具體步驟:
            1、“Debug”版的生成
            首先,我們假設你的源代碼放在D:\HelloWDM里面。請跟著以下步驟:

            “開始”->“程序”->“Development Kits”->“Windows 2000 DDK”->“Checked Build Environment”

            屏幕將顯示:(有“回車”的那行是需要讀者你親自打進去的)

            New or updated MSVC detected.  Updating DDK environment….

            Setting environment for using Microsoft Visual C++ tools.
            Starting dirs creation…Completed.

            D:\NTDDK>cd\HelloWDM    (回車)

            D:\HelloWDM>build    (回車)


            如果源代碼沒有錯誤的話,生成的HelloWDM.sys將存放在objchk\i386目錄中。

            2、“Release”版的生成
            請跟著以下步驟:

            “開始”->“程序”->“Development Kits”->“Windows 2000 DDK”->“Free Build Environment”

            隨后的步驟跟“Debug”版相同,不同的是生成的HelloWDM.sys將存放在objfre\i386目錄中。
            久久国产色av免费看| 久久久无码精品亚洲日韩软件| 97精品依人久久久大香线蕉97| 丁香色欲久久久久久综合网| 亚洲中文字幕无码久久综合网| 99久久中文字幕| 久久青青草原精品国产不卡| 亚洲AV日韩AV永久无码久久| 精品久久久久久国产91| 亚洲精品美女久久久久99小说| 亚洲国产精品18久久久久久| 久久国产乱子伦精品免费强| 久久亚洲中文字幕精品一区| 99999久久久久久亚洲| 久久黄色视频| 亚洲天堂久久精品| 色欲av伊人久久大香线蕉影院| 精品久久久久久国产三级| 久久人人爽爽爽人久久久| 亚洲精品成人久久久| 嫩草影院久久国产精品| 色欲综合久久中文字幕网| 亚洲国产成人精品久久久国产成人一区二区三区综 | 无码乱码观看精品久久| 97久久国产亚洲精品超碰热| 国产精品久久久久久久人人看| 久久se这里只有精品| 久久婷婷久久一区二区三区| 久久人妻少妇嫩草AV无码专区| 欧美性猛交xxxx免费看久久久| 99国产欧美精品久久久蜜芽| 性欧美丰满熟妇XXXX性久久久| 少妇被又大又粗又爽毛片久久黑人| 久久精品成人国产午夜| 国产V亚洲V天堂无码久久久| 久久亚洲熟女cc98cm| 亚洲国产精品综合久久一线| 久久久久久国产精品无码下载 | 18岁日韩内射颜射午夜久久成人| 国内精品九九久久久精品| 97久久国产亚洲精品超碰热|