VS2017 + WDK7600搭建Windows XP驅動編譯環境


如果你開發的驅動需要支持Windows XP,就必須使用WDK7600;如果不需要,趕緊安裝最新的VS2019+WDK2004吧。
由於WDK7600編譯使用命令行,沒有集成IDE,使得編碼過程較為痛苦,既沒有代碼提示,又。。好吧,主要就是代碼提示,這也是使用VS集成環境最根本的需求。
關於VS集成WDK7600,網上也有一堆的經驗,大部分通過改工程編譯屬性的方式進行,照着做可能出現這樣那樣的意外,而設置編譯成功了,又心里沒底。所以,本文介紹另一種方法讓WDK7600編譯集成到VS中,應該適用於各種VS版本,本文以VS2017為例介紹。
廢話不說,開始!

0、安裝VS和WDK7600

默認安裝就好了。

1、具體步驟

  • 新建一個空的解決方案,如xpDrv1,此時解決方案(sln)應該包含一個默認的工程xpDrv1(proj)

  • 在工程上,右鍵打開屬性,平台x86,以Debug為例進行設置,Release的參數設置相同,可以一起設置

  • 改“配置類型”為生成文件,點擊“應用”,左邊樹形屬性列表會相應改變;

  • 點VC++ 目錄,將“包含目錄”內容刪除,粘貼:C:\WinDDK\7600.16385.1\inc\crt;C:\WinDDK\7600.16385.1\inc\api;C:\WinDDK\7600.16385.1\inc\ddk代碼提示起作用就是這一步!。注意,此處根據WDK7600目錄的位置自己做調整。

  • 點擊“NMake”,如下圖設置,為了方便復制:

    • 預處理定義:在Debug配置中,填入“DBG”,這里是方便瀏覽源碼用,在實際編譯過程中並不起作用
    • 生成,對應工程右鍵“生成”:cmd.exe /c buildCmd.cmd $(Configuration) -build
    • 重新生成,對應工程右鍵“重新生成”:cmd.exe /c buildCmd.cmd $(Configuration) -rebuild
    • 清理,對應工程右鍵“清理”: cmd.exe /c buildCmd.cmd $(Configuration) -clean
  • 在工程根目錄新建文件buildCmd.cmd,內容如下(根據WDK安裝目錄可自行調整相關內容,下面是默認安裝)


@echo off
set BUILD_TYPE=%~1
shift
set BUILD_ARG=%~1

if "%BUILD_TYPE%" == "Debug" (
    set DDK_BUILD_TYPE=chk
) else (
    set DDK_BUILD_TYPE=fre
)

if "%BUILD_ARG%"=="-rebuild" (set BUILD_OPTS=/c /Z)

if "%BUILD_ARG%" == "-clean" (
    rd /s /q obj%DDK_BUILD_TYPE%_wxp_x86\ 2>NUL:
    del /s /q build%DDK_BUILD_TYPE%_wxp_x86.* 2>NUL:
) else (
    echo %~dp0
    pushd .
    call C:\WinDDK\7600.16385.1\bin\setenv.bat C:\WinDDK\7600.16385.1\ %DDK_BUILD_TYPE% x86 WXP no_oacr
    popd
    build %BUILD_OPTS%
)
  • 工程根目錄添加sourcesmakefile兩個文件,可以從WDK7600 sample中隨便拷貝兩個過來

  • 添加源文件,例如xpDrv1.c,寫點代碼試試,你會發現——代碼提示有了~

  • 對sources進行相應修改,工程上右鍵“生成”試試,你會發現——可以生成~

  • 工程上右鍵“重新生成”試試,嗯

  • 工程上右鍵“清理”試試,嗯嗯

這里,只介紹了x86平台的設置,因為Windows XP都是32位,64位的參照此也很容易設置

3、導出模板

  • 點擊菜單中“項目”,“導出模板”,彈出對話框,選默認“項目模板”,下一步,下圖所示,完成就好了

  • 新建項目,可以發現,有了xpDrv1的模板(下圖,是我之前使用xpDrv工程導出的模板),選中創建。

  • 你會發現,文件還是原來xpDrv1的文件,只需要把源文件xpDrv1.c替換一下,sources改一下,就是新的工程了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM