Beállítási osztályok és interfészosztályok összehasonlítása

Az eszközbeállítási osztályok és az eszközillesztő-osztályok közötti különbségtétel megértése elengedhetetlen a Windows-illesztőprogramok sikeres fejlesztéséhez és az eszközkezeléshez. Bár ezek az osztályok hasonlónak tűnhetnek, alapvetően különböző célokat szolgálnak a Windows-eszköz ökoszisztémájában. A beállítási osztályok szabályozzák, hogy az operációs rendszer hogyan telepíti és konfigurálja az eszközöket. A felületosztályok lehetővé teszik a futtatókörnyezetek közötti kommunikációt és funkciókat az illesztőprogramok, alkalmazások és eszközök között. Ennek a különbségnek a megértése segít kiválasztani a megfelelő osztálytípust az eszköztelepítéshez, implementálni a megfelelő eszközértesítéseket, és elkerülni a gyakori fejlesztési buktatókat.

Az eszközök gyakran egy beállítási osztályhoz tartoznak, és egyszerre több eszközillesztőt is elérhetővé tesz különböző interfészosztályokban. Ennek ellenére a két osztálytípus különböző célokat szolgál, és nem felcserélhető.

Az eszköz, a beállítási osztály és a különböző interfészosztályok közötti kapcsolatot bemutató ábra.

Comparison

Az alábbi táblázat a beállítási osztályok és a felületosztályok közötti főbb különbségeket és kapcsolatokat foglalja össze:

Jellemző Osztályok beállítása Interfészosztályok
Elsődleges cél Hasonló telepítésű és konfigurációjú eszközök csoportosítása Hasonló funkciókat és kommunikációt biztosító eszközillesztők csoportosítása
Használat A Windows az eszköz telepítésekor használja Illesztőprogramok és alkalmazások használják az eszközök közötti interakcióhoz
GUID-definíciók Általában a Devguid.h-ban definiálva Eszközspecifikus fejlécfájlokban definiálva (például Ntddmou.h, Ntddpar.h)
Csoportosítási feltételek Hasonlóan telepített és konfigurált eszközök Általában egy adott I/O-szerződést megvalósító eszközillesztők
Értesítés Nem használható az eszköz érkezési vagy eltávolítási értesítéseihez Az eszköz felületének érkezési és eltávolítási értesítéseinek regisztrálásához használatos
Examples Érzékelők, belső vezérlőprogram, Bluetooth Hangrögzítés, hangleképeztetés, környezeti fényérzékelő
Kapcsolat Az eszköz egy beállítási osztályhoz tartozik Az eszközök nulla vagy több eszközillesztőt tehetnek elérhetővé különböző interfészosztályokban
Élettartam A telepítési folyamat során releváns Az eszköz működése során releváns

Fontos különbséget tenni az eszközosztályok két típusa között: az eszköz interfészosztályai és az eszközbeállítási osztályok. A kettő könnyen összekeverhető. A felhasználói módú kódban mindkét osztály ugyanazt az eszköztelepítési függvénykészletet használja. Ugyanezeket az adatstruktúrákat (eszközinformációs csoportokat) is használják.

Ugyanaz a beállítási osztály, különböző interfészosztályok:

  • Eszközök: Két különböző érzékelőeszköz
  • Beállítási osztály: Mindkét eszköz az Érzékelők osztályban található.
  • Interfészosztályok: Az egyik érzékelő egy környezeti fényérzékelő eszköz interfészét teszi elérhetővé, a másik pedig gyorsulásmérő eszköz interfészt tesz elérhetővé.

Fontolja meg az USB-egéreszközt és az USB-billentyűzetet. Mindkettő ugyanazt a felületosztályt (emberi interfészeszközt) használja. Ezek azonban különböző beállítási osztályokhoz tartoznak, az egérhez és a billentyűzethez.

Ugyanaz a felületosztály, különböző beállítási osztályok:

  • Eszközök: USB-egér és USB-billentyűzet
  • Interfészosztály: Mindkét eszköz ugyanazt az interfészosztályt (emberi interfészeszközt) használja a rendszerrel való kommunikációhoz.
  • Beállítási osztályok: Az egéreszköz az Egér beállítási osztályához tartozik, míg a billentyűzeteszköz a Billentyűzet beállítási osztályhoz tartozik.

Eszközbeállítási osztályok

Az eszközbeállítási osztályok előre definiált kategóriák, amelyeket kizárólag az eszközök windowsos telepítéséhez és konfigurálásához használnak. Segítenek az operációs rendszernek megérteni, hogyan kezelheti az eszközt a telepítési folyamat során. A beállítási osztályok az azonos módon telepített és konfigurált eszközök csoportosítására szolgálnak. A beállítási osztályokról további információt a szállítók számára elérhető, rendszer által definiált eszközbeállítási osztályokban talál.

A Windows-eszközök beállítási osztályai a Devguid.h rendszerfájlban vannak definiálva. Ez a fájl a beállítási osztályokhoz tartozó GRAFIKUS GUID-k sorozatát határozza meg. A Devguid.h-ban képviselt eszközbeállítási osztályokat azonban nem szabad összekeverni az eszköz interfészosztályaival . A Devguid.h fájl csak a beállítási osztályokhoz tartozó GRAFIKUS GUID-ket tartalmaz.

Eszközillesztő-osztályok

Az eszközfelület-osztályok lehetővé teszik az eszközillesztők csoportosítását a megosztott jellemzők vagy funkciók szerint. Az illesztőprogramok és a felhasználói alkalmazások regisztrálhatnak egy adott felületosztály eszközillesztőiről szóló értesítésekre. Ez azt jelenti, hogy értesítést kapnak, ha az adott osztályhoz tartozó eszközfelület engedélyezve van (megérkezik), vagy le van tiltva (eltávolítva). Nem kell nyomon követniük az egyes eszközöket. Az eszközillesztőosztályok az eszközök által közzétett eszközillesztőket csoportosítják. Regisztrál az eszközfelületek érkezéséről és eltávolításáról.

A felületosztályok definíciói nem egyetlen fájlban jelennek meg. Az eszköz interfészosztálya mindig olyan fejlécfájlban van definiálva, amely kizárólag egy adott eszközosztályhoz tartozik. Az Ntddmou.h például tartalmazza a GUID_DEVINTERFACE_MOUSE definícióját, az egér interfészosztályát képviselő GUID-t. Az Ntddpar.h a párhuzamos eszközökhöz tartozó GUID interfészosztályt határozza meg. Az Ntddpcm.h a PCMCIA-eszközök szabványos guid felületosztályát határozza meg. Az Ntddstor.h határozza meg a tárolóeszközök guid azonosítójának interfészosztályát.

Az eszközillesztő-értesítésekre való regisztrációhoz használja az eszközillesztőosztályra jellemző fejlécfájlokban található GRAFIKUS GUID-ket. Ezek a GRAFIKUS GUID-k lehetővé teszik, hogy értesítést kapjon egy eszközillesztő példány érkezéséről. Ha egy illesztő a guid azonosító helyett egy beállítási osztály GUID azonosítóját használva regisztrál az értesítésre, akkor a rendszer nem értesíti, ha egy illesztő érkezik.

Új felületosztály definiálásakor ne használjon egyetlen GUID azonosítót sem a beállítási osztály, sem a felületosztály azonosításához.