Specifica di un file INF UVC
Importante
Il contenuto e il codice di esempio in questo argomento sono obsoleti e attualmente non supportati. Potrebbe non funzionare con lo strumento di sviluppo driver corrente.
Questa sezione illustra varie parti di un file INF specifico del dispositivo.
Un file INF simile a questo può essere usato per specificare un nome specifico del dispositivo o per registrare il plug-in unità di estensione.
In generale, i fornitori che forniscono un pacchetto di installazione possono registrare la DLL plug-in usando il pacchetto di installazione, nel qual caso il fornitore non fornisce un file INF. Per la firma del driver, potrebbe essere più semplice fornire un pacchetto di installazione anziché un file INF specifico del dispositivo.
Tenere presente, tuttavia, che è necessario installare questo esempio specifico usando un file INF.
A tale scopo, includere il codice seguente nel file INF, qui denominato arbitrariamente Xuplgin.inf:
; 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$
Il file INF specifico del dispositivo corrisponde al dispositivo in base all'identificatore VID/PID. In questo caso, il file INF specifico del dispositivo ha la precedenza su 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
È necessario includere sezioni aggiuntive di Usbvideo.inf per la completezza.
[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
InF è necessaria anche una sezione CopyFiles per copiare il plug-in nella cartella di sistema.
[MyDevice.CopyList]
MyPlugin.ax
La prima parte della sezione INF AddReg seguente registra il plug-in. La parte restante di questa sezione mostra le voci del Registro di sistema per un plug-in dell'unità di estensione basata su nodo. Per esempi simili, vedere 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
Nella sezione INF seguente viene illustrato come popolare le voci del Registro di sistema specifiche dell'interfaccia.
[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
Per le fotocamere USB, se la posizione della chiave del Registro di sistema dell'interfaccia del dispositivo contiene una voce del Registro di sistema DWORD EnableDependentStillPinCapture con un valore diverso da zero, il pin dipendente su tali fotocamere verrà usato per l'acquisizione di foto. Se la voce del Registro di sistema non è presente o impostata su zero, il pin dipendente non verrà usato. Invece, l'acquisizione di foto verrà eseguita usando una cornice presa dal pin di anteprima. Di seguito è possibile abilitare l'acquisizione del pin dipendente:
HKR,,EnableDependentStillPinCapture,0x00010001,1
È anche possibile definire un valore facoltativo del Registro di sistema denominato UvcFlags. UvcFlags deve essere un valore DWORD. Quando il dispositivo è collegato, il driver UVC riceve una richiesta di avvio Plug and Play (PnP). Il driver cerca quindi UvcFlags nella chiave del Registro di sistema del dispositivo. Il valore DWORD è una maschera di bit e può contenere i valori nella tabella seguente.
Nome maschera bit | Valore | Descrizione |
---|---|---|
WORKAROUNDS_DV_INTERLEAVED_DEFAULT_MASK | 0x00000001 | UVC supporta intervalli di dati solo video e intervalli di dati DV interleaved. Impostare questa maschera di bit per il DV interleaved. |
WORKAROUNDS_SUPPRESS_CLOCK_MASK | 0x00000002 | Attualmente non usato. |
WORKAROUNDS_MPEG2TS_SUPPORT_FID | 0x00000004 | La maschera FID indica che l'intestazione di flusso contiene un bit FID. |
WORKAROUNDS_MPEG2TS_SUPPORT_EOF | 0x00000008 | La maschera EOF indica che le intestazioni del payload contengono un bit end-of-frame. |
WORKAROUNDS_VARIABLE_FRAME_RATE_MASK | 0x00000010 | Impostare questa maschera se il dispositivo potrebbe variare la frequenza dei fotogrammi. I dispositivi DV a frequenza fissa non devono impostare questa maschera. |
Includere una riga simile all'esempio seguente per specificare la maschera di bit da applicare:
HKR,,UvcFlags,0x00010001,0x00000010
Se si usa il driver UVC in Windows Server 2003 e Windows Vista o versioni successive del sistema operativo, le maschere FID e EOF possono essere usate con formati basati su flusso, ad esempio MPEG-2 TS.
In condizioni di frequenza dei fotogrammi bassa, il bit EOF potrebbe segnalare il completamento più veloce del bit FID del frame seguente. Il bit EOF può essere usato per ridurre la latenza nel recapito di fotogrammi MPEG-2.
Per altre informazioni sulla sintassi posizionale delle direttive AddReg, vedere Direttiva INF AddReg.
Questa sezione finale fornisce definizioni mancanti per 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"