¿Cómo puedo desarrollar controladores de Windows que no toca el hardware?
Pregunta
Es necesario crear un controlador WDM que emula un dispositivo que no está presente. El controlador necesita ser cargado cuando el O / S botas, abre y se cierra a través de SetupDiXXX
y CreateFile
, necesita responder a DeviceIoControl
, etc.
Tengo el conductor codificado, pero XP se niega a cargarlo. El visor de sucesos de sistema dice:
El servicio no pudo MyDevice iniciarse debido al siguiente error: el servicio no se puede iniciar, ya sea porque está deshabilitado o porque no tiene dispositivos habilitados asociados a a él.
Teniendo en cuenta que, creo que el problema está en el archivo INF (referencia más abajo). ¿Lo es? ¿Cómo debo ir sobre la fijación él?
;; 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"
Solución
Auto respondió:
He cambiado el INF para incluir lo siguiente:
[Mfg0] % DeviceDesc% = MyDevice_DDI, MyDevice * \ ipm1
El "\ ipm1" es nueva, y un poco de vudú en mis ojos. Me lo dio un ejemplo en "Drvers dispositivo de escritura de Windows WDM" de Chris Cant.
El gran cambio está utilizando el asistente "Agregar nuevo hardware" del panel de control para instalar el controlador. Haga clic de instalar el INF no es suficiente. Sospecho que la razón es que se invoca el gestor de PnP, que no encuentra correctamente el hardware para que el conductor de control.