Necesito crear un controlador WDM que emule 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.¿Cómo puedo desarrollar el controlador de Windows que no toca el hardware?
tengo el conductor codificada, pero XP se niega a cargarlo. El visor de sucesos de sistema dice:
The MyDevice service failed to start due to the following error: The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.
Teniendo en cuenta que, creo que el problema está en el archivo INF (referencia más abajo). ¿Lo es? ¿Cómo debo arreglarlo?
;; 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"
No sé la respuesta, pero proyectos como el emulador Null-modem (http://com0com.sourceforge.net/) indican que es posible. ¿Quizás podrías obtener algo mirando el proyecto? –
El controlador com0com está cerca de lo que necesitaba, pero no del 100% de la solución: también tuve que instalar el controlador desde el panel de control "Agregar nuevo hardware". Solo con hacer clic derecho en instalar el INF no fue suficiente. – Clay