天天看點

32位USB裝置驅動工程移植64位編譯(用到vdw_wdm.lib)

本過程在原有32位驅動項目與驅動檔案(INF檔案)的基礎上修改。

一、編譯vdw_wdm.lib for AMD64

1、安裝VC++6.0

2、安裝DriverStudio_3.2

3、安裝Windows 2003 DDK

4、用VC++6.0打開VdwLibs.dsw(位于DriverStudio安裝目錄Compuware\DriverStudio\DriverWorks\source)項目,在FileView欄将VdwLibs files右鍵設為活動工程。

5、選擇菜單欄 組建(Build)->批組建(Batch Build),勾選VdwLibs - Win32 AMD64 WDM Checked,按Build。

6、選擇菜單欄 DriverStudio->DDK Build Settings。在DDK欄填入Windows 2003 DDK目錄,例:“D:\WINDDK\3790.1830”。按OK。

7、選擇菜單欄 DriverStudio->Build with BUILD.EXE,即可(直接用VC6.0build報錯)。

解釋:工程用到vdw_wdm.lib,是以首先需要編譯64位的vdw_wdm.lib。vdw_wdm.lib是DriverStudio_3.2帶有的庫,必須先經過編譯VdwLibs.dsw項目生成庫檔案才能使用。DriverStudio_3.2不支援WDK,需用DDK編譯,編譯生産庫位于Compuware\DriverStudio\DriverWorks\lib\amd64\checked目錄内。查網絡說AMD64比IA64相容性更好,未驗證過。

二、編譯sys檔案

1、安裝GRMWDK_EN_7600_1,即WDK。

2、打開WDK 7600.16385.1->Build Environments->Windows 7->x64 Checked Build Environment。

3、将路徑cd入驅動項目,輸入指令build回車即可。此步驟不會将此項目全部編譯成功,但足以生産sys檔案(提示 1 executable built)。

4、生産的sys檔案位于驅動項目driver\objchk_win7_amd64\amd64目錄中。

解釋:移植驅動到win7 64位系統,WDK帶有此編譯環境可直接使用。編譯的項目帶有一個driver和一個app工程,我不需要此app(已淘汰),故在直接使用win7 64bit編譯環境(沒有vs)的情況下app編譯出錯(未處理),XP系統上VS編譯出的純app程式在win7 64位系統上與此sys檔案連接配接良好,未發現bug。

三、手動修改INF檔案

原32位:

[Manufacturer]

%MfgName% = XXX

[XXX]

; DisplayName               Section           DeviceId

%XX_DeviceDesc%=YY, USB\VID_A133&PID_C001

; --------- Windows NT -----------------

[YY.NT]

....

[YY.NT.Services]

....

修改64位

[Manufacturer]

%MfgName% = XXX,NTAmd64

[XXX.NTAmd64]

; DisplayName               Section           DeviceId

%XX_DeviceDesc%=YY, USB\VID_A133&PID_C001

; --------- Windows NT -----------------

[YY.NTAMD64]

 ....

[YY.NTAMD64.Services]

.....

解釋:關于INF檔案,具體可以參考htp://blog.csdn.net/whatday/article/details/10608431,說的挺詳細的,沒找到原創。。

最後一個問題就是驅動的數字簽名問題,這個需要用RMB買。。到寫這個為止還沒找到不用RMB的方法(有點失敗。。求指導。。。)。

繞過辦法:

1、可以每次開機F8,選禁用驅動程式簽名強制。

2、下載下傳dseo13b.exe軟體,寫入一個測試簽名,使能系統測試模式,重新開機,永久有效(就是右下角有個水印= =)。