INF AddInterface-instructie

Een of meer AddInterface-instructies kunnen worden opgegeven in een sectie INF DDInstall.Interfaces. Met deze richtlijn wordt apparaatspecifieke ondersteuning geïnstalleerd voor apparaatinterfaceklassen die worden geëxporteerd naar onderdelen op een hoger niveau, zoals andere stuurprogramma's of toepassingen. De instructie verwijst doorgaans naar een sectie add-interface, waarmee registergegevens worden ingesteld voor het apparaatspecifieke exemplaar van de apparaatinterfaceklasse.

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

Een geëxporteerde apparaatinterfaceklasse kan een van de door het systeem gedefinieerde apparaatinterfaceklassen zijn, zoals de klassen die zijn gedefinieerd door kernelstreaming of een nieuwe apparaatinterfaceklasse die is opgegeven door een INF InterfaceInstall32-sectie.

Invoer

InterfaceClassGUID
Hiermee geeft u de GUID-waarde die de apparaatinterfaceklasse identificeert. Dit kan worden uitgedrukt als een expliciete GUID-waarde van het formulier {nnnnn-- nnnnnnn-- nnn} of alseen %strkey% token gedefinieerd als {nnn-- nnnn -- nnn nnn}" in een sectie Tekenreeksen van het INF-bestand.

Zie GuiD's gebruiken in stuurprogramma's voor meer informatie over het maken van een GUID. Zie de juiste header voor de door het systeem gedefinieerde interface-GUIDS, zoals Ks.h voor de GUID's van de kernelstreaming-interface.

verwijzingsreeks
Deze optionele waarde, gekoppeld aan het apparaatspecifieke exemplaar van de opgegeven interfaceklasse, kan worden uitgedrukt als een 'tekenreeks tussen aanhalingstekens' of als een %strkey% token dat is gedefinieerd in een SECTIE INF-tekenreeksen.

PnP-functie en filterstuurprogramma's laten deze waarde meestal weg uit de AddInterface= vermeldingen in hun INF-bestanden. Een verwijzingsreeks wordt door het swenum-stuurprogramma gebruikt als tijdelijke aanduiding voor softwareapparaten die op aanvraag worden gemaakt met behulp van meerdere exemplaren van één interfaceklasse. Dezelfde InterfaceClassGUID-waarde kan worden opgegeven in INF-vermeldingen met twee of meer unieke referentietekenreeksen. Omdat de I/ O-beheer de waarde van de referentietekenreeks doorgeeft als padonderdeel van de naam van het interface-exemplaar wanneer het wordt geopend, kan het geïnstalleerde stuurprogramma onderscheid maken tussen interface-exemplaren van dezelfde klasse voor één apparaat.

add-interface-section
Verwijst naar de naam van een sectie elders in het INF-bestand. Dit bevat doorgaans een INF AddReg-instructie voor het instellen van de registervermeldingen die de ondersteuning van het stuurprogramma van deze apparaatinterfaceklasse exporteren. Zie de volgende sectie Opmerkingen voor meer informatie.

flags
Indien opgegeven, moet deze vermelding nul zijn.

Remarks

Als de apparaatinterfaceklasse die is geïdentificeerd door een opgegeven {InterfaceClassGUID} nog niet is geïnstalleerd, installeert de systeeminstallatiecode die klasse in het systeem. Elk INF-bestand dat een nieuwe klasse installeert, kan ook een SECTIE INF InterfaceInstall32 hebben. Deze sectie bevat de opgegeven {InterfaceClassGUID} en verwijst naar een interface-install-section waarmee interfacespecifieke installatiebewerkingen voor die klasse worden ingesteld.

Als u een exemplaar van een apparaatinterfaceklasse wilt inschakelen voor runtimegebruik door onderdelen op een hoger niveau, moet een apparaatstuurprogramma eerst IoRegisterDeviceInterface aanroepen om de symbolische koppelingsnaam van het exemplaar van de apparaatinterface op te halen om dit in te schakelen. Meestal maakt een PnP-functie of filterstuurprogramma deze aanroep vanuit de AddDevice-routine . Als u exemplaren van apparaatinterfaces wilt inschakelen die zijn ingericht in de INF, moet het apparaatstuurprogramma de {InterfaceClassGUID} en de verwijzingsreeks opgeven die is opgegeven in de INF wanneer ioRegisterDeviceInterface wordt aangeroepen. Het stuurprogramma roept vervolgens IoSetDeviceInterfaceState aan om de interface in te schakelen met behulp van de symbolische koppelingsnaam die wordt geretourneerd door IoRegisterDeviceInterface.

