2009-12-22 13 views
6

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" 
+1

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? –

+0

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

Respuesta

4

auto respondió:

he cambiado el INF para incluir lo siguiente:

[Mfg0] %DeviceDesc%=MyDevice_DDI, *MyDevice\ipm1

El "\ ipm1" es nuevo, y un poco de vudú en mis ojos. Lo obtuve de un ejemplo en "Escritores Windows WDM Device Drvers" de Chris Cant.

El gran cambio es utilizar el asistente "Agregar nuevo hardware" desde el panel de control para instalar el controlador. Hacer clic con el botón derecho para instalar el INF no es suficiente. Sospecho que la razón es que invoca al administrador de PnP que no encuentra correctamente el hardware para que el controlador lo controle.

Cuestiones relacionadas