Ich muss einen WDM-Treiber erstellen, der ein Gerät emuliert, das nicht vorhanden ist. Der Fahrer muss geladen werden, wenn das O/S Stiefel, geöffnet und geschlossen über SetupDiXXX
und CreateFile
, muss DeviceIoControl
usw.Wie kann ich Windows-Treiber entwickeln, die Hardware nicht berühren?
Ich habe den Treiber codiert, reagieren, aber XP weigert sich, es zu laden. Das System Ereignisanzeige sagt:
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.
Da denke ich, das Problem ist in der INF-Datei (Referenz unten). Ist es? Wie soll ich es beheben?
;; 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"
Ich kenne die Antwort nicht, aber Projekte wie der Nullmodem-Emulator (http://com0com.sourceforge.net/) zeigen an, dass es möglich ist. Vielleicht könnten Sie etwas herausfinden, indem Sie dieses Projekt durchsehen? –
Der com0com-Treiber ist nahe an dem, was ich brauchte, aber nicht 100% der Lösung: Ich musste auch den Treiber von der Systemsteuerung "Neue Hardware" installieren. Einfach mit der rechten Maustaste klicken, um das INF zu installieren, war nicht genug. – Clay