ccwss000
驱动牛犊
驱动牛犊
  • 注册日期2003-12-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分85分
  • 威望9点
  • 贡献值1点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1444回复:9

DriverEntry单例程驱动程序问题

楼主#
更多 发布于:2004-04-21 22:35
我编写的驱动源文件中只有DriverEntry一个例程如下
#pragma PAGEDCODE
extern \"C\" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{ // DriverEntry
  DbgPrint(\"Welcom to DriverEntry!!\\n\");
  return STATUS_UNSUCCESSFUL;
}
安装的时候会反复调用DriverEntry例程儿进入死循环
有什么方法使得DriverEntry只能被调用一次儿不至于进入死循环啊?

我试过把STATUS_UNSUCCESSFUL改为STATUS_SUCCESS,结果出现了页面错误而使机器重启,

怎么办啊!!!!!!!
yutong1112
驱动牛犊
驱动牛犊
  • 注册日期2004-04-19
  • 最后登录2005-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-22 09:06
  why donnot you export other driver entry points?
CYoung
驱动中牛
驱动中牛
  • 注册日期2003-06-10
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-22 11:25
DriverEntry不成功,一直在安装,所以进入死循环,再加一个AddDevice例程看看吧
答得好的话,请兄弟们加点分,那是对我的肯定
ccwss000
驱动牛犊
驱动牛犊
  • 注册日期2003-12-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分85分
  • 威望9点
  • 贡献值1点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-04-22 12:31
能具体说一下原因吗?不加别的例程就不能避免这种情况了吗?
newbie_xian
驱动牛犊
驱动牛犊
  • 注册日期2004-04-13
  • 最后登录2004-09-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-23 13:20
DriverUnload例程
在WDM驱动程序中,DriverUnload例程的作用就是释放DriverEntry例程在全局初始化过程中申请的任何资源,但它几乎没什么可做。如果你在DriverEntry中备份了RegistryPath串,应该在这里释放备份所占用的内存:

VOID DriverUnload(PDRIVER_OBJECT DriverObject)
{
  RtlFreeUnicodeString(&servkey);
}
 

如果DriverEntry例程返回一个失败状态代码,系统将不再调用DriverUnload例程。所以,不能让DriverEntry例程出错后产生任何副作用,必须在它返回错误代码前消除副作用。

把这个加上试试

hellangel
驱动中牛
驱动中牛
  • 注册日期2004-02-16
  • 最后登录2016-04-19
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望236点
  • 贡献值0点
  • 好评度205点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2004-04-25 20:17
DriverUnload例程
在WDM驱动程序中,DriverUnload例程的作用就是释放DriverEntry例程在全局初始化过程中申请的任何资源,但它几乎没什么可做。如果你在DriverEntry中备份了RegistryPath串,应该在这里释放备份所占用的内存:

VOID DriverUnload(PDRIVER_OBJECT DriverObject)
{
  RtlFreeUnicodeString(&servkey);
}
 

如果DriverEntry例程返回一个失败状态代码,系统将不再调用DriverUnload例程。所以,不能让DriverEntry例程出错后产生任何副作用,必须在它返回错误代码前消除副作用。

把这个加上试试

 

显然他没有引用!
春眠不觉晓,处处闻啼鸟。 夜来风雨声,花落知多少?
ccwss000
驱动牛犊
驱动牛犊
  • 注册日期2003-12-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分85分
  • 威望9点
  • 贡献值1点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-04-26 09:19
我可以试试,但是我在DriverEntry中几乎什么也没做,副作用是怎么引入的呢?
另外如果我在这种情况下使DriverEntry返回SATUS_UNSUCCESSFUL为什么DriverEntry会一直被调用呢?

[编辑 -  4/26/04 by  ccwss000]
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-04-29 13:15
不会吧,居然有这种事,不知你的Driver是怎样加载的。
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-05-10 09:37
你看DDK
driverunload是必须实现的例程之一
你至少要为他分配入口
即使该例程什么也不做
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
9楼#
发布于:2004-05-10 12:09
你看DDK
driverunload是必须实现的例程之一
你至少要为他分配入口
即使该例程什么也不做


因该没关系的,系统在传递给你DRIVEROBJECT之前会把里面所有的例程都指向一个默认的处理过程,所以你写不写是无所谓的.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部