filedisk-17.zip vs08 LNK2019 LNK2001问题

心血来潮,下了个filedisk来看看入门的驱动.结果link不过.

我是环境是vs08  用的VisuallDDK 默认来生成驱动环境的. 

把zip包中\filedisk-17\sys\inc\filedisk.h 和filedisk-17\sys\src\filedisk.c 添加到vs08工程中 

link时filedisk.obj : error LNK2019: 无法解析的外部符号 _WdmlibIoCreateDeviceSecure@36,该符号在函数 _FileDiskCreateDevice@12 中被引用

一看 

#undef IoCreateDeviceSecure
#define IoCreateDeviceSecure WdmlibIoCreateDeviceSecure

 

这是个明显错误 ,在工程/属性/链接器/输入/附加依赖项/ 中添加 wdmsec.lib .以为完了.结果link时出现新错误

 

1>wdmsec.lib(ppregstate.obj) : error LNK2019: 无法解析的外部符号 ___security_cookie,该符号在函数 _PiRegStateOpenClassKey@20 中被引用
1>wdmsec.lib(cmregutil.obj) : error LNK2001: 无法解析的外部符号 ___security_cookie
1>wdmsec.lib(ppregstate.obj) : error LNK2019: 无法解析的外部符号 @__security_check_cookie@4,该符号在函数 _PiRegStateOpenClassKey@20 中被引用
1>wdmsec.lib(cmregutil.obj) : error LNK2001: 无法解析的外部符号 @__security_check_cookie@4

 

一查"__security_cookie" 是应用层的函数?当时感觉有点怪. 当时google没搜到结果.应该是没有搜对关键字.回家后,发现一位朋友的帖子:

http://blog.csdn.net/stwstw0123/article/details/5742598

中"PPS. 原来, BufferOverflowK.lib 的意思是内核态的 BufferOverflow 库, BufferOverflowU.lib 是用户态的"

有点启发,继续google之.终于发现ms 官方的说明

http://support.microsoft.com/kb/894573

应该是wdmsec.lib 内部调用了__security_cookie(内核态的bufferoverflowK.lib) 

"

bufferoverflowU.lib 此库实现安全 cookie 验证可用的功能,在用户模式和使用 Win32 API 的应用程序
。大多数应用程序链接到此库。
bufferoverflowK.lib 此库实现操作系统的内核模式中检查安全 cookie (它的工作原理。在内核模式下运
行的服务与子系统必须链接到此库。
bufferoverflow.lib 此库为实现功能,可以用安全 cookie 验证在用户模式下。但是,
bufferoverflow.lib 与 bufferoverflowU.lib 不同,因为可以使用 bufferoverflow.lib,请不要使用 Win32
API 的应用程序和服务中。

"

这下问题好办了 工程/属性/链接器/输入/附加依赖项/ 中添加 bufferoverflowK.lib .问题解决.

在这方便下,想看看filedisk入门级驱动的朋友.



posted @ 2012-12-04 22:45  bleach3  阅读(1868)  评论(0编辑  收藏  举报