Bereitstellen einer UVC-INF-Datei
Wichtig
Der Inhalt und der Beispielcode in diesem Thema sind veraltet und werden derzeit nicht unterstützt. Dies funktioniert möglicherweise nicht mit der aktuellen Treiberentwicklungs-Toolkette.
In diesem Abschnitt werden verschiedene Teile einer gerätespezifischen INF-Datei veranschaulicht.
Eine INF-Datei wie diese kann verwendet werden, um einen gerätespezifischen Namen anzugeben oder das Erweiterungseinheit-Plug-In zu registrieren.
Im Allgemeinen können Anbieter, die ein Setuppaket bereitstellen, die Plug-In-DLL mithilfe des Setuppakets registrieren. In diesem Fall stellt der Anbieter keine INF-Datei bereit. Für die Treibersignatur ist es möglicherweise einfacher, ein Setuppaket anstelle einer gerätespezifischen INF-Datei bereitzustellen.
Beachten Sie jedoch, dass Sie dieses spezifische Beispiel mithilfe einer INF-Datei installieren müssen.
Fügen Sie hierzu den folgenden Code in die INF-Datei ein, hier willkürlich Xuplgin.inf genannt:
; Copyright (c) CompanyName. All rights reserved.
[Version]
...
Class=Camera
ClassGuid={ca3e7ab9-b4c3-4ae6-8251-579ef933890f}
...
[SourceDisksNames]
1=%Package%
[SourceDisksFiles]
MyPlugin.ax=1
[ControlFlags]
ExcludeFromSelect=*
[DestinationDirs]
MyDevice.CopyList=11 ; %systemroot%\system32 on NT-based systems
[Manufacturer]
%CompanyName%=CompanyName,NT$ARCH$
Die gerätespezifische INF-Datei wird anhand des VID/PID-Bezeichners mit dem Gerät abgeglichen. In diesem Fall hat die gerätespezifische INF-Datei Vorrang vor Usbvideo.inf.
[CompanyName.NT$ARCH$]
%MyDevice.DeviceDesc%=MyDevice,USB\Vid_XXXX&Pid_XXXX&MI_XX
[MyDevice]
Include=usbvideo.inf, ks.inf, kscaptur.inf
Needs=USBVideo.NT, KS.Registration, KSCAPTUR.Registration.NT
AddReg=MyDevice.Plugins
CopyFiles=MyDevice.CopyList
Weitere Abschnitte von Usbvideo.inf müssen zur Vollständigkeit hinzugefügt werden.
[MyDevice.SERVICES]
Include=usbvideo.inf
Needs=USBVideo.NT.SERVICES
[MyDevice.HW]
Include=usbvideo.inf
Needs=USBVideo.NT.HW
[MyDevice.WDF]
Include=usbvideo.inf
Needs=USBVideo.NT.WDF
[WdmCompanionFilter_CompanionSect]
CompanionServices = SecureUSBVideo
[WdmCompanionFilter_KmdfSvcSect]
KmdfLibraryVersion = %KMDF_VERSION%
[SecureUSBVideo_UmdfSvcSect]
UmdfLibraryVersion = %UMDF_VERSION%
ServiceBinary = %12%\UMDF\SecureUSBVideo.dll
ServiceType = SecureCompanion ; allowed options are: Driver (default), SecureCompanion, NonSecureCompanion
TrustletIdentity = 4096 ; required if it is SecureCompanion
Der INF benötigt auch einen CopyFiles-Abschnitt, um das Plug-In in den Systemordner zu kopieren.
[MyDevice.CopyList]
MyPlugin.ax
Im ersten Teil des folgenden INF AddReg-Abschnitts wird das Plug-In registriert. Der Rest dieses Abschnitts zeigt die Registrierungseinträge für ein knotenbasiertes Erweiterungseinheit-Plug-In. Ähnliche Beispiele finden Sie unter Usbvideo.inf .
[MyDevice.PlugIns]
HKCR,CLSID\%Plugin.CLSID%,,,%PlugIn_IExtensionUnit%
HKCR,CLSID\%Plugin.CLSID%\InprocServer32,,,MyPlugin.ax
HKCR,CLSID\%Plugin.CLSID%\InprocServer32,ThreadingModel,,Both
; The IID is aggregated onto the node given the GUID of the property set
HKLM,System\CurrentControlSet\Control\NodeInterfaces\%XU_GUID%,,,
%PlugIn_IExtensionUnit%
; IID in Little-Endian form
HKLM,System\CurrentControlSet\Control\NodeInterfaces\%XU_GUID%,IID,
1,yy,yy,yy,yy,yy,yy,yy,yy,yy,yy,yy,yy,yy,yy,yy,yy
;CLSID in Little-Endian form
HKLM,System\CurrentControlSet\Control\NodeInterfaces\%XU_GUID%,
CLSID,1,zz,zz,zz,zz,zz,zz,zz,zz,zz,zz,zz,zz,zz,zz,zz,zz
Im folgenden INF-Abschnitt wird gezeigt, wie Schnittstellenspezifische Registrierungseinträge aufgefüllt werden.
[MyDevice.Interfaces]
AddInterface=%KSCATEGORY_CAPTURE%,<Custom GUID/Global>,MyDevice.Interface
AddInterface=%KSCATEGORY_VIDEO_CAMERA%,<Custom GUID/Global>,MyDevice.Interface
AddInterface=%KSCATEGORY_VIDEO%,<Custom GUID/Global>,MyDevice.Interface
[MyDevice.Interface]
AddReg=MyDevice.Interface.AddReg
[MyDevice.Interface.AddReg]
HKR,,CLSID,,%ProxyVCap.CLSID%
HKR,,FriendlyName,,%MyDevice.DeviceDesc%
HKR,,RTCFlags,0x00010001,0x00000010
Wenn bei USB-Kameras der Registrierungsschlüsselspeicherort der Geräteschnittstelle einen DWORD-Registrierungseintrag EnableDependentStillPinCapture mit einem Wert ungleich 0 enthält, wird der abhängige Pin für solche Kameras für die Fotoaufnahme verwendet. Wenn der Registrierungseintrag nicht vorhanden oder auf Null festgelegt ist, wird der abhängige Pin nicht verwendet. Stattdessen erfolgt die Fotoaufnahme mit einem Frame, der von der Vorschaunadel genommen wurde. Die folgende Option ermöglicht die abhängige Aufzeichnung nach dem Anheften:
HKR,,EnableDependentStillPinCapture,0x00010001,1
Sie können auch einen optionalen Registrierungswert namens UvcFlags definieren. UvcFlags sollte ein DWORD-Wert sein. Wenn das Gerät angeschlossen ist, empfängt der UVC-Treiber eine Plug & Play -Startanforderung (PnP). Der Treiber sucht dann im Geräteregistrierungsschlüssel nach UvcFlags . Der DWORD-Wert ist eine Bitmaske und kann die Werte in der folgenden Tabelle enthalten.
Bitmaskenname | Wert | BESCHREIBUNG |
---|---|---|
WORKAROUNDS_DV_INTERLEAVED_DEFAULT_MASK | 0x00000001 | UVC unterstützt nur Videodatenbereiche und verschachtelte DV-Datenbereiche. Legen Sie diese Bitmaske für verschachtelte DV fest. |
WORKAROUNDS_SUPPRESS_CLOCK_MASK | 0x00000002 | Derzeit nicht verwendet. |
WORKAROUNDS_MPEG2TS_SUPPORT_FID | 0x00000004 | Die FID-Maske gibt an, dass der Streamheader ein FID-Bit enthält. |
WORKAROUNDS_MPEG2TS_SUPPORT_EOF | 0x00000008 | Die EOF-Maske gibt an, dass die Nutzlastheader ein Ende-of-Frame-Bit enthalten. |
WORKAROUNDS_VARIABLE_FRAME_RATE_MASK | 0x00000010 | Legen Sie diese Maske fest, wenn ihr Gerät die Bildfrequenz variieren kann. DV-Geräte mit fester Rate sollten diese Maske nicht festlegen. |
Fügen Sie eine Zeile ähnlich dem folgenden Beispiel ein, um die anzuwendende Bitmaske anzugeben:
HKR,,UvcFlags,0x00010001,0x00000010
Wenn Sie den UVC-Treiber unter Windows Server 2003 und Windows Vista oder höheren Versionen des Betriebssystems verwenden, können die FID- und EOF-Masken mit streambasierten Formaten wie MPEG-2 TS verwendet werden.
Unter Bedingungen mit niedriger Bildfrequenz meldet das EOF-Bit möglicherweise eine schnellere Vervollständigung als das FID-Bit des folgenden Frames. Das EOF-Bit kann verwendet werden, um die Latenz bei der Übermittlung von MPEG-2-Frames zu reduzieren.
Weitere Informationen zur Positionssyntax von AddReg-Direktiven finden Sie unter INF AddReg-Direktive.
Dieser letzte Abschnitt enthält fehlende Definitionen für den INF.
[Strings]
; Non-localizable
Plugin.CLSID="{zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz}"
ProxyVCap.CLSID="{17CCA71B-ECD7-11D0-B908-00A0C9223196}"
XU_GUID="{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"
KSCATEGORY_VIDEO_CAMERA="{E5323777-F976-4f5b-9B55-B94699C46E44}"
KSCATEGORY_CAPTURE="{65E8773D-8F56-11D0-A3B9-00A0C9223196}"
KSCATEGORY_VIDEO="{6994AD05-93EF-11D0-A3CC-00A0C9223196}"
; Localizable
CompanyName="CompanyName"
Package="Installation Package"
MyDevice.DeviceDesc="CompanyName Camera"
PlugIn_IMyExtensionUnit="CompanyName Extension Unit Interface"