Как я могу разработать драйвер Windows, который не касается оборудования?

StackOverflow https://stackoverflow.com/questions/1944146

  •  20-09-2019
  •  | 
  •  

Вопрос

Мне нужно создать драйвер 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, который корректно не может найти оборудование для управления драйвером.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top