hgn2002
驱动牛犊
驱动牛犊
  • 注册日期2007-05-18
  • 最后登录2008-03-02
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望15点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
阅读:2701回复:8

dll加载后马上又自动卸载了?为什么?

楼主#
更多 发布于:2007-09-21 13:45
以下是我遇到的问题,也是以前的网友问的,表现跟他的一样,将他的问题摘抄如下:
我在EVC下生成了一个简单的流接口的驱动,
然后是修改platform.reg里的注册表项,在\driver\buildin下面注册这个驱动的信息,然后修改project.bib文件,重新makeimg,系统启动时发现这个dll先是被load,接着是执行dllmain里面process_attach下的代码,然后是执行process_dettach下的代码
,紧接着这个dll就被unload了,连xxx_init这个地方都没执行进去
,请问各位是什么原因啊
wince_lover
驱动中牛
驱动中牛
  • 注册日期2007-01-10
  • 最后登录2010-12-20
  • 粉丝0
  • 关注0
  • 积分1103分
  • 威望735点
  • 贡献值2点
  • 好评度279点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-09-21 13:53
你的注册表的"Prefix"项的值是否长度是3字节,否则会出现你说的情况,我以前蹦倒过
hgn2002
驱动牛犊
驱动牛犊
  • 注册日期2007-05-18
  • 最后登录2008-03-02
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望15点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-09-21 14:11
我试试,谢谢!
hgn2002
驱动牛犊
驱动牛犊
  • 注册日期2007-05-18
  • 最后登录2008-03-02
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望15点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-09-21 14:59
我的reg部分加上的内容为:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\EINTKey]
    "Index" = dword:1
    "Prefix" = "KEY"
    "Dll" = "EINTKey.dll"
    "Order" = dword:0

您的意思是将"Prefix" 的内容改为3字节吗?还是"Index" 改为3?
hgn2002
驱动牛犊
驱动牛犊
  • 注册日期2007-05-18
  • 最后登录2008-03-02
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望15点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-09-21 15:03
串口的打印信息为:

Key:DLL_PROCESS_ATTACH.
>>>EINT_initalization address..set..
:::EINT_InitializeAddresses - Success
Data Abort: Thread=9a5c4910 Proc=989d7f40 'device.exe'
AKY=00000005 PC=02b5176c(eintkey.dll+0x0000176c) RA=00000004(???+0x00000004) BVA=06000004 FSR=00000007
RaiseException: Thread=9a5c4910 Proc=989d7f40 'device.exe'
AKY=00000005 PC=03f8dfe8(coredll.dll+0x0001dfe8) RA=96cbe1b4(NK.EXE+0x000061b4) BVA=00000001 FSR=00000001
Key:DLL_PROCESS_DETACH.
shaohui99
驱动牛犊
驱动牛犊
  • 注册日期2007-05-15
  • 最后登录2008-06-19
  • 粉丝0
  • 关注0
  • 积分190分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-09-21 17:06
你的驱动程序有异常,不退出才怪。错误点在你的eintkey.dll + 0x0000176c 的地方,如果你生成了.map文件,根据这个地址可以找到出错的代码行。
hgn2002
驱动牛犊
驱动牛犊
  • 注册日期2007-05-18
  • 最后登录2008-03-02
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望15点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-09-21 17:29
我将驱动程序发给你,你的邮箱是多少?谢谢
high
论坛版主
论坛版主
  • 注册日期2002-08-10
  • 最后登录2010-07-26
  • 粉丝4
  • 关注0
  • 积分60分
  • 威望655点
  • 贡献值0点
  • 好评度56点
  • 原创分0分
  • 专家分60分
7楼#
发布于:2007-09-27 15:09
我曾碰到过这样的情况.
在我的case中,导致这个的原因是,因为我的疏忽,函数名和def文件导出的函数名没有严格匹配(大小写不一致)
hgn2002
驱动牛犊
驱动牛犊
  • 注册日期2007-05-18
  • 最后登录2008-03-02
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望15点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-09-27 16:32
我将寄存器的初始化程序放在OEMInterruptEnable函数里面实现,就好了.谢谢您!
游客

返回顶部