[英]How can I develop windows driver that does not touch hardware?
我需要创建一个模拟不存在的设备的WDM驱动程序。 当O / S通过SetupDiXXX
和CreateFile
启动,打开和关闭时,需要加载驱动程序,需要响应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.