Inf AddInterface, directive

Une ou plusieurs directives AddInterface peuvent être spécifiées dans une section INF DDInstall.Interfaces. Cette directive installe la prise en charge spécifique de l’appareil pour les classes d’interface d’appareil exportées vers des composants de niveau supérieur, tels que d’autres pilotes ou applications. La directive fait généralement référence à une section add-interface-section , qui configure les informations de Registre pour l’instance spécifique à l’appareil de la classe d’interface d’appareil.

[DDInstall.Interfaces]
  
AddInterface={InterfaceClassGUID} [,[reference-string] [,[add-interface-section][,flags]]] 

Une classe d’interface d’appareil exportée peut être l’une des classes d’interface d’appareil définies par le système, telles que celles définies par la diffusion en continu du noyau ou une nouvelle classe d’interface d’appareil spécifiée par une section INF InterfaceInstall32.

Entrées

InterfaceClassGUID
Spécifie la valeur GUID qui identifie la classe d’interface d’appareil. Cela peut être exprimé sous la forme d’une valeur GUID explicite de la forme {nnnnnnnn-nnnn-nnnn-nnnn-} ou sous la forme d’un jeton %strkey% défini sur « {nnnn-nnnn-nnnn nnnnnnnnnn--}» dans une section Chaînes du fichier INF.

Pour plus d’informations sur la création d’un GUID, consultez Utilisation des GUID dans les pilotes. Pour les GUID de la classe d’interface définie par le système, consultez l’en-tête approprié, tel que Ks.h pour les GUID de l’interface de streaming du noyau.

reference-string
Cette valeur facultative, associée à l’instance spécifique de l’appareil de la classe d’interface spécifiée, peut être exprimée sous la forme d’une «chaîne entre guillemets» ou sous la forme d’un jeton %strkey% défini dans une section Chaînes INF.

La fonction PnP et les pilotes de filtre omettent généralement cette valeur des entrées AddInterface= dans leurs fichiers INF. Une chaîne de référence est utilisée par le pilote swenum comme espace réservé pour les périphériques logiciels créés à la demande à l’aide de plusieurs instances d’une classe d’interface unique. La même valeur InterfaceClassGUID peut être spécifiée dans les entrées INF avec deux ou plusieurs chaînes de référenceuniques. Étant donné que le gestionnaire d’E/S transmet la valeur de chaîne de référence en tant que composant de chemin d’accès du nom de l’instance d’interface chaque fois qu’il est ouvert, le pilote installé peut distinguer les instances d’interface de la même classe pour un seul appareil.

add-interface-section
Fait référence au nom d’une section ailleurs dans le fichier INF. Il contient généralement une directive AddReg INF pour configurer les entrées de Registre qui exportent la prise en charge du pilote de cette classe d’interface d’appareil. Pour plus d’informations, consultez la section Remarques suivante.

flags
Si elle est spécifiée, cette entrée doit être égale à zéro.

Remarks

Si la classe d’interface d’appareil identifiée par un {InterfaceClassGUID} spécifié n’est pas déjà installée, le code de configuration du système installe cette classe dans le système. Tout fichier INF qui installe une nouvelle classe peut également avoir une section INF InterfaceInstall32. Cette section contient le {InterfaceClassGUID} spécifié et fait référence à une section d’installation d’interface qui configure les opérations d’installation spécifiques à l’interface pour cette classe.

Pour activer une instance d’une classe d’interface d’appareil pour une utilisation au moment de l’exécution par des composants de niveau supérieur, un pilote de périphérique doit d’abord appeler IoRegisterDeviceInterface pour récupérer le nom de lien symbolique de l’instance d’interface d’appareil à activer. En règle générale, une fonction PnP ou un pilote de filtre effectue cet appel à partir de sa routine AddDevice . Pour activer les instances d’interfaces d’appareil configurées dans l’inf, le pilote de périphérique doit fournir le {InterfaceClassGUID} et la chaîne de référence spécifiée dans l’INF lorsqu’il appelle IoRegisterDeviceInterface. Le pilote appelle ensuite IoSetDeviceInterfaceState pour activer l’interface à l’aide du nom de lien symbolique retourné par IoRegisterDeviceInterface.

Chaque directive AddInterface dans une section INF DDInstall.Interfaces peut faire référence à une section add-interface-interface définie par l’enregistreur INF ailleurs dans le fichier INF. Chaque nom de section défini par l’enregistreur INF doit être unique dans le fichier INF et doit suivre les règles générales de définition des noms de section. Pour plus d’informations sur ces règles, consultez Règles de syntaxe générales pour les fichiers INF.

Une section add-interface référencée par la directive AddInterface a la forme suivante :

[add-interface-section]
 
