VC6.0 +WDK 開發驅動的環境配置
1.安裝好VC6和DWK,先後順序無關。
從開始菜單找到WDK的程式目錄,進入“Windows XP Checked Build Environment”,輸入指令"build",此時WDK将會把自己進行編譯,大約需要1分鐘。
2.VC6設定Include/Lib/Executable目錄。
設定為自己需要編譯的平台的各個目錄即可, Include要確定找到ntddk.h等,Lib與Include對應,Executable 要確定能找到cl.exe
例如XP平台下設定為:
include包含部分:
C:\WinDDK\7600.16385.1\inc\ddk
C:\WinDDK\7600.16385.1\inc\api
C:\WinDDK\7600.16385.1\inc\crt
lib連接配接庫包含部分:
C:\WINDDK\7600.16385.1\LIB\WXP\I386
C:\WINDDK\7600.16385.1\LIB\WIN7\I386
執行檔案包含:
C:\WINDDK\7600.16385.1\BIN
C:\WINDDK\7600.16385.1\BIN\X86
C:\WinDDK\7600.16385.1\bin\x86\x86
對于VC原有的路徑,Include 和 Lib建議都删除掉,而Executable則将你新加的置頂,順序不能錯。其餘建議保留(雖然編譯驅動不會使用VC的Bin目錄下的ml.exe、link.exe 等,但vc的代碼提示等功能是需要bin目錄下的一些程式來完成的,是以還是至少要保留VC原有的Bin目錄,但必須在DDK的之後)。
3.建立一個空工程,Exe或者Dll都可以,然後直接修改工程屬性:
要改的地方不少,描述各個選項還不如直接記錄個文本的,清空C/C++和Link下面的Option文本框,按下面的填寫。
C/C++ 選項填寫:
/nologo /Gz /MLd /W3 /WX /Z7 /Od /D WIN32=100 /D _X86_=1 /D WINVER=0x500 /D DBG=1 /Fo"MyDriver_Check/" /Fd"MyDriver_Check/" /FD /c
LINK 選項填寫:
NT式驅動為
ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"MyDriver_Check/HelloDDK.pdb" /map:"MyDriver_Check/HelloDDK.map" /debug /machine:I386 /nodefaultlib /out:"MyDriver_Check/HelloDDK.sys" /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078
WDM式驅動為
wdm.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"SYS_Check/HelloWDM.pdb" /debug /machine:I386 /nodefaultlib /out:"SYS_Check/HelloWDM.sys" /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078
4.儲存配置,現在給這個空工程建一個c檔案,複制以下内容:
#include <ntddk.h>
NTSTATUS DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
NTSTATUS status = STATUS_UNSUCCESSFUL;
return status;
}
編譯通過則配置成功!!!
----------------------------------------------------------------------------------------------
Vc6 英文版;(随處都有)
WDK3790.1830(1830_usa_ddk.iso的解壓檔案)或者2006.1106版本;
(http://download.microsoft.com/download/9/0/f/90f019ac-8243-48d3-91cf-81fc4093ecfd/1830_usa_ddk.iso)
DriverStudio3.2 。(随處都有)
二、安裝說明
首先安裝Vc6,Vc6正常安裝。
第二安裝WDK,安裝到D:/WINDDK目錄下,把所有的例子全部勾選,安裝。
WDK的安裝比較費時,期間如果已經安裝AVAST或者360的話記得在它們提示是否允許時,允許移動檔案或允許安裝。
最後安裝DriverStudio3.2。建議安裝到C槽的預設目錄下,以便和以後的文檔相對應。
三、參考用書
隻有一本經典的參考用書,張帆的《Windows驅動開發技術詳解》( 珍藏版)。
CD光牒中有很多的參考代碼,可以直接使用。
四、用WDK的build工具編譯Windows驅動
工具位置:開始->Development Kit->Windows DDK 3790.1830->Build Environment->Windows XP->Windows XP Checked Build Environment(建議把它發送到桌面友善以後的編譯)。
需要的檔案:需要cpp,h,SOURCES,MakeFile四種檔案。其中Makefile不用自己編寫,需要自己編寫SOURCES檔案。編寫的具體方法見參考用書。
編譯方法:在build工具中把目錄切換到工程目錄下(如果切換不友善,可以先在D:/WINDDK/3790.1183/下建立一個exam檔案夾,然後把工程的目錄複制到exam檔案夾中,這樣可以很友善的切換到工程目錄下)。最後鍵入:build即可。編譯如果成功後可以在工程目錄中找到.sys檔案,這個檔案就是我們的最終要得到的二進制檔案。
五、用VC編譯Windows驅動時設定的改動
1、建立一個VC工程,選擇Win32 Application工程。選擇空的工程。
2、把寫好的cpp和h檔案(或者自己在vc中寫的)拷貝到這個空工程的目錄下。在project->add to project->files中把這兩個檔案包含進來。
3、在build->Configurationz中,添加一個項目Driver Check Edtion,選擇Win32 。這時會産生一個新的Win32 Driver Check Edtion項目。之後把原來的兩個項目都删除。
4、在Project->Settings->General下,将intermediate files和Output files中的内容都改為MyDriver_Check
5、在Project->Settings->c/c++下,把Project Options的原來内容全部删除,改為:
/nologo /Gz /MLd /W3 /WX /Z7 /Od /D WIN32=100 /D _X86=1
/D WINVER=0x500 /D DBG=1 /Fo"MyDriver_Check/" /Fd"MyDriver_Check/"
/FD =1 /c
6、在Project->Settings->link下,把Project Options的原來内容全部删除,改為:
ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry"
/subsystem:console /incremental:no /pdb:"MyDriver_Check/hellodriv.pdb"
/debug /machine:I386 /nodefaultlib /out:"MyDriver_Check/hellodriv.sys"
/pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /RELEASE
/IGNORE:4078
7、在Tool->Options->Directories中選擇,Show directories for:Include files,
添加一項:D:/WINDDK/3790.1830/INC/W2K,前移到第一位置。
再添加一項:D:/WINDDK/3790.1830/INC/DDK/W2K,前移到第二位置。
再添加一項:D:/WINDDK/3790.1830/INC/DDK/WDM/W2K,前移到第三位。
(用浏覽的方式選擇檔案夾)
8、在Tool->Options->Directories中選擇,Show directories for:Library files,
添加一項:D:/WINDDK/3790.1830/LIB/W2K/I386,前移到第一位。
(用浏覽的方式選擇檔案夾)
9、至此設定全部完成,可以按下F7編譯出.sys檔案了。(不要按Ctrl+F5,不能産生可執行檔案)
六、build工具的檔案轉換為VC可編譯檔案的方法
用build工具進行編譯時,要用到一個SOURCES檔案(沒有字尾,隻有檔案名)和一個MakeFile檔案(沒有字尾,隻有檔案名)。
現在假設你已經有這兩個檔案和相應的cpp和h檔案,并且能夠用build編譯成功,那麼我們可以利用這個SOURCES檔案轉換為VC6可以編譯的工程檔案(.dsw和.dsp)。方法如下:
1、開始->Compuware DriverStudio->Develop->DDK sources to vcproj Converter
2、打開這個工具之後,選擇File->Open,找到對應的SOURCES檔案。
3、選擇Convert->Convert DDK dir/sources file,會出現一個對話框。
4、在對話中選擇,VC++6 WorkSpace,按下OK。
5、至此,你會發現,在SOURCE檔案所在的目錄下多了兩個檔案.dsw和.dsp,如果在該目錄下還有對應的cpp和h檔案的話,就可以利用VC6打開這個工程了,編譯後會得到相同的.sys檔案。
如果還是提示SXXX.h找不到,再把D:/WINDDK/3790.1830/INC/CRT添加進去即可。
1.安裝好VC6和DWK,先後順序無關。
從開始菜單找到WDK的程式目錄,進入“Windows XP Checked Build Environment”,輸入指令"build",此時WDK将會把自己進行編譯,大約需要1分鐘。
2.VC6設定Include/Lib/Executable目錄。
設定為自己需要編譯的平台的各個目錄即可, Include要確定找到ntddk.h等,Lib與Include對應,Executable 要確定能找到cl.exe
例如XP平台下設定為:
include包含部分:
C:\WinDDK\7600.16385.1\inc\ddk
C:\WinDDK\7600.16385.1\inc\api
C:\WinDDK\7600.16385.1\inc\crt
lib連接配接庫包含部分:
C:\WINDDK\7600.16385.1\LIB\WXP\I386
C:\WINDDK\7600.16385.1\LIB\WIN7\I386
執行檔案包含:
C:\WINDDK\7600.16385.1\BIN
C:\WINDDK\7600.16385.1\BIN\X86
C:\WinDDK\7600.16385.1\bin\x86\x86
對于VC原有的路徑,Include 和 Lib建議都删除掉,而Executable則将你新加的置頂,順序不能錯。其餘建議保留(雖然編譯驅動不會使用VC的Bin目錄下的ml.exe、link.exe 等,但vc的代碼提示等功能是需要bin目錄下的一些程式來完成的,是以還是至少要保留VC原有的Bin目錄,但必須在DDK的之後)。
3.建立一個空工程,Exe或者Dll都可以,然後直接修改工程屬性:
要改的地方不少,描述各個選項還不如直接記錄個文本的,清空C/C++和Link下面的Option文本框,按下面的填寫。
C/C++ 選項填寫:
/nologo /Gz /MLd /W3 /WX /Z7 /Od /D WIN32=100 /D _X86_=1 /D WINVER=0x500 /D DBG=1 /Fo"MyDriver_Check/" /Fd"MyDriver_Check/" /FD /c
LINK 選項填寫:
NT式驅動為
ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"MyDriver_Check/HelloDDK.pdb" /map:"MyDriver_Check/HelloDDK.map" /debug /machine:I386 /nodefaultlib /out:"MyDriver_Check/HelloDDK.sys" /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078
WDM式驅動為
wdm.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"SYS_Check/HelloWDM.pdb" /debug /machine:I386 /nodefaultlib /out:"SYS_Check/HelloWDM.sys" /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078
4.儲存配置,現在給這個空工程建一個c檔案,複制以下内容:
#include <ntddk.h>
NTSTATUS DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
NTSTATUS status = STATUS_UNSUCCESSFUL;
return status;
}
編譯通過則配置成功!!!
----------------------------------------------------------------------------------------------
Vc6 英文版;(随處都有)
WDK3790.1830(1830_usa_ddk.iso的解壓檔案)或者2006.1106版本;
(http://download.microsoft.com/download/9/0/f/90f019ac-8243-48d3-91cf-81fc4093ecfd/1830_usa_ddk.iso)
DriverStudio3.2 。(随處都有)
二、安裝說明
首先安裝Vc6,Vc6正常安裝。
第二安裝WDK,安裝到D:/WINDDK目錄下,把所有的例子全部勾選,安裝。
WDK的安裝比較費時,期間如果已經安裝AVAST或者360的話記得在它們提示是否允許時,允許移動檔案或允許安裝。
最後安裝DriverStudio3.2。建議安裝到C槽的預設目錄下,以便和以後的文檔相對應。
三、參考用書
隻有一本經典的參考用書,張帆的《Windows驅動開發技術詳解》( 珍藏版)。
CD光牒中有很多的參考代碼,可以直接使用。
四、用WDK的build工具編譯Windows驅動
工具位置:開始->Development Kit->Windows DDK 3790.1830->Build Environment->Windows XP->Windows XP Checked Build Environment(建議把它發送到桌面友善以後的編譯)。
需要的檔案:需要cpp,h,SOURCES,MakeFile四種檔案。其中Makefile不用自己編寫,需要自己編寫SOURCES檔案。編寫的具體方法見參考用書。
編譯方法:在build工具中把目錄切換到工程目錄下(如果切換不友善,可以先在D:/WINDDK/3790.1183/下建立一個exam檔案夾,然後把工程的目錄複制到exam檔案夾中,這樣可以很友善的切換到工程目錄下)。最後鍵入:build即可。編譯如果成功後可以在工程目錄中找到.sys檔案,這個檔案就是我們的最終要得到的二進制檔案。
五、用VC編譯Windows驅動時設定的改動
1、建立一個VC工程,選擇Win32 Application工程。選擇空的工程。
2、把寫好的cpp和h檔案(或者自己在vc中寫的)拷貝到這個空工程的目錄下。在project->add to project->files中把這兩個檔案包含進來。
3、在build->Configurationz中,添加一個項目Driver Check Edtion,選擇Win32 。這時會産生一個新的Win32 Driver Check Edtion項目。之後把原來的兩個項目都删除。
4、在Project->Settings->General下,将intermediate files和Output files中的内容都改為MyDriver_Check
5、在Project->Settings->c/c++下,把Project Options的原來内容全部删除,改為:
/nologo /Gz /MLd /W3 /WX /Z7 /Od /D WIN32=100 /D _X86=1
/D WINVER=0x500 /D DBG=1 /Fo"MyDriver_Check/" /Fd"MyDriver_Check/"
/FD =1 /c
6、在Project->Settings->link下,把Project Options的原來内容全部删除,改為:
ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry"
/subsystem:console /incremental:no /pdb:"MyDriver_Check/hellodriv.pdb"
/debug /machine:I386 /nodefaultlib /out:"MyDriver_Check/hellodriv.sys"
/pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /RELEASE
/IGNORE:4078
7、在Tool->Options->Directories中選擇,Show directories for:Include files,
添加一項:D:/WINDDK/3790.1830/INC/W2K,前移到第一位置。
再添加一項:D:/WINDDK/3790.1830/INC/DDK/W2K,前移到第二位置。
再添加一項:D:/WINDDK/3790.1830/INC/DDK/WDM/W2K,前移到第三位。
(用浏覽的方式選擇檔案夾)
8、在Tool->Options->Directories中選擇,Show directories for:Library files,
添加一項:D:/WINDDK/3790.1830/LIB/W2K/I386,前移到第一位。
(用浏覽的方式選擇檔案夾)
9、至此設定全部完成,可以按下F7編譯出.sys檔案了。(不要按Ctrl+F5,不能産生可執行檔案)
六、build工具的檔案轉換為VC可編譯檔案的方法
用build工具進行編譯時,要用到一個SOURCES檔案(沒有字尾,隻有檔案名)和一個MakeFile檔案(沒有字尾,隻有檔案名)。
現在假設你已經有這兩個檔案和相應的cpp和h檔案,并且能夠用build編譯成功,那麼我們可以利用這個SOURCES檔案轉換為VC6可以編譯的工程檔案(.dsw和.dsp)。方法如下:
1、開始->Compuware DriverStudio->Develop->DDK sources to vcproj Converter
2、打開這個工具之後,選擇File->Open,找到對應的SOURCES檔案。
3、選擇Convert->Convert DDK dir/sources file,會出現一個對話框。
4、在對話中選擇,VC++6 WorkSpace,按下OK。