6

我需要创建一个模拟不存在的设备的 WDM 驱动程序。O/S启动时需要加载驱动,通过SetupDiXXXand打开和关闭CreateFile,需要响应DeviceIoControl等。

我已经编码了驱动程序,但 XP 拒绝加载它。系统事件查看器说:

由于以下错误,MyDevice 服务无法启动:该服务无法启动,原因可能是它被禁用或没有与之关联的启用设备。

鉴于此,我认为问题出在 INF 文件中(参考下文)。是吗?我应该如何修复它?

;; 我的设备.inf

[版本]
签名="$Windows 95$"

类=我的设备设备类
类GUID={ff646f80-8def-11d2-9449-00105a075f6b}
提供者=%ProviderName%
驱动程序版本 = 12/21/2009,1.0.0.1

[类安装32]
Addreg=Class_AddReg

[Class_AddReg]
HKR,,,,%DeviceClassName%
HKR,,图标,,"-18"

[目标目录]
MyDevice_Files_Driver = 10,System32\Driver


[制造商]
%MfgName%=Mfg0

[制造0]
%DeviceDesc%=MyDevice_DDI, *MyDevice


[我的设备_DDI]
CopyFiles=MyDevice_Files_Driver
AddReg=MyDevice_9X_AddReg


[MyDevice_DDI.NT]
CopyFiles=MyDevice_Files_Driver
AddReg=MyDevice_NT_AddReg

[MyDevice_DDI.NT.Services]
Addservice = MyDevice,0x00000002,MyDevice_AddService

[MyDevice_AddService]
显示名称 = %SvcDesc%
服务类型 = 1
开始类型 = 3
错误控制 = 1
ServiceBinary = %10%\System32\Drivers\MyDevice.sys

[MyDevice_NT_AddReg]
HKLM, "System\CurrentControlSet\Services\MyDevice\Parameters","BreakOnEntry", 0x00010001, 0

[MyDevice_Files_Driver]
我的设备.sys


[弦乐]
提供者名称="Acme"
MfgName="Acme"
DeviceDesc="Acme"
DeviceClassName="MyDevice 的设备类"
SvcDesc="MyDevice NT 服务"
4

1 回答 1

4

自答:

我更改了 INF 以包括以下内容:

[Mfg0] %DeviceDesc%=MyDevice_DDI, *MyDevice\ipm1

"\ipm1" 是新的,在我眼里有点巫术。我从 Chris Cant 的“Writing Windows WDM Device Drvers”中的一个例子中得到它。

最大的变化是使用控制面板中的“添加新硬件”向导来安装驱动程序。右键单击安装 INF 是不够的。我怀疑原因是它调用了 PnP 管理器,它正确地找不到驱动程序控制的硬件。

于 2009-12-22T14:36:50.383 回答