Как я могу разработать драйвер Windows, который не касается оборудования?
Вопрос
Мне нужно создать драйвер 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" - это что-то новое, и в моих глазах это немного вуду.Я понял это из примера из книги Криса Канта "Написание Drvers устройств Windows WDM".
Большое изменение заключается в использовании мастера "Добавить новое оборудование" на панели управления для установки драйвера.Щелчка правой кнопкой мыши по установке INF недостаточно.Я подозреваю, что причина в том, что он вызывает PnP manager, который корректно не может найти оборудование для управления драйвером.