阅读:2701回复:8
dll加载后马上又自动卸载了?为什么?
以下是我遇到的问题,也是以前的网友问的,表现跟他的一样,将他的问题摘抄如下:
我在EVC下生成了一个简单的流接口的驱动, 然后是修改platform.reg里的注册表项,在\driver\buildin下面注册这个驱动的信息,然后修改project.bib文件,重新makeimg,系统启动时发现这个dll先是被load,接着是执行dllmain里面process_attach下的代码,然后是执行process_dettach下的代码 ,紧接着这个dll就被unload了,连xxx_init这个地方都没执行进去 ,请问各位是什么原因啊 |
|
沙发#
发布于:2007-09-21 13:53
你的注册表的"Prefix"项的值是否长度是3字节,否则会出现你说的情况,我以前蹦倒过
|
|
板凳#
发布于:2007-09-21 14:11
我试试,谢谢!
|
|
地板#
发布于: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? |
|
地下室#
发布于: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. |
|
5楼#
发布于:2007-09-21 17:06
你的驱动程序有异常,不退出才怪。错误点在你的eintkey.dll + 0x0000176c 的地方,如果你生成了.map文件,根据这个地址可以找到出错的代码行。
|
|
6楼#
发布于:2007-09-21 17:29
我将驱动程序发给你,你的邮箱是多少?谢谢
|
|
7楼#
发布于:2007-09-27 15:09
我曾碰到过这样的情况.
在我的case中,导致这个的原因是,因为我的疏忽,函数名和def文件导出的函数名没有严格匹配(大小写不一致) |
|
8楼#
发布于:2007-09-27 16:32
我将寄存器的初始化程序放在OEMInterruptEnable函数里面实现,就好了.谢谢您!
|
|