vcsongs
驱动牛犊
驱动牛犊
  • 注册日期2001-06-03
  • 最后登录2003-06-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1429回复:6

设备启动

楼主#
更多 发布于:2002-04-24 10:49
通过服务方式动态加载驱动程序. 在调用StartService时返回错误类型为: 1058(无法启动服务,原因可能是它被禁用或与它相关联的设备没有启动)

请问这一般是什么原因造成的呢?

以上情况在Win2K下出现, 当前用户为Administator权限.
Iamme
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2005-10-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-24 11:08
不得而知
先看看注册表
你的服务的相关子键的内容填写正确吗
Go,go ahead
vcsongs
驱动牛犊
驱动牛犊
  • 注册日期2001-06-03
  • 最后登录2003-06-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-24 13:06
用上面的动态装入程序在安装另一个驱动程序的时候, 一切正常, 说明问题出在驱动程序本身.

不成功的驱动程序是由DriverWorks生成的简单程序, Device类派生自KPnpDevice. 调试的时候AddDevice没有被调用过, 所以没有生成新的Device对象.

成功的驱动程序是DriverWorks例子中nt下portio. 它的Device类派生自. KDevice. 在DriverEntry中直接生成新的Device对象.

不知以上的不同是不是会造成起贴中描述的问题?  谢谢!
vcsongs
驱动牛犊
驱动牛犊
  • 注册日期2001-06-03
  • 最后登录2003-06-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-24 13:11
另外, 补充一下:

两次实验在注册中的注册键有一些差别:
成功的PortIo:
    DeleteFlag = 1
    Start = 4

不成功的驱动程序:
    没有DeleteFlag子键.
    Start = 3  
Iamme
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2005-10-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-24 13:52
前一种是WDM驱动
后一种是NT的KMD
你要用添加服务的方式添加驱动
应该用后一种
也就是PortIo那一种


[编辑 -  4/24/02 作者: Iamme]
Go,go ahead
vcsongs
驱动牛犊
驱动牛犊
  • 注册日期2001-06-03
  • 最后登录2003-06-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-04-24 16:39
谢谢您.
那么就是说WDM不能用服务的方式启动了.
那么如果想动态的加载它是不是非要用SetupDi... 的方式呢?
比如说类似DriverStudio/Tools/EzDrvInstaller的功能.

或者使用ShellExecute API 可以吗? lpVerb参数指定为\"install\".

[Edited on 4/24/02 by vcsongs]
Iamme
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2005-10-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-04-25 09:07
太客气了:o

应该是用setupdi...
在2000DDK的例子中有个安装程序例子
可以拿来就用的

ShellExecute我不懂 :(  
Go,go ahead
游客

返回顶部