SPB eszközhalmok

A Windows illesztőprogram-modell tisztán elkülöníti a buszon lévő perifériás eszközt (például hőmérséklet-érzékelőt) vezérlő illesztőprogram-összetevőket a busz-vezérlőt kezelő illesztőprogram-összetevőktől, amelyek adatokat és vezérlő információkat továbbítanak a perifériára és onnan. Ez a szétválasztás lehetővé teszi a perifériás eszközök hardvergyártójának, amely egy egyszerű perifériás buszhoz (SPB) csatlakozik, egy illesztőprogram írását, amely az eszközt különféle buszvezérlők, busztípusok és hardverplatformok vezérlésével vezérli. Hasonlóképpen, az SPB vezérlő hardvergyártója írhat egy illesztőprogramot ehhez a vezérlőhöz, amely lehetővé teszi a csatlakozást számos perifériás eszközhöz.

windows

A Windows rendszerben a Plug and Play (PnP) buszhoz csatlakoztatott perifériás eszközöket két, és valószínűleg több eszközobjektum képviseli. Az eszköz eszközobjektumai hierarchikusan vannak rendezve, hogy eszközhalmot alkossanak. A funkcionális eszközobjektum (FDO) az eszköz belső állapotát reprezentálja, és a perifériás eszköz belső funkcióit vezérlő függvény-illesztőprogram hozza létre és birtokolja. A veremben az FDO alatt található egy fizikai eszköz objektum (PDO), amely az eszköz és a busz közötti kapcsolatát képviseli. A PDO-t a buszvezérlő-illesztőprogram hozza létre és birtokolja, amely felismeri és felsorolja az eszközt a PnP-kezelő számára. Ez az OEM tartalmazza azokat az információkat (például buszok címe), amelyekre a buszvezérlőnek szüksége van, hogy a buszon keresztül hozzáférjen az eszközhöz. Ha a funkció illesztőprogram segítséget igényel a buszvezérlőtől az eszköz I/O műveletének végrehajtásához, akkor a funkció illesztőprogram I/O kérési csomagot (IRP) küld a készülékkötegbe a PDO-nak, és a busz vezérlő illesztőprogramja megkapja az IRP-t . További információ: Eszközobjektumok és Eszköztárak.

Ezzel szemben egy SPB (például egy I²C vagy SPI busz) nem támogatja a PnP-t, és az SPB vezérlő illesztőprogram nem érzékeli és nem sorolja fel az SPB perifériáit. Ehelyett a hardverplatform ACPI firmware leírja ezeket az eszközöket és buszcsatlakozásaikat, az ACPI illesztőprogram, az Acpi.sys pedig ezeket az eszközöket sorolja fel a PnP kezelőhöz.

Ezenkívül az Acpi.sys létrehozza a perifériás eszközök PDO-ját az SPB-n. I/O művelet végrehajtásához ezen az eszközön az eszköz funkció-illesztőprogramja nem küld IRP-t a veremben a PDO-ra, mert a PDO az Acpi.sys tulajdonában van, amely nem tud I/O műveleteket végrehajtani. Ehelyett a függvény-illesztőprogramnak el kell küldenie az IRP-t az SPB vezérlő illesztőprogramjának. Az SPB vezérlő illesztőprogram birtokolja az SPB vezérlő FDO-ját, amely nem ugyanabban az eszközveremben van, mint a perifériás eszköz FDO-ja. Ennek az IRP-nek a küldéséhez az eszköz funkció-illesztőprogramjának először meg kell nyitnia egy logikai kapcsolatot az SPB vezérlővel, és meg kell kapnia egy WDFFILEOBJECT objektum fogantyút ehhez a kapcsolathoz. Az illesztőprogram ezt követően ezt a fogantyút határozza meg az eszközre küldött IRP-k célpontjaként. Az SPB vezérlő illesztőprogramja fogadja ezeket az IRP-ket, és (az SPB keretrendszer kiterjesztésével együtt, az SpbCx) végrehajtja a kért I/O műveleteket az eszközön. Az SPB vezérlőkhöz történő logikai kapcsolatok megnyitásáról további információt az SPB perifériás eszközök csatlakozási azonosítói című témakörben talál.

Néhány IRP-t teljes egészében az I/O-kérés láncban lévő SPB vezérlő illesztőprogram fölött lévő illesztőprogramok kezelhetnek, ideértve a perifériás eszköz illesztőprogramját is. Azokat az IRP-ket azonban, amelyek adat- vagy vezérlőinformációk továbbítását igénylik a buszon keresztüli periférikus eszközről és onnan, az SPB vezérlő illesztőprogramjának kell feldolgoznia.

Az SPB perifériás eszköz illesztőprogramjával történő működésre tervezett szűrő-illesztőprogram behelyezhető a funkció-illesztőprogram FDO-ja fölé. Ilyen szűrő behelyezése az FDO és a PDO közé azonban nincsen hatással, mert nem tudja elfogni azokat a IRP-ket, amelyeket a funkció illesztőprogram és az SPB vezérlő illesztőprogram között cserélnek.

Szükség esetén az SPB vezérlő illesztőprogram (és az SPBCx, amely kezeli az SPB vezérlő illesztőprogramhoz küldött IRP-k várakozási sorait) fölé szűrőillesztő illeszthető. Az SPB I/O kérés interfész azonban egy felső szintű illesztőprogram-interfész, és az I/O-kérés lánc illesztőprogramjainak biztosítaniuk kell, hogy az I/O kéréseket a hívó szál kontextusában kézbesítsék, hogy az SpbCx és az SPB vezérlő Az illesztőprogram az I/O átvitel során hozzáférhet a felhasználói módú pufferekhez.