我写了一个GPIO的驱动,可以顺利编译并集成到OS中,查看
启动后查看[HKEY_LOCAL_MACHINE\Drivers\BuiltIn]下的DLL的信息很正常。但是DLL没有被启动
查看
[HKEY_LOCAL_MACHINE\Drivers\Active]下,DLL的号码并不连贯:
9后面的就是11了
什么理由呀?
怎么解决?哪个大侠给指点一下
我的reg文件
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\HGPIOs]
"Index"=dword:1
"Prefix"="HGP"
"Dll"="HGPIO.dll"
"Order"=dword:0
---------------------
我的def文件:
LIBRARY HGPIO
EXPORTS
HGPIO_Init
HGPIO_Open
HGPIO_Close
HGPIO_Deinit
HGPIO_PowerUp
HGPIO_PowerDown
HGPIO_IOControl
HGPIO_Read
HGPIO_Write
[HKEY_LOCAL_MACHINE\Drivers\Active]下的9号是我自己做的一个string测试的一个框架驱动程序,它都能启动,还可以输出启动信息,不知道为什么这个启动不了。
LZ所说的没启动驱动,是DLLmain都没进,还是能Init,但是,不能正常工作...?
如果初始化完,加载成功后,Active下面应该是有一个你所用驱动的值的...如果驱动压根就没进,,,那就应该是配置文件的错了...
HGPIO_Init
HGPIO_Open
HGPIO_Close
HGPIO_Deinit
HGPIO_PowerUp
HGPIO_PowerDown
HGPIO_IOControl
HGPIO_Read
HGPIO_Write
这些函数要用HGP_xxx
驱动加载过程中要从注册表中读取"Prefix"的值来判断调用什么xxx_Init(),这个xxx要与Prefix一致,且要三个字母。你的驱动中这些函数也要这么定义。
错误找到了,是我def文件和reg文件的某些信息不对应导致的,dll本身没有问题
流驱动的接口函数必须是XXX_Init格式的,Prefix只能是三个字母。