2009-12-22 5 views
6

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

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

+0

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

Antwort

4

Selbst antwortete:

ich die INF geändert, schließen Folgendes ein:

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

Die "\ IPM1" ist neu und ein wenig Voodoo in meinen Augen. Ich habe es aus einem Beispiel in Chris Cant "Schreiben von Windows WDM Device Drvers".

Die große Änderung ist die Verwendung des Assistenten "Neue Hardware hinzufügen" aus dem Steuerungsfeld, um den Treiber zu installieren. Rechtsklick auf die Installation der INF ist nicht genug. Ich vermute, der Grund ist, dass es den PnP-Manager aufruft, der die Hardware, die der Treiber steuern kann, nicht richtig findet.

Verwandte Themen