2009-12-22 1 views
6

J'ai besoin de créer un pilote WDM qui émule un périphérique qui n'est pas présent. Le pilote doit être chargé lorsque l'O/S bottes, ouvert et fermé par SetupDiXXX et CreateFile, doit répondre à DeviceIoControl, etc.Comment puis-je développer un pilote Windows qui ne touche pas le matériel?

J'ai le pilote codé, mais XP refuse de le charger. Le spectateur des événements système dit:

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.

Étant donné que, je pense que le problème est dans le fichier INF (référence ci-dessous). Est-ce? Comment dois-je faire pour le réparer?

 
;; 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

Je ne connais pas la réponse, mais des projets comme l'émulateur Null-modem (http://com0com.sourceforge.net/) indiquent que c'est possible. Peut-être pourriez-vous glaner quelque chose en regardant ce projet? –

+0

Le pilote com0com est proche de ce dont j'avais besoin, mais pas à 100% de la solution: j'ai également dû installer le pilote à partir du panneau de configuration "Ajout de nouveau matériel". Juste le clic droit sur l'installation de l'INF n'était pas suffisant. – Clay

Répondre

4

auto répondit:

J'ai changé les INF inclure les éléments suivants:

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

Le "\ IPM1" est nouveau, et un peu voodoo à mes yeux. Je l'ai eu d'un exemple dans "Écriture de Windows WDM Device Drvers" de Chris Cant.

Le gros changement consiste à utiliser l'assistant "Ajout de nouveau matériel" du panneau de commande pour installer le pilote. Cliquez avec le bouton droit sur l'installation de l'INF n'est pas suffisant. Je soupçonne la raison est qu'il appelle le gestionnaire PnP qui ne parvient pas à trouver le matériel pour le contrôle du pilote.

Questions connexes