linpin
驱动牛犊
驱动牛犊
  • 注册日期2001-08-11
  • 最后登录2003-06-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3273回复:10

驱动里面使用fopen(),fclose()出现的问题!

楼主#
更多 发布于:2002-12-14 15:58
我在一个驱动里面使用fopen(),fclose(),
已经include \"stdio.h\"
编译是没有错误的,但link就有错了如下:
ice.obj() : error LNK2001: unresolved external symbol __imp__fclose
ice.obj() : error LNK2001: unresolved external symbol __imp__fgets
ice.obj() : error LNK2001: unresolved external symbol __imp__fopen
objchk\\i386\\ice.sys() : error LNK1120: 3 unresolved externals
能不能解决?
还是驱动里面不能用fopen()...这些函数?
ddk里面除了zwreadfile,zwwritefile,还有没有什么函数可以对文件进行读写  

[编辑 -  12/14/02 by  linpin]
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-14 16:25
多看看书和帖子。搞清楚什么是内核,以及内核和应用程序的区别,你就不会疑问了。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
linpin
驱动牛犊
驱动牛犊
  • 注册日期2001-08-11
  • 最后登录2003-06-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-14 16:35
多看看书和帖子。搞清楚什么是内核,以及内核和应用程序的区别,你就不会疑问了。


我是不懂,你懂你就说啊!不要说风凉话!

 :mad: :mad: :mad:
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
地板#
发布于:2002-12-14 22:19

我是不懂,你懂你就说啊!不要说风凉话!

 :mad: :mad: :mad:

不懂还不谦虚!
kernel_kernel
驱动小牛
驱动小牛
  • 注册日期2002-12-08
  • 最后登录2009-02-06
  • 粉丝0
  • 关注0
  • 积分435分
  • 威望51点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-15 09:56
[quote]多看看书和帖子。搞清楚什么是内核,以及内核和应用程序的区别,你就不会疑问了。


我是不懂,你懂你就说啊!不要说风凉话!

 :mad: :mad: :mad: [/quote]
呵呵,这不是风凉话
你发到“ABC初学者”吧
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-16 09:23
这位老兄,C/C++的运行时库里大多数函数都不能在内核里使用。如果你想在驱动里打开一个文件的话,调参看DDK文档中IoCreateFile和ZwCreateFile相关内容。
Tom_lyd
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-16 09:35
[quote]多看看书和帖子。搞清楚什么是内核,以及内核和应用程序的区别,你就不会疑问了。


我是不懂,你懂你就说啊!不要说风凉话!

 :mad: :mad: :mad: [/quote]
这哪里是风凉话话了?其实我已经告诉你为什么不能使用fopen之类的函数的原因了,那就是内核和用户层处于不同的运行环境啊。再往深层说就不是一两句话可以说的清楚了。所以我叫你看书和帖子。

犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
delux9704
驱动牛犊
驱动牛犊
  • 注册日期2002-11-14
  • 最后登录2010-11-15
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-12-16 23:04
IoCreateFile??什么东东??文档里没有啊!!

明天去查一下内存
jinfei
驱动牛犊
驱动牛犊
  • 注册日期2002-03-11
  • 最后登录2012-07-03
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-12-17 09:43
fopen(),fclose() 等函数实在 rand3 上运行的,
而 WDM 是在 rand0 上运行的,在驱动中我们操作文件
必须用 RAND0 上提供的函数 IoCreateFile 等,
这些函数在DDK中提供。
paladinii
驱动中牛
驱动中牛
  • 注册日期2003-10-28
  • 最后登录2012-03-09
  • 粉丝0
  • 关注0
  • 积分282分
  • 威望74点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-02-01 14:26
 :P
Ideas for life!
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-02-01 15:08
我在一个驱动里面使用fopen(),fclose(),
已经include "stdio.h"
编译是没有错误的,但link就有错了如下:
ice.obj() : error LNK2001: unresolved external symbol __imp__fclose
ice.obj() : error LNK2001: unresolved external symbol __imp__fgets
ice.obj() : error LNK2001: unresolved external symbol __imp__fopen
objchk\i386\ice.sys() : error LNK1120: 3 unresolved externals
能不能解决?
还是驱动里面不能用fopen()...这些函数?
ddk里面除了zwreadfile,zwwritefile,还有没有什么函数可以对文件进行读写  

[编辑 -  12/14/02 by  linpin]

它们属于C Runtime library 中的东西,由于很多厂家分别有自己的实现方法,而且很多并不是线程安全的,所以微软在内核中实现了另一套。声明都在ntddk.h中
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
游客

返回顶部