Elke AddInterface-instructie in een sectie INF DDInstall.Interfaces kan elders in het INF-bestand verwijzen naar een door INF gedefinieerde add-interface-section . Elke inF-schrijver gedefinieerde sectienaam moet uniek zijn binnen het INF-bestand en moet voldoen aan de algemene regels voor het definiëren van sectienamen. Zie Algemene syntaxisregels voor INF-bestanden voor meer informatie over deze regels.

Een add-interface-section waarnaar wordt verwezen door de AddInterface-instructie heeft de volgende vorm:

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

Vanaf Windows Vista kunt u eigenschappen van de apparaatinterface instellen door INF AddProperty-instructies op te nemen in een sectie van de invoegtoepassing. U kunt apparaatinterface-eigenschappen ook verwijderen door INF DelProperty-instructies op te geven in een sectie met een invoegtoepassing. U moet echter alleen AddProperty- of DelProperty-instructies gebruiken om eigenschappen van de apparaatinterface te wijzigen die nieuw zijn voor Windows Vista of een latere versie van Windows besturingssystemen. Voor eigenschappen van de apparaatinterface die zijn geïntroduceerd op Windows Server 2003, Windows XP of Windows 2000 en die overeenkomende registerwaardevermeldingen hebben, moet u INF AddReg-instructies en INF DelReg-instructies blijven gebruiken om de eigenschappen van de apparaatinterface in te stellen en te verwijderen. Deze richtlijnen zijn van toepassing op door het systeem gedefinieerde eigenschappen en aangepaste eigenschappen. Zie De INF AddProperty-richtlijn en de INF DelProperty-richtlijn gebruiken voor meer informatie over het gebruik van de Richtlijn AddProperty en de INF DelProperty-richtlijn.

Normaal gesproken bevat een add-interface-section alleen een INF AddReg-instructie die op zijn beurt verwijst naar één add-registry-section. De sectie register toevoegen wordt gebruikt om informatie op te slaan in het register over de interfaces die door het apparaatstuurprogramma worden ondersteund voor volgend gebruik door nog steeds stuurprogramma's en toepassingen op een hoger niveau.

Een sectie voor het toevoegen van register waarnaar wordt verwezen in een sectie met een add-interface is specifiek voor de exemplaren voor het apparaat, stuurprogramma en interface. Het kan een waardevermelding hebben die een beschrijvende naam definieert voor het geëxporteerde exemplaar van de apparaatinterface, zodat nog steeds onderdelen op een hoger niveau naar die interface kunnen verwijzen door de beschrijvende naam in de gebruikersinterface.

Een HKR die is opgegeven in een dergelijke sectie add-registry-section wijst de runtime toegankelijke statusregistersleutel voor een apparaatinterface aan. Het stuurprogramma heeft tijdens runtime toegang tot de status die is opgeslagen in deze registersleutel door IoOpenDeviceInterfaceRegistryKey aan te roepen om een HANDLE op te halen naar de registersleutel van de status. Onderdelen van de gebruikersmodus kunnen de status opvragen door CM_Open_Device_Interface_Key aan te roepen.

Examples

In dit voorbeeld ziet u een aantal uitbreidingen van de DDInstall. Sectie Interfaces voor een bepaald audioapparaat dat door het systeem gedefinieerde kernelstreaminginterfaces ondersteunt.

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

Zie ook

AddProperty

AddReg

BitReg

CopyFiles

DDInstall. Interfaces

DelFiles

DelProperty

DelReg

Ini2Reg

InterfaceInstall32

IoRegisterDeviceInterface

IoSetDeviceInterfaceState

RenFiles

UpdateIniFields

UpdateInis