AddReg=add-registry-section[, add-registry-section]...
[AddProperty=add-property-section[, add-property-section] ...]  (Windows Vista and later versions of Windows)
[DelReg=del-registry-section[, del-registry-section] ...]
[DelProperty=del-property-section[, del-property-section] ...]  (Windows Vista and later versions of Windows)
[BitReg=bit-registry-section[,bit-registry-section] ...]
[CopyFiles=@filename | file-list-section[,file-list-section]...]
[DelFiles=file-list-section[,file-list-section]...]
[RenFiles=file-list-section[,file-list-section]...]
[UpdateInis=update-ini-section[, update-ini-section] ...]
[UpdateIniFields=update-inifields-section[, update-inifields-section] ...]
[Ini2Reg=ini-to-registry-section[, ini-to-registry-section] ...]

À partir de Windows Vista, vous pouvez définir les propriétés de l’interface d’appareil en incluant des directives INF AddProperty dans une section d’interface de complément. Vous pouvez également supprimer des propriétés d’interface d’appareil en incluant des directives INF DelProperty dans une section d’interface de complément. Toutefois, vous devez utiliser des directives AddProperty ou DelProperty uniquement pour modifier les propriétés d’interface d’appareil qui ne sont pas Windows Vista ou une version ultérieure des systèmes d’exploitation Windows. Pour les propriétés d’interface d’appareil introduites sur Windows Server 2003, Windows XP ou Windows 2000 et qui ont des entrées de valeur de Registre correspondantes, vous devez continuer à utiliser les directives INF AddReg et INF DelReg pour définir et supprimer les propriétés de l’interface de l’appareil. Ces instructions s’appliquent aux propriétés définies par le système et aux propriétés personnalisées. Pour plus d’informations sur l’utilisation de la directive AddProperty et de la directive DelProperty , consultez Utilisation de la directive AddProperty INF et de la directive INF DelProperty.

En règle générale, une section add-interface contient uniquement une directive AddReg INF qui, à son tour, fait référence à une seule section add-registry-section. La section add-registry est utilisée pour stocker des informations dans le Registre sur les interfaces prises en charge par le pilote de périphérique pour une utilisation ultérieure par des pilotes et applications de niveau supérieur.

Une section add-registry référencée dans une section add-interface est spécifique aux instances de l’appareil, du pilote et de l’interface. Il peut avoir une entrée de valeur définissant un nom convivial pour l’instance d’interface d’appareil exportée afin que les composants de niveau supérieur puissent faire référence à cette interface par son nom convivial dans l’interface utilisateur.

Un HKR spécifié dans une telle section de section add-registry désigne la clé de Registre d’état accessible au moment de l’exécution pour une interface d’appareil. Le pilote peut accéder à l’état stocké dans cette clé de Registre au moment de l’exécution en appelant IoOpenDeviceInterfaceRegistryKey pour récupérer un HANDLE à la clé de Registre d’état. Les composants en mode utilisateur peuvent interroger l’état en appelant CM_Open_Device_Interface_Key.

Examples

Cet exemple montre une partie de l’expansion de DDInstall. Section Interfaces pour un périphérique audio particulier qui prend en charge les interfaces de diffusion en continu de noyau définies par le système.

; ...
[ESS6881.Device.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave%,ESSAud.Interface.Wave
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_Wave%,ESSAud.Interface.Wave
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_Wave%,ESSAud.Interface.Wave
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_UART%,WDM.Interface.UART
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_UART%,WDM.Interface.UART
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_UART%,WDM.Interface.UART

[ESSAud.Interface.Wave]
AddReg=ESSAud.Interface.Wave.AddReg

[ESSAud.Interface.Wave.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%ESSAud.Wave.szPname%
; ... 
[WDM.Interface.UART]
AddReg=WDM.Interface.UART.AddReg

[WDM.Interface.UART.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%WDM.UART.szPname%
; ...
[Strings]
KSCATEGORY_AUDIO="{6994ad04-93ef-11d0-a3cc-00a0c9223196}"
KSCATEGORY_RENDER="{65e8773e-8f56-11d0-a3b9-00a0c9223196}"
KSCATEGORY_CAPTURE="{65e8773d-8f56-11d0-a3b9-00a0c9223196}"
; ...
KSNAME_WAVE="Wave"
KSNAME_UART="UART"
; ...
Proxy.CLSID="{17cca71b-ecd7-11d0-b908-00a0c9223196}"
; ... 
ESSAud.Wave.szPname="ESS AudioDrive" 
; ... 

Voir aussi

AddProperty

AddReg

BitReg

CopyFiles

DDInstall. Interfaces

DelFiles

DelProperty

DelReg

Ini2Reg

InterfaceInstall32

IoRegisterDeviceInterface

IoSetDeviceInterfaceState

RenFiles

UpdateIniFields

UpdateInis