Comment puis-je développer pilote Windows qui ne touche pas le matériel?
Question
Je dois créer un pilote WDM qui émule un dispositif qui est pas présent. Le pilote doit être chargé lors du démarrage O / S, ouvert et fermé par SetupDiXXX
et CreateFile
, doit répondre à DeviceIoControl
, etc.
J'ai le pilote codé, mais XP refuse de le charger. Le spectateur des événements système dit:
Le service MyDevice n'a pas démarrer en raison de l'erreur suivante: Le le service ne peut pas être démarré parce qu'il est désactivé ou parce qu'il n'a pas périphérique activé associé il.
Étant donné que, je pense que le problème est dans le fichier INF (référence ci-dessous). Est-il? Comment dois-je prendre pour le corriger?
;; 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"
La solution
Self a répondu:
J'ai changé l'INF inclure les éléments suivants:
[Mfg0] % DeviceDesc% = MyDevice_DDI, * MyDevice \ IPM1
Le « \ IPM1 » est nouvelle, et un peu voodoo à mes yeux. Je l'ai d'un exemple dans les "Drvers Device WDM écriture Windows" de Chris Cant.
Le grand changement utilise l'assistant « Ajout de nouveau matériel » à partir du panneau de commande pour installer le pilote. Faites un clic droit l'installation INF ne suffit pas. Je soupçonne que la raison est qu'il invoque le gestionnaire PnP qui échoue correctement pour trouver le matériel pour le conducteur à contrôler.