Megosztás:


A vezérlőobjektumok bemutatása

Ahogy a neve is sugallja, a vezérlőobjektumok általában egy csatlakoztatott eszközökkel rendelkező fizikai eszközvezérlőt jelölnek. A fizikai vezérlő által koordinált hasonló eszközök legalacsonyabb szintű nem WDM-illesztője létrehozhat egy vezérlőobjektumot, és ezzel szinkronizálhatja az I/O-műveleteket a csatlakoztatott eszközök között. Az illesztőprogram implementál egy ControllerControl-rutint , és meghívja az I/O-kezelő vezérlőobjektum-támogatási rutinjait.

Megjegyzés

A vezérlőobjektumok használata nem támogatott a WDM-illesztőprogramokban.

Az illesztőprogramok általában vezérlőobjektumokkal szinkronizálják a műveleteket a csatlakoztatott eszközökkel, ha az alábbi feltételek teljesülnek:

  • A vezérlő nem hajt végre hosszú műveleteket megszakítás nélkül, így az illesztőprogramnak nem kell dedikált szálat létrehoznia vagy rendszermunkaszálakat használnia.

  • A vezérlőhöz csatlakoztatott eszközök hasonlóak. Vagyis nem teljesen eltérő fizikai tulajdonságokkal vagy működési funkcióval rendelkező eszközök, például a billentyűzethez és az egéreszközökhöz, amelyek csatlakoztathatók a billentyűzethez és a kiegészítő eszközvezérlőhöz.

  • Az illesztőprogram monolitikus kialakítású: egyetlen rétegben kapcsolódik az eszközvezérlőhöz és a csatlakoztatott fizikai eszközökhöz, nem pedig portillesztőként (a vezérlőhöz) van tervezve, amely fölé egy vagy több osztályillesztő rétegződik (a csatlakoztatott eszközök számára).

Az I/O-csatornákkal és logikai eszközobjektumokkal rendelkező eszközök illesztőprogramjai vezérlőobjektumokkal is szinkronizálhatják az I/O-műveleteket az ilyen eszközök csatornái között vagy azok között.

A vezérlőobjektumnak nincs neve, így nem az I/O-kérések célja. Ez egyszerűen egy szinkronizálási mechanizmus, amely szerializálja az I/O-t egy eszközobjektum-készletből. Mivel egy vezérlőobjektumnak nincs neve, a felhasználói módú védett alrendszerek számára láthatatlan, amely nem tud eszköz I/O-kéréseket intézni anélkül, hogy a céleszköz-objektumot jelképező fájlobjektum leíróját kapná. A vezérlőobjektumok a magasabb szintű illesztőprogramok számára is láthatatlanok, amelyek nem tudják saját eszközobjektumaikat egy vezérlőobjektumhoz csatolni. Más szóval sem az I/O-kezelő, sem a magasabb szintű illesztő nem állíthat be olyan IRP-t, amely I/O-t kér egy vezérlőobjektum által képviselt eszközön. Az I/O-kéréseket mindig az eszközobjektumok adják ki. Csak az illesztőprogram használhatja a vezérlőobjektumot.

Szinkronizálás és átfedésben lévő I/O

A fizikai eszközök olyan monolitikus illesztőprogramjai, amelyek olyan funkciókkal rendelkeznek, mint az "AT" lemezvezérlő, nem szükséges vezérlőobjektumot használniuk az eszköz I/O-műveleteinek szinkronizálásához. Egy illesztőprogram-író például kipróbálhatja a következő szinkronizálási technikát vezérlőobjektum használata helyett:

  • Névvel ellátott eszközobjektumok beállítása az I/O-kérések céleszközeinek megjelenítéséhez.

  • Az állapotinformációk (például az egyes eszközkiterjesztésekben vagy egyetlen eszközkiterjesztésben található elfoglaltsági jelzők készlete) megtartása, amely jelzi, hogy melyik eszközobjektum az aktuális I/O-művelet célja.

  • Végezzen I/O-műveleteket a jelenleg foglalt eszközobjektum számára, és az aktuális IRP befejezéséig sorolja újra a bejövő IRP-ket más eszközobjektumokhoz.

Az előző szinkronizálási technika szerializálja az IRP-feldolgozást az illesztőprogram összes céleszköz-objektumához. Vegye figyelembe, hogy az illesztőprogramot arra is kényszeríti, hogy befejezze az aktuális IRP-t, mielőtt a StartIo rutin elkezdené feldolgozni a következő IRP-t, ami sajnos csökkenti az illesztőprogram teljesítményét.

Ha bizonyos eszközműveletek átfedésben lehetnek, a vezérlőobjektumok használatával növelhetik az illesztőprogram I/O-átviteli sebességét, mivel ez a szinkronizálási technika lehetővé teszi az illesztőprogram számára annak megállapítását, hogy átfedheti-e a műveleteket, mielőtt beállítja a fizikai eszközt. Egy lemezvezérlő például lehetővé teheti, hogy az illesztőprogram átfedje a kereséseket egy másik lemezen olvasási/írási műveletekkel.

Emellett a vezérlőobjektumok használata viszonylag egyszerű módszer több céleszköz objektum I/O-műveleteinek szinkronizálására egyetlen fizikai eszközön, például egy "AT" lemezvezérlőn keresztül. A vezérlőobjektumok használatával egy monolitikus illesztőprogram szinkronizálhatja az I/O-műveleteket nevesített eszközobjektumok halmazán anélkül, hogy egy vagy több eszközbővítményben minden eszköz és az eszközvezérlő állapotát kellene fenntartania, és nem kell újra lekérdeznie az integrációs modulokat.

Azonban egyes eszközök, amelyek úgy lettek kialakítva, hogy átfedjenek I/O-műveleteket, mint például a full-duplex soros vezérlők vagy a busz vezérlő adapterek, általában olyan illesztőprogramokkal rendelkeznek, amelyek belső üzenetsorokat állítanak be az IRP-khez.