Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Inzicht in het onderscheid tussen apparaatinstallatieklassen en apparaatinterfaceklassen is van cruciaal belang voor een succesvolle ontwikkeling van Windows-stuurprogramma's en apparaatbeheer. Hoewel deze klassen vergelijkbaar kunnen lijken, dienen ze fundamenteel verschillende doeleinden in het Windows-apparaatecosysteem. Installatieklassen bepalen hoe het besturingssysteem apparaten installeert en configureert. Interfaceklassen maken runtimecommunicatie en functionaliteit mogelijk tussen stuurprogramma's, toepassingen en apparaten. Als u dit onderscheid begrijpt, kunt u het juiste klassetype kiezen voor de installatie van apparaten, de juiste apparaatmeldingen implementeren en veelvoorkomende valkuilen voor ontwikkeling voorkomen.
Een apparaat behoort vaak tot een setupklasse en maakt tegelijkertijd verschillende apparaatinterfaces in verschillende interfaceklassen beschikbaar. Niettemin dienen de twee soorten klassen verschillende doeleinden en zijn ze niet uitwisselbaar.
Comparison
De volgende tabel bevat een overzicht van de belangrijkste verschillen en relaties tussen installatieklassen en interfaceklassen:
| Kenmerk | Instellingenklassen | Interfaceklassen |
|---|---|---|
| Primair doel | Apparaten groeperen met vergelijkbare installatie en configuratie | Groepering van apparaatinterfaces die vergelijkbare functionaliteit en communicatie bieden |
| Gebruik | Wordt gebruikt door Windows tijdens de installatie van het apparaat | Wordt gebruikt door stuurprogramma's en toepassingen voor apparaatinteractie |
| GUID-definities | Meestal gedefinieerd in Devguid.h | Gedefinieerd in apparaatspecifieke headerbestanden (bijvoorbeeld Ntddmou.h, Ntddpar.h) |
| Groeperingscriteria | Apparaten die op dezelfde manier zijn geïnstalleerd en geconfigureerd | Over het algemeen zijn apparaatinterfaces die een bepaald IO-contract implementeren |
| Melding | Niet gebruikt voor meldingen over het aansluiten of verwijderen van apparaten | Wordt gebruikt voor het registreren van aankomst- en verwijderingsmeldingen van de apparaatinterface |
| Examples | Sensoren, Firmware, Bluetooth | Audio Capture, Audio Render, Ambient Light Sensor |
| Relatie | Een apparaat behoort tot één installatieklasse | Een apparaat kan nul of meer apparaatinterfaces beschikbaar maken in verschillende interfaceklassen |
| Levensduur | Van belang tijdens het installatieproces | Relevant tijdens de werking van het apparaat |
Het is belangrijk om onderscheid te maken tussen de twee typen apparaatklassen: apparaatinterfaceklassen en apparaatinstallatieklassen. De twee kunnen gemakkelijk worden verward. In code in de gebruikersmodus gebruiken beide klassen dezelfde set apparaatinstallatiefuncties. Ze gebruiken ook dezelfde set gegevensstructuren (apparaatinformatiesets).
Dezelfde installatieklasse, verschillende interfaceklassen:
- Apparaten: Twee verschillende sensorapparaten
- Installatieklasse: Beide apparaten bevinden zich in de klasse Sensoren .
- Interfaceklassen: De ene sensor biedt een apparaatinterface voor de omgevingslichtsensor en de andere biedt een apparaatinterface voor de accelerometer.
Overweeg een USB-muisapparaat en een USB-toetsenbordapparaat. Beide gebruiken dezelfde interfaceklasse (Human Interface Device). Maar ze behoren tot verschillende installatieklassen, Muis en Toetsenbord, respectievelijk.
Dezelfde interfaceklasse, verschillende installatieklassen:
- Apparaten: een USB-muis en een USB-toetsenbord
- Interfaceklasse: beide apparaten maken gebruik van dezelfde interfaceklasse (Human Interface Device) om met het systeem te communiceren.
- Installatieklassen: het muisapparaat hoort bij de installatieklasse Mouse, terwijl het toetsenbordapparaat deel uitmaakt van de installatieklasse Keyboard.
Klassen voor apparaatinstallatie
Apparaatinstallatieklassen zijn vooraf gedefinieerde categorieën die uitsluitend worden gebruikt voor de installatie en configuratie van apparaten in Windows. Ze helpen het besturingssysteem te begrijpen hoe het apparaat tijdens het installatieproces moet worden beheerd. Installatieklassen bieden een mechanisme voor het groeperen van apparaten die op dezelfde manier zijn geïnstalleerd en geconfigureerd. Zie Door het systeem gedefinieerde apparaatinstallatieklassen die beschikbaar zijn voor leveranciers voor meer informatie over installatieklassen.
Windows-apparaatinstallatieklassen worden gedefinieerd in het systeembestand Devguid.h. Dit bestand definieert een reeks GUID's voor installatieklassen. De apparaatinstallatieklassen die in Devguid.h worden weergegeven, mogen echter niet worden verward met apparaatinterfaceklassen . Het bestand Devguid.h bevat alleen GUID's voor installatieklassen.
Apparaatinterfaceklassen
Apparaatinterfaceklassen bieden een mechanisme voor het groeperen van apparaatinterfaces op basis van gedeelde kenmerken of functionaliteit. Stuurprogramma's en gebruikerstoepassingen kunnen zich registreren voor meldingen over apparaatinterfaces in een bepaalde interfaceklasse. Dit betekent dat ze een melding ontvangen wanneer een apparaatinterface die deel uitmaakt van die klasse is ingeschakeld (wordt aangesloten) of is uitgeschakeld (wordt losgekoppeld). Ze hoeven geen afzonderlijke apparaten bij te houden. Apparaatinterfaceklassen groeperen apparaatinterfaces die door apparaten beschikbaar worden gesteld. U registreert zich voor meldingen van toevoeging en verwijdering van apparaatinterfaces.
Definities van interfaceklassen worden niet opgegeven in één bestand. Een apparaatinterfaceklasse wordt altijd gedefinieerd in een headerbestand dat uitsluitend bestemd is voor een bepaalde klasse apparaten. Ntddmou.h bevat bijvoorbeeld de definitie van GUID_DEVINTERFACE_MOUSE, de GUID die de klasse van de muisinterface vertegenwoordigt. Ntddpar.h definieert de GUID van de interfaceklasse voor parallelle apparaten. Ntddpcm.h definieert de standaardinterfaceklasse-GUID voor PCMCIA-apparaten. Ntddstor.h definieert de GUID van de interfaceklasse voor opslagapparaten.
Als u zich wilt registreren voor apparaatinterfacemeldingen, gebruikt u de GUID's in de headerbestanden die specifiek zijn voor de apparaatinterfaceklasse. Met deze GUID's kunt u een melding ontvangen wanneer een exemplaar van de apparaatinterface beschikbaar komt. Als een stuurprogramma zich registreert voor meldingen met behulp van een GUID van de installatieklasse in plaats van een GUID van de interfaceklasse, wordt deze niet op de hoogte gesteld wanneer een interface beschikbaar komt.
Wanneer u een nieuwe interfaceklasse definieert, gebruikt u niet één GUID om zowel een installatieklasse als een interfaceklasse te identificeren.