對VC2005開發驅動進行記錄

很久沒有觸及驅動了,最近因爲要改前人留下來的一個驅動程序,所以就用VC2005進行了一下編譯。因爲以前做驅動開發時還用6.0,現在使用8.0,一時沒適應過來,在網上找了下環境搭建,但因爲仍然有些問題,因此特記錄下問題的解決:

1、預處理定義:

_X86_=1
i386=1
STD_CALL
CONDITION_HANDLING=1
NT_INST=0
WIN32=100
_NT1X_=100
WINNT=1
WIN32_LEAN_AND_MEAN=1
DEVL=1
FPO=0
NDEBUG
_DLL=1
DBG=1
DEPRECATE_DDK_FUNCTIONS
_WIN32_WINNT=$(_WIN32_WINNT)
WINVER=$(WINVER)
_WIN32_IE=$(_WIN32_IE)
NTDDI_VERSION=$(NTDDI_VERSION)

這是check版的


_X86_=1
i386=1
STD_CALL
CONDITION_HANDLING=1
NT_INST=0
WIN32=100
_NT1X_=100
WINNT=1
WIN32_LEAN_AND_MEAN=1
DEVL=1
FPO=0
NDEBUG
_DLL=1
_WIN32_WINNT=$(_WIN32_WINNT)
WINVER=$(WINVER)
_WIN32_IE=$(_WIN32_IE)
NTDDI_VERSION=$(NTDDI_VERSION)

這是Free版的


因爲驅動至少要支持WinXP所以中間使用到的四個環境變量的定義如下:

_WIN32_WINNT:0x0501

WINVER:0x0501

NTDDI_VERSION:0x05010000

_WIN32_IE:0x0600


2、因爲用到了安全函數RtlStringCbPrintfW,所以在鏈接時就需要ntstrsafe.lib這個文件,但這時編譯會出現如下問題:

1>ntstrsafe.lib(output.obj) : error LNK2019: 無法解析的外部符號 @__security_check_cookie@4,該符號在函數 __output_l 中被引用
1>ntstrsafe.lib(woutput.obj) : error LNK2001: 無法解析的外部符號 @__security_check_cookie@4

對於這個問題需要加入bufferoverflowK.lib這個庫。

然後,會出現ntstrsafe.lib的錯誤:

 fatal error LNK1103: 調試信息損壞;請重新編譯模塊

對於這個錯誤,需要更新VS的環境文件,到https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=18623

下載安裝,然後重新編譯即可。

其它關於環境架設,網絡上都有,在此不贅述了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章