繁体   English   中英

如何开发不触及硬件的Windows驱动程序?

[英]How can I develop windows driver that does not touch hardware?

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

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

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

鉴于此,我认为问题出在INF文件中(参见下文)。 是吗? 我该怎么办呢?

;; MyDevice.inf

[Version]
Signature="$Windows 95$"

Class=MyDeviceDeviceClass
ClassGUID={ff646f80-8def-11d2-9449-00105a075f6b}
Provider=%ProviderName%
DriverVer= 12/21/2009,1.0.0.1

[ClassInstall32]
Addreg=Class_AddReg

[Class_AddReg]
HKR,,,,%DeviceClassName%
HKR,,Icon,,"-18"

[DestinationDirs]
MyDevice_Files_Driver = 10,System32\Drivers


[Manufacturer]
%MfgName%=Mfg0

[Mfg0]
%DeviceDesc%=MyDevice_DDI, *MyDevice


[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]
DisplayName    = %SvcDesc%
ServiceType    = 1
StartType      = 3
ErrorControl   = 1
ServiceBinary  = %10%\System32\Drivers\MyDevice.sys

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

[MyDevice_Files_Driver]
MyDevice.sys


[Strings]
ProviderName="Acme"
MfgName="Acme"
DeviceDesc="Acme"
DeviceClassName="Device class for MyDevice"
SvcDesc="MyDevice NT service"

自我回答:

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

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

“\\ ipm1”是新的,在我眼中有点伏都教。 我从Chris Cant的“编写Windows WDM设备Drvers”中的一个例子中得到了它。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM