ActivateDevice加载驱动返回错误110

laiyuliang 2010-04-30 10:56:28
各位:我手上有个现成的5.0内核,没装pb5,无法修改内核。所以现在想动态加载驱动,先用RegCreateKey修改注册表,然后调用ActivateDevice后GetLastError的结果是110“系统无法打开指定的设备或文件”。 奇怪的是,我把设备拔出后再插入由系统自动寻找驱动是可以的。说明注册表没有问题。可是为什么动态加载就不行呢?

顺便问一下如果我先装pb6再装pb5会不会出错?

谢谢大家!!
...全文
345 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
酱油党 2012-03-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 aaa_tnt 的回复:]

引用 9 楼 maguiwa 的回复:
我想问下:楼主问题解决了吗?如果解决了是怎样解决的,谢谢拉!!!!

先看下你的 XXX_Init 加载成功了没有,Driver\\active\ 能不能找到你的驱动

NX!!,把2年前的帖子挖出来了,更NX的是发现了自己的身影,4月30日还是离开校园第一天上班。。。
[/Quote]
…关键是问题类似,XXX_Init加载成功没有不知道,Driver\\active\中没有是肯定的。
也是拔出重新插入USB驱动会好使,能够读出串口数据,并且active中有相应键值,看了ce500下源码,应该是usbd.dll中USBDeviceAttach中调用ActivateDevice时候传入了第二个参数,二我们传入的是NULL,关键是一看第二个参数我就哭了,应用层根本不知道怎么能够得到,泪奔。。。现在在想是否能够用软件模拟USB设备插入与拔出的动作,祝自己好运。。
Ei 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 maguiwa 的回复:]
我想问下:楼主问题解决了吗?如果解决了是怎样解决的,谢谢拉!!!!
[/Quote]
先看下你的 XXX_Init 加载成功了没有,Driver\\active\ 能不能找到你的驱动

NX!!,把2年前的帖子挖出来了,更NX的是发现了自己的身影,4月30日还是离开校园第一天上班。。。
酱油党 2012-03-22
  • 打赏
  • 举报
回复
我想问下:楼主问题解决了吗?如果解决了是怎样解决的,谢谢拉!!!!
laiyuliang 2010-05-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 macrozhang001 的回复:]

在加载前你看下注册表信息,是不是已经被加载过了。
在Driver\\active\下面有不有你要打开的驱动信息,如果有说明已被加载。


先装PB6再装PB5可能使PB5安装报错。还是按顺序安装吧。
[/Quote]

谢谢,在通过系统加载驱动后,active下的用户信息项是个随机的数值,所以我觉得是系统检测到usb设备后会分配一个数据结构,把地址传给驱动的ini函数。而我们想动态加载函数的话不知道怎么获取这个地址值。
IT铁哥 2010-05-02
  • 打赏
  • 举报
回复
在加载前你看下注册表信息,是不是已经被加载过了。
在Driver\\active\下面有不有你要打开的驱动信息,如果有说明已被加载。


先装PB6再装PB5可能使PB5安装报错。还是按顺序安装吧。
laiyuliang 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aaa_tnt 的回复:]

返回ERROR_OPEN_FAILED,表示XXX_init 返回 失败(0).
先装PB6 再装PB5 我是这么装的,目前没遇到什么问题,不过最好还是 低版本到高版本。
[/Quote]

这个是usb转串口驱动,我插入设备让系统自动识别就可以,但是动态加载却不行。是不是系统调用这个dll的时候会传入一个参数?
laiyuliang 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 veabol 的回复:]

写注册表时DLL路径对吗?如果不在WINDOWS目录下的话可能就要写绝对路径
[/Quote]

以下是注册表信息和程序代码,我觉得应该没有什么问题。
[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\4292_60000\Default\Default\CP210xVCP]
"Dll"="CP210xVCP.DLL"
"Prefix"="COM"

[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\CP210xVCP\Port0\4292_60000]
"Dll"="CP210xVCP.DLL"
"Prefix"="COM"
"Index"=dword:9

[HKEY_LOCAL_MACHINE\ExtModems\CP210x]
"DeviceType"=dword:1
"FriendlyName"="CP210x USB to UART Bridge on COM9:"
"Port"="COM9:"

HANDLE h=ActivateDevice(L"\\Drivers\\USB\\ClientDrivers\\CP210xVCP\\Port0\\4292_60000",0);
Ei 2010-04-30
  • 打赏
  • 举报
回复
返回ERROR_OPEN_FAILED,表示XXX_init 返回 失败(0).
先装PB6 再装PB5 我是这么装的,目前没遇到什么问题,不过最好还是 低版本到高版本。
博说医械研发 2010-04-30
  • 打赏
  • 举报
回复
也可能是你的ActivateDevice参数有问题
博说医械研发 2010-04-30
  • 打赏
  • 举报
回复
写注册表时DLL路径对吗?如果不在WINDOWS目录下的话可能就要写绝对路径
laiyuliang 2010-04-30
  • 打赏
  • 举报
回复
刚刚发现usb驱动是不能由用户加载的,因为系统找到硬件时会生成一个初始化参数,我们无法知道这个参数的值。这是我的估计,不知道是否准确。 我怀疑那个参数是设备ID之类的。 btw 这是usb转串口驱动,不知道哪位有办法获取这个值?

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