Proporcionar un archivo INF de UVC
Importante
El contenido y el código de ejemplo de este tema están obsoletos y actualmente no se admiten. Es posible que no funcione con la cadena de herramientas de desarrollo de controladores actual.
En esta sección se muestran varias partes de un archivo INF específico del dispositivo.
Un archivo INF como este podría usarse para proporcionar un nombre específico del dispositivo o para registrar el complemento de unidad de extensión.
En general, los proveedores que suministran un paquete de instalación pueden registrar el archivo DLL del complemento mediante el paquete de instalación, en cuyo caso el proveedor no proporciona un archivo INF. Para la firma de controladores, puede ser más fácil proporcionar un paquete de instalación en lugar de un archivo INF específico del dispositivo.
Sin embargo, tenga en cuenta que debe instalar este ejemplo específico mediante un archivo INF.
Para ello, incluya el código siguiente en el archivo INF, aquí denominado 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$
El archivo INF específico del dispositivo coincide con el dispositivo en función del identificador VID/PID. En este caso, el archivo INF específico del dispositivo tiene prioridad sobre 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
Es necesario incluir secciones adicionales de Usbvideo.inf para su integridad.
[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 también necesita una sección CopyFiles para copiar el complemento en la carpeta del sistema.
[MyDevice.CopyList]
MyPlugin.ax
La primera parte de la siguiente sección AddReg de INF registra el complemento. En el resto de esta sección se muestran las entradas del Registro para un complemento de unidad de extensión basado en nodos. Consulte Usbvideo.inf para obtener ejemplos similares.
[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
En la sección INF siguiente se muestra cómo rellenar las entradas del Registro específicas de la interfaz.
[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
En el caso de las cámaras USB, si la ubicación de la clave del Registro de la interfaz del dispositivo contiene una entrada del Registro DWORD EnableDependentStillPinCapture con un valor distinto de cero, se usará el pin dependiente de dichas cámaras para la captura de fotos. Si la entrada del Registro no está presente o se establece en cero, no se usará el pin dependiente. En su lugar, la captura de fotos se realizará mediante un marco tomado del pin de vista previa. A continuación se habilita la captura de patillas dependientes:
HKR,,EnableDependentStillPinCapture,0x00010001,1
También puede definir un valor de registro opcional denominado UvcFlags. UvcFlags debe ser un valor DWORD. Cuando el dispositivo está conectado, el controlador UVC recibe una solicitud de inicio de Plug and Play (PnP). A continuación, el controlador busca UvcFlags en la clave del Registro del dispositivo. El valor DWORD es una máscara de bits y puede contener los valores de la tabla siguiente.
Nombre de máscara de bits | Value | Descripción |
---|---|---|
WORKAROUNDS_DV_INTERLEAVED_DEFAULT_MASK | 0x00000001 | UVC admite intervalos de datos de solo vídeo e intervalos de datos DV intercalados. Establezca esta máscara de bits para DV intercalado. |
WORKAROUNDS_SUPPRESS_CLOCK_MASK | 0x00000002 | No se usa actualmente. |
WORKAROUNDS_MPEG2TS_SUPPORT_FID | 0x00000004 | La máscara FID indica que el encabezado de secuencia contiene un bit FID. |
WORKAROUNDS_MPEG2TS_SUPPORT_EOF | 0x00000008 | La máscara EOF indica que los encabezados de carga contienen un bit de fin de fotograma. |
WORKAROUNDS_VARIABLE_FRAME_RATE_MASK | 0x00000010 | Establezca esta máscara si el dispositivo puede variar la velocidad de fotogramas. Los dispositivos DV de velocidad fija no deben establecer esta máscara. |
Incluya una línea similar al ejemplo siguiente para especificar la máscara de bits que se va a aplicar:
HKR,,UvcFlags,0x00010001,0x00000010
Si usa el controlador UVC en Windows Server 2003 y Windows Vista o versiones posteriores del sistema operativo, las máscaras FID y EOF se pueden usar con formatos basados en secuencias como MPEG-2 TS.
En condiciones de velocidad de fotogramas bajas, el bit EOF podría notificar la finalización más rápido que el bit FID del siguiente fotograma. El bit EOF se puede usar para reducir la latencia en la entrega de fotogramas MPEG-2.
Para obtener más información sobre la sintaxis posicional de las directivas AddReg, vea Inf AddReg Directive.
En esta sección final se suministran definiciones que faltan para 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"