Come posso sviluppare driver di Windows che non tocca l'hardware?
Domanda
Ho bisogno di creare un driver WDM che emula un dispositivo che non è presente. Il conducente deve essere caricato quando l'O / S stivali, aperto e chiuso tramite SetupDiXXX
e CreateFile
, deve rispondere a DeviceIoControl
, ecc
Ho l'autista codificato, ma XP si rifiuta di caricarlo. Il visualizzatore di eventi di sistema, dice:
Il servizio non è riuscito a MyDevice stato avviato per il seguente errore: il servizio non può essere avviato, sia perché è disabilitato o perché non non ha periferiche associate esso.
Premesso questo, credo che il problema sia nel file INF (riferimento sottoindicato). È? Come devo fare per risolverlo?
;; 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"
Soluzione
Auto ha risposto:
Ho cambiato l'INF per includere quanto segue:
[Mfg0] % DeviceDesc% = MyDevice_DDI, * MyDevice \ ipm1
Il "\ ipm1" è nuovo, e un po 'voodoo nei miei occhi. Ho presa da un esempio in "Drvers dispositivo di scrittura di Windows WDM" di Chris Cant.
Il grande cambiamento sta usando la procedura guidata "Nuovo hardware" dal pannello di controllo per installare il driver. Pulsante destro del mouse l'installazione del file INF non è sufficiente. Ho il sospetto che il motivo è che invoca il manager PnP che non riesce correttamente per trovare l'hardware per il conducente di controllo.