Hallo,
vor einigen Jahren habe ich einen Treiber erstellt, um Videodaten von einem DV-Camcorder in den Computer zu bekommen, und dort als Video auf dem Bildschirm darzustellen usw. Da ich diese Materie der Treiberprogrammierung nur teilweise verstanden habe, habe ich ihn nur teilweise selbst geschrieben, ansonsten aus Beispielcode aus dem Windows-DDK zusammengesetzt. Auch die INF-Datei habe ich eher abgeschrieben (keine Ahnung mehr woher). Trotzdem funktionierte das Ergebnis.
Nun versuche ich das solider zu machen (mit den Werkzeugen der neuen Windows-DDK bekomme ich jede Menge Warn- und Fehlermeldungen). Das Problem ist die INF-Datei. Ich versuchte die Fehlermeldungen zu reduzieren, aber die Sache wird nun unstabil, der Computer stürzt häufig ab (beim Entfernen des Geräts), immer mit demselben Bluescreen (KMODE_EXTENSION_NOT_HANDLED C0000005 EB43102D 0000000X XXXXXXXX) X=variabel, Analyse des Minidumps mit Windbg weist auf eine Fehlfunktion des OHCI1394.sys hin, die aber wohl indirekt durch meinen DV-Treiber ausgelöst wurde. Das scheint mit der INF-Datei zusammenzuhängen. Ich schaffe es leider nicht einmal, KdPrint-Meldungen mit z. B. DebugView sichtbar zu machen (hängt das auch von passenden Einträgen in der INF-Datei ab?). Ehrlich gesagt, blicke ich einfach nicht durch und finde nichts Brauchbares im Internet, das mir weiterhelfen würde.
Meine Frage lautet:
-
Woher weiß ich, welche Einträge ich in die DDInstall-Section nehmen muß (DDInstall.HW z. B.), nach welchen Regeln gehe ich da vor?
-
Gibt es ein Tool, mit dem ich das automatisch aus dem Treiber-Quelltext machen kann?
Ich habe die Bücher: Gerätetreiber unter Windows2000 (Art Baker, Jerry Lozano) und Programming the MS Windows Driver Model (Walter Oney), sowie die Dokumentation des Windows DDK zur Verfügung, das scheint aber nicht auszureichen.
Grüße,
I.
(bin So - Fr nicht da, kann auf ev. Antworten erst dann reagieren)
Hier ist der Auszug aus meiner alten INF-Datei (ohne den Anfang):
;\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
; Destination Directories
;------------------------------------------------------------------------------
[DestinationDirs]
DefaultDestDir = 11 ; %windir%\System32\Drivers
\_CopyFiles\_sys = 10,System32\Drivers
\_CopyFiles\_inf = 17 ; INF directory
;\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
; Copy file sections
;------------------------------------------------------------------------------
[\_CopyFiles\_sys]
av1394g.sys
[\_CopyFiles\_inf]
av1394g.inf
;\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
; Device Section
;------------------------------------------------------------------------------
[Generic]
%1394\A02D&10000.DeviceDesc%=DVCR,,1394\A02D&10000
%1394\A02D&10001.DeviceDesc%=DVCR,,1394\A02D&10001
;\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
; Install Sections ( Device1 )
;------------------------------------------------------------------------------
; driver specific 98
[DVCR]
DriverVer=10/03/2003,5.00.2195.1
AddReg=\_AddReg\_SW1, \_AddReg, \_Parameters1\_98
CopyFiles=\_CopyFiles\_sys, \_CopyFiles\_inf
; device specific 98
;[DVCR.HW]
;AddReg=\_AddReg\_HW1
[DVCR.Interfaces]
AddInterface="{ACBCB166-2AD5-4447-930F-F510729BC535}",GLOBAL,DVCR.Interface
; driver specific NT
[DVCR.NTx86]
AddReg=\_AddReg\_SW1, \_AddReg, \_Parameters1\_NT
CopyFiles=\_CopyFiles\_sys, \_CopyFiles\_inf
[DVCR.NTx86.Services]
AddService = %S\_DriverName%, 0x00000002, \_NT\_AddService;, \_NT\_EventLog
; device specific NT
;[DVCR.NTx86.HW]
;AddReg=\_AddReg\_HW1
[DVCR.NTx86.Interfaces]
AddInterface="{ACBCB166-2AD5-4447-930F-F510729BC535}",GLOBAL,DVCR.Interface
;\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
; NT Service
;------------------------------------------------------------------------------
[\_NT\_AddService]
DisplayName = %S\_ServiceDisplayName%
ServiceType = 1 ; SERVICE\_KERNEL\_DRIVER
StartType = 3 ; SERVICE\_DEMAND\_START
ErrorControl = 1 ; SERVICE\_ERROR\_NORMAL
ServiceBinary = %10%\System32\Drivers\%S\_DriverName%.sys
;[\_NT\_EventLog]
;AddReg=\_NT\_EventLog\_AddReg
;[\_NT\_EventLog\_AddReg]
;HKR,,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\IoLogMsg.dll;%%SystemRoot%%\System32\drivers\%S\_DriverName%.sys"
;HKR,,TypesSupported, 0x00010001,7
;\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
; Registry sections (1)
;------------------------------------------------------------------------------
[\_AddReg]
HKR,,DevLoader,,\*ntkern
HKR,,NTMPDriver,,%S\_DriverName%.sys
;HKR,,DontSuspendIfStreamsAreRunning,3,01
[\_AddReg\_SW1]
; create config keys
HKLM,"%S\_ConfigPath%",,,
HKLM,"%S\_ConfigPath%"\"%S\_DeviceConfigPath1%",,,
;[\_AddReg\_HW1]
; create link to configuration key
;HKR,,AV1394G\_ConfigurationPath,,\Registry\Machine\%S\_ConfigPath%\%S\_DeviceConfigPath1%
;
; ### modify here ###
; Enable the next line to create an additional user interface for your device.
; !!! DO NOT USE an example GUID, generate a new one !!!
; Use guidgen.exe to generate a new GUID, insert it in the following line.
;
;HKR,,AV1394G\_UserInterfaceGuid,,"{ACBCB166-2AD5-4447-930F-F510729BC535}"
[DVCR.Interface]
AddReg=DVCR.Intf.AddReg
[DVCR.Intf.AddReg]
HKR,,FriendlyName,,%S\_FriendlyName%
;[\_Parameters1\_98]
;???
;[\_Parameters1\_NT]
;???
;\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
; Disk Layout
;------------------------------------------------------------------------------
[SourceDisksNames]
1=%S\_DiskName%,,0
[SourceDisksFiles]
%S\_DriverName%.sys=1
;\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
; Localizable Strings
; ### modify here ###
;------------------------------------------------------------------------------
[Strings]
S\_Provider="Dr. Egon Winter"
S\_Generic="Standard"
; driver name (binary file)
; if the name is changed, don´t forget to change copy section too
S\_DriverName="av1394g"
; service display name
S\_ServiceDisplayName="AV1394G"
; configuration registry path
S\_ConfigPath="SYSTEM\CurrentControlSet\Services\AV1394G"
; device-specific configuration registry path
S\_DeviceConfigPath1="Parameters"
; device descriptions
1394\A02D&10000.DeviceDesc="DV-Kamera und Videorecorder"
1394\A02D&10001.DeviceDesc="DV-Kamera und Videorecorder"
; friendly name
S\_FriendlyName="DV-Kamera und Videorecorder"
; disk name
S\_DiskName="AV1394G Driver Disk"