Fourniture d’un fichier INF UVC
Important
Le contenu et l’exemple de code de cette rubrique sont obsolètes et actuellement non pris en charge. Il peut ne pas fonctionner avec la chaîne d’outils de développement de pilote actuelle.
Cette section illustre différentes parties d’un fichier INF spécifique à l’appareil.
Un fichier INF comme celui-ci peut être utilisé pour fournir un nom spécifique à l’appareil ou pour inscrire le plug-in d’unité d’extension.
En général, les fournisseurs qui fournissent un package d’installation peuvent inscrire la DLL de plug-in à l’aide du package d’installation, auquel cas le fournisseur ne fournit pas de fichier INF. Pour la signature de pilote, il peut être plus facile de fournir un package d’installation au lieu d’un fichier INF spécifique au périphérique.
N’oubliez pas, toutefois, que vous devez installer cet exemple spécifique à l’aide d’un fichier INF.
Pour ce faire, incluez le code suivant dans le fichier INF, nommé ici arbitrairement 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$
Le fichier INF spécifique à l’appareil est mis en correspondance avec l’appareil en fonction de l’identificateur VID/PID. Dans ce cas, le fichier INF spécifique à l’appareil est prioritaire sur 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
Des sections supplémentaires d’Usbvideo.inf doivent être incluses pour être complètes.
[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
L’inf a également besoin d’une section CopyFiles pour copier le plug-in dans le dossier système.
[MyDevice.CopyList]
MyPlugin.ax
La première partie de la section INF AddReg suivante inscrit le plug-in. Le reste de cette section présente les entrées de Registre pour un plug-in d’unité d’extension basé sur un nœud. Reportez-vous à Usbvideo.inf pour obtenir des exemples similaires.
[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
La section INF suivante montre comment remplir des entrées de Registre spécifiques à l’interface.
[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
Pour les appareils photo USB, si l’emplacement de la clé de registre de l’interface d’appareil contient une entrée de Registre DWORD EnableDependentStillPinCapture avec une valeur différente de zéro, l’épingle dépendante de ces appareils photo est utilisée pour la capture de photos. Si l’entrée de Registre n’est pas présente ou définie sur zéro, la broche dépendante n’est pas utilisée. Au lieu de cela, la capture de photo est effectuée à l’aide d’un cadre pris à partir de l’épingle d’aperçu. Les éléments suivants activent la capture de broches fixes dépendantes :
HKR,,EnableDependentStillPinCapture,0x00010001,1
Vous pouvez également définir une valeur de Registre facultative appelée UvcFlags. UvcFlags doit être une valeur DWORD. Lorsque l’appareil est branché, le pilote UVC reçoit une demande de démarrage Plug-and-Play (PnP). Le pilote recherche ensuite UvcFlags dans la clé de Registre de l’appareil. La valeur DWORD est un masque de bits et peut contenir les valeurs du tableau suivant.
Nom du masque de bits | Valeur | Description |
---|---|---|
WORKAROUNDS_DV_INTERLEAVED_DEFAULT_MASK | 0x00000001 | UVC prend en charge les plages de données vidéo uniquement et les plages de données DV entrelacées. Définissez ce masque de bits pour DV entrelacée. |
WORKAROUNDS_SUPPRESS_CLOCK_MASK | 0x00000002 | Pas utilisé pour l’instant. |
WORKAROUNDS_MPEG2TS_SUPPORT_FID | 0x00000004 | Le masque FID indique que l’en-tête de flux contient un bit FID. |
WORKAROUNDS_MPEG2TS_SUPPORT_EOF | 0x00000008 | Le masque EOF indique que les en-têtes de charge utile contiennent un bit de fin d’image. |
WORKAROUNDS_VARIABLE_FRAME_RATE_MASK | 0x00000010 | Définissez ce masque si votre appareil peut varier la fréquence d’images. Les appareils DV à débit fixe ne doivent pas définir ce masque. |
Incluez une ligne similaire à l’exemple suivant pour spécifier le masque de bits à appliquer :
HKR,,UvcFlags,0x00010001,0x00000010
Si vous utilisez le pilote UVC sur Windows Server 2003 et Windows Vista ou des versions ultérieures du système d’exploitation, les masques FID et EOF peuvent être utilisés avec des formats basés sur des flux tels que MPEG-2 TS.
Dans des conditions de fréquence d’images faible, le bit EOF peut signaler l’achèvement plus rapidement que le bit FID de la trame suivante. Le bit EOF peut être utilisé pour réduire la latence dans la remise des images MPEG-2.
Pour plus d’informations sur la syntaxe positionnelle des directives AddReg, consultez Inf AddReg Directive.
Cette dernière section fournit des définitions manquantes pour l’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"