Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Il contenuto e il codice di esempio in questo argomento sono obsoleti e attualmente non supportati. Potrebbe non funzionare con l'attuale toolchain di sviluppo dei driver.
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 del 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, 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 viene confrontato con il 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
Per completezza, è necessario includere sezioni aggiuntive di Usbvideo.inf .
[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
Il file INF richiede 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. Nella parte restante di questa sezione sono mostrate le voci di registro per un plug-in di un'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 il percorso 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 da 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. Al contrario, l'acquisizione di foto verrà eseguita usando un fotogramma tratto dal pin di anteprima. Di seguito è possibile abilitare la cattura di pin statici dipendenti:
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 di 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 in uso. |
WORKAROUNDS_MPEG2TS_SUPPORT_FID | 0x00000004 | La maschera FID indica che l'intestazione del flusso contiene un bit FID. |
WORKAROUNDS_MPEG2TS_SUPPORT_EOF | 0x00000008 | La maschera EOF indica che le intestazioni del payload contengono un bit di fine del 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 come MPEG-2 TS.
In condizioni a bassa frequenza dei fotogrammi, il bit EOF potrebbe segnalare il completamento più veloce rispetto al 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"