INF-AddInterface-Direktive

Eine oder mehrere AddInterface-Direktiven können in einem INF DDInstall.Interfaces-Abschnitt angegeben werden. Diese Direktive installiert gerätespezifische Unterstützung für Geräteschnittstellenklassen , die in Komponenten höherer Ebene exportiert werden, z. B. andere Treiber oder Anwendungen. Die Direktive verweist in der Regel auf einen Add-Interface-Abschnitt , der Registrierungsinformationen für die gerätespezifische Instanz der Geräteschnittstellenklasse einrichte.

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

Eine exportierte Geräteschnittstellenklasse kann eine der systemdefinierten Geräteschnittstellenklassen sein, z. B. von Kernelstreaming definierte Klassen oder eine neue Geräteschnittstellenklasse, die durch einen INF InterfaceInstall32-Abschnitt angegeben wird.

Einträge

InterfaceClassGUID
Gibt den GUID-Wert an, der die Geräteschnittstellenklasse identifiziert. Dies kann als expliziter GUID-Wert des Formulars {nn-n-n--} oder als %strkey ausgedrückt werden.% token definiert in "{nnnnn-nnnn-n-n- n}" in einem Zeichenfolgenabschnitt der INF-Datei.

Weitere Informationen zum Erstellen einer GUID finden Sie unter Verwenden von GUIDs in Treibern. Die guiDS der systemdefinierten Schnittstellenklasse finden Sie im entsprechenden Header, z. B. Ks.h für die GUIDs der Kernelstreaming-Schnittstelle.

Referenzzeichenfolge
Dieser optionale Wert, der der gerätespezifischen Instanz der angegebenen Schnittstellenklasse zugeordnet ist, kann entweder als "zitierte Zeichenfolge" oder als %strkey% Token ausgedrückt werden, das in einem INF-Zeichenfolgenabschnitt definiert ist.

PnP-Funktion und Filtertreiber lassen diesen Wert in der Regel aus den AddInterface= -Einträgen in ihren INF-Dateien aus. Eine Referenzzeichenfolge wird vom Swenum-Treiber als Platzhalter für Softwaregeräte verwendet, die bei Bedarf mithilfe mehrerer Instanzen einer einzelnen Schnittstellenklasse erstellt werden. Derselbe InterfaceClassGUID-Wert kann in INF-Einträgen mit zwei oder mehr eindeutigen Referenzzeichenfolgenangegeben werden. Da der E/ A-Manager den Verweiszeichenfolgenwert bei jedem Öffnen als Pfadkomponente des Namens der Schnittstelleninstanz übergibt, kann der installierte Treiber zwischen Schnittstelleninstanzen derselben Klasse für ein einzelnes Gerät diskriminieren.

Add-Interface-Abschnitt
Verweist auf den Namen eines Abschnitts an anderer Stelle in der INF-Datei. Dies enthält in der Regel eine INF-AddReg-Direktive , um die Registrierungseinträge einzurichten, die die Unterstützung dieser Geräteschnittstellenklasse exportieren. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise ".

flags
Wenn angegeben, muss dieser Eintrag null sein.

Bemerkungen

Wenn die durch eine angegebene {InterfaceClassGUID} identifizierte Geräteschnittstellenklasse noch nicht installiert ist, installiert der Systemeinrichtungscode diese Klasse im System. Jede INF-Datei, die eine neue Klasse installiert, kann auch über einen INF InterfaceInstall32-Abschnitt verfügen. Dieser Abschnitt enthält das angegebene {InterfaceClassGUID} -Element und verweist auf einen Schnittstelleninstallationsabschnitt , der schnittstellenspezifische Installationsvorgänge für diese Klasse einrichte.

Um eine Instanz einer Geräteschnittstellenklasse für die Laufzeitverwendung durch Komponenten höherer Ebene zu aktivieren, muss ein Gerätetreiber zuerst IoRegisterDeviceInterface aufrufen, um den symbolischen Verknüpfungsnamen der Geräteschnittstelleninstanz abzurufen, um dies zu aktivieren. In der Regel führt eine PnP-Funktion oder ein Filtertreiber diesen Aufruf aus der AddDevice-Routine aus. Um Instanzen von Geräteschnittstellen zu aktivieren, die in der INF bereitgestellt werden, muss der Gerätetreiber die {InterfaceClassGUID} und die in der INF angegebene Referenzzeichenfolge bereitstellen, wenn IoRegisterDeviceInterface aufgerufen wird. Der Treiber ruft dann IoSetDeviceInterfaceState auf, um die Schnittstelle mithilfe des symbolischen Verknüpfungsnamens zu aktivieren, der von IoRegisterDeviceInterface zurückgegeben wird.

Jede AddInterface-Direktive in einem INF DDInstall.Interfaces-Abschnitt kann auf einen INF-writer-defined Add-Interface-Abschnitt an anderer Stelle in der INF-Datei verweisen. Jeder INF-Writer-definierte Abschnittsname muss innerhalb der INF-Datei eindeutig sein und muss den allgemeinen Regeln zum Definieren von Abschnittsnamen entsprechen. Weitere Informationen zu diesen Regeln finden Sie unter Allgemeine Syntaxregeln für INF-Dateien.

Ein Add-Interface-Abschnitt , auf den die AddInterface-Direktive verweist, weist das folgende Formular auf:

[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] ...]

Ab Windows Vista können Sie Geräteschnittstelleneigenschaften festlegen, indem Sie INF-AddProperty-Direktiven in einen Add-Interface-Abschnitt einschließen. Sie können geräteschnittstelleneigenschaften auch löschen, indem Sie INF DelProperty-Direktiven in einen Add-Interface-Abschnitt einschließen. Sie sollten jedoch AddProperty- oder DelProperty-Direktiven nur verwenden, um Geräteschnittstelleneigenschaften zu ändern, die neu für Windows Vista oder eine höhere Version von Windows Betriebssystemen sind. Für Geräteschnittstelleneigenschaften, die auf Windows Server 2003, Windows XP oder Windows 2000 eingeführt wurden und über entsprechende Registrierungswerteinträge verfügen, sollten Sie weiterhin INF-AddReg-Direktiven und INF DelReg-Direktiven verwenden, um die Geräteschnittstelleneigenschaften festzulegen und zu löschen. Diese Richtlinien gelten für systemdefinierte Eigenschaften und benutzerdefinierte Eigenschaften. Weitere Informationen zur Verwendung der AddProperty-Direktive und der DelProperty-Direktive finden Sie unter Verwenden der INF-AddProperty-Direktive und der INF DelProperty-Direktive.

In der Regel enthält ein Add-Interface-Abschnitt nur eine INF-AddReg-Direktive , die wiederum auf einen einzelnen Add-Registry-Abschnitt verweist. Der Add-Registry-Abschnitt wird zum Speichern von Informationen in der Registrierung über die vom Gerätetreiber unterstützten Schnittstellen für die nachfolgende Verwendung durch noch treiber und Anwendungen auf höherer Ebene verwendet.

Ein add-registry-section referenced within an add-interface-section is specific to the instances for the device, driver, and interface. Möglicherweise verfügt er über einen Werteintrag, der einen Anzeigenamen für die exportierte Geräteschnittstelleninstanz definiert, sodass komponenten auf diese Schnittstelle durch ihren Anzeigenamen auf der Benutzeroberfläche verweisen können.

Ein in einem solchen Abschnitt "add-registry-section" angegebenes HKR bestimmt den Registrierungsschlüssel für den Laufzeitstatus für eine Geräteschnittstelle. Der Treiber kann zur Laufzeit auf den in diesem Registrierungsschlüssel gespeicherten Zustand zugreifen, indem Er IoOpenDeviceInterfaceRegistryKey aufruft , um ein HANDLE zum Statusregistrierungsschlüssel abzurufen. Benutzermoduskomponenten können den Zustand abfragen, indem sie CM_Open_Device_Interface_Key aufrufen.

Examples

Dieses Beispiel zeigt einige der Erweiterung des DDInstall. Schnittstellenabschnitt für ein bestimmtes Audiogerät, das systemdefinierte Kernelstreamingschnittstellen unterstützt.

; ...
[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" 
; ... 

Siehe auch

AddProperty

AddReg

BitReg

CopyFiles

DDInstall. Schnittstellen

DelFiles

DelProperty

DelReg

Ini2Reg

InterfaceInstall32

IoRegisterDeviceInterface

IoSetDeviceInterfaceState

RenFiles

UpdateIniFields

UpdateInis