向大家请教关于MS-NT平台驱动开发环境的一些疑惑

koral 2008-04-11 03:04:41
我刚学的驱动开发,还没怎么如入门。主要是开发环境麻烦;我用的是VS2003 + DDK--我用惯了SDK,对开发框架比较不感冒。
自己简单配置了VS的环境(我用VS几乎已经半年了,可还是不怎么熟悉- -),而且可以编译没用到多少API的简单的代码;本来
以为可以工作了,谁知当我增加API调用的时候链接老通不过,比如有这样的错误提示:
“error LNK2001: 无法解析的外部符号 "struct _KSYSTEM_TIME volatile KeTickCount" (?KeTickCount@@3U_KSYSTEM_TIME@@C)”

我不明白的是,在同样的环境下,为何别的API(如“IoCompleteRequest()”)可以用,而有些API(比如上面提的那个
输出变量"KeTickCount")又不能用?我链接时包含了" ntdll.lib int64.lib ntoskrnl.lib hal.lib "库。搞不灵清
的是难道他们并非全在这些库中?DDK只是说明了他们的原型,却并不想SDK那样同时指明输出库;上面那些库由于我没有
经验而一概添加的(可是变量“KeTickCount”明明就是在"ntoskrnl.exe"中输出的吧,为什么我包含了它的输出库却链接
不上??),不知道问题到底出在哪里了,恳请大家指教!
还有,对于不熟悉的API,我怎么才能知道它实现于哪个库呢?

(我网上搜了一大堆关于驱动开发环境的设置,可都是用的DriverStudio 等,这些当然好,可是我就向知道手工设置环境
该怎么弄,不然,我还是看不懂它们,更别说用"build"命令了)


友情链接:
http://blog.csdn.net/Mobidogs/archive/2007/01/23/1491664.aspx
http://blog.chinaunix.net/u/28781/showart_384840.html
...全文
122 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
koral 2008-04-15
  • 打赏
  • 举报
回复
暂且找不到解决方法,等我明白后再贴上来;或者我还是用傻瓜build了。

谢谢楼上几位
koral 2008-04-14
  • 打赏
  • 举报
回复
谢谢Kenmark的提示,我知道就是环境配置或者工程配置的问题,题目里我就是问这个的。
我现在不能解决它就是因为:

>>我不能从正式文档上确认那些没能链接上的符号到底是实现于哪个模块,因为DDK老是藏着掖着不肯说,而只说明了它们
的原型(之前也有些函数是我查看了ntoskrnl.exe\hal.dll等的输出表才确定了库文件的,可是这样很麻烦,于是
不管3721我把很多lib文件都加进了工程。可是还是有没有能链接上的符号,这让我超级郁闷),是否我没找对地方?

>>如果说我找不到符号的输出模块,那倒不是,"KeBugCheckEx"明明就在ntoskrl.exe模块里面,同样的
“IoCompleteRequest”也是,只是我包含“ntoskrnl.lib”以后,只有后者能被链接上而前者不行,这就是让人郁闷
的地方。我想知道,我该怎么解决这样问题?

>>就是函数原型也让我很含糊,貌似有些函数有时用的stdcall,而有时用fastcall-----DDK没有说明,而头文件里是用
宏指令来切换的。我不能确定是否是因为这个而使得函数原型与lib输出不匹配引起的。


似乎在这里找不到解决的方法~~难道这方面的经验这么难找么?或者哪位能提供一些好的有关资料/信息,我非常感谢
星羽 2008-04-14
  • 打赏
  • 举报
回复
up 以下
我啃 2008-04-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 koral 的回复:]
to Kenmark :
你的意思是不是说有些符号不能链接上是因为lib文件不支持么?可上DDK里面明明有这些符号的原型说明,更何况
这些符号是比较常用的,没有理由DDK提供了不完整的lib文件。
比如这个在驱动中很平常的函数"KeBugCheckEx",我却也链接不上(链接不上就是了,为什么别的、与它同在一个
模块里的函数却又正常的链接上了~~我怎么想都不明白)
[/Quote]
那么就是你的环境配置或者工程配置有问题
koral 2008-04-11
  • 打赏
  • 举报
回复
to Kenmark :
你的意思是不是说有些符号不能链接上是因为lib文件不支持么?可上DDK里面明明有这些符号的原型说明,更何况
这些符号是比较常用的,没有理由DDK提供了不完整的lib文件。
比如这个在驱动中很平常的函数"KeBugCheckEx",我却也链接不上(链接不上就是了,为什么别的、与它同在一个
模块里的函数却又正常的链接上了~~我怎么想都不明白)
我啃 2008-04-11
  • 打赏
  • 举报
回复
有些可以说明那些符号链接了,不可以的说明没有链接,一般是需要使用的函数(结构)没有编译成lib进而链接
koral 2008-04-11
  • 打赏
  • 举报
回复
无人问津,真的好伤心~~
koral 2008-04-11
  • 打赏
  • 举报
回复
沉底了~~

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