阅读:1429回复:6
设备启动
通过服务方式动态加载驱动程序. 在调用StartService时返回错误类型为: 1058(无法启动服务,原因可能是它被禁用或与它相关联的设备没有启动)
请问这一般是什么原因造成的呢? 以上情况在Win2K下出现, 当前用户为Administator权限. |
|
沙发#
发布于:2002-04-24 11:08
不得而知
先看看注册表 你的服务的相关子键的内容填写正确吗 |
|
|
板凳#
发布于:2002-04-24 13:06
用上面的动态装入程序在安装另一个驱动程序的时候, 一切正常, 说明问题出在驱动程序本身.
不成功的驱动程序是由DriverWorks生成的简单程序, Device类派生自KPnpDevice. 调试的时候AddDevice没有被调用过, 所以没有生成新的Device对象. 成功的驱动程序是DriverWorks例子中nt下portio. 它的Device类派生自. KDevice. 在DriverEntry中直接生成新的Device对象. 不知以上的不同是不是会造成起贴中描述的问题? 谢谢! |
|
地板#
发布于:2002-04-24 13:11
另外, 补充一下:
两次实验在注册中的注册键有一些差别: 成功的PortIo: DeleteFlag = 1 Start = 4 不成功的驱动程序: 没有DeleteFlag子键. Start = 3 |
|
地下室#
发布于:2002-04-24 13:52
前一种是WDM驱动
后一种是NT的KMD 你要用添加服务的方式添加驱动 应该用后一种 也就是PortIo那一种 [编辑 - 4/24/02 作者: Iamme] |
|
|
5楼#
发布于:2002-04-24 16:39
谢谢您.
那么就是说WDM不能用服务的方式启动了. 那么如果想动态的加载它是不是非要用SetupDi... 的方式呢? 比如说类似DriverStudio/Tools/EzDrvInstaller的功能. 或者使用ShellExecute API 可以吗? lpVerb参数指定为\"install\". [Edited on 4/24/02 by vcsongs] |
|
6楼#
发布于:2002-04-25 09:07
太客气了:o
应该是用setupdi... 在2000DDK的例子中有个安装程序例子 可以拿来就用的 ShellExecute我不懂 :( |
|
|