Freigeben über


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"