对VC2005开发驱动进行记录

[来源] 达内    [编辑] 达内   [时间]2012-06-14

很久没有触及驱动了,最近因为要改前人留下来的一个驱动程序,所以就用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: 调试信息损坏;请重新编译模块

资源下载