Eszközobjektum létrehozása

A monolitikus illesztőknek minden olyan fizikai, logikai vagy virtuális eszközhöz létre kell hozniuk egy eszközobjektumot, amelyhez I/O-kéréseket kezel. Az az illesztőprogram, amely nem hoz létre eszközobjektumot egy eszközhöz, nem kap IRP-ket az eszközhöz.

Egyes technológiai területeken az osztályillesztőhöz vagy portillesztőhöz társított minidriver-nak nem kell saját eszközobjektumokat létrehoznia. Ehelyett az osztály- vagy portillesztő hozza létre az eszközobjektumot, és megkapja az eszköz összes I/O kéréscsomagját. Az osztály- vagy portillesztő ezután egy illesztőprogram-specifikus módszerrel adja át az I/O-kérést a minidrivernak. Tekintse meg az adott technológiai terület dokumentációját annak megállapításához, hogy a Microsoft olyan osztály- vagy portillesztőt biztosít-e, amely eszközobjektumokat hoz létre az illesztőprogram nevében.

Az illesztőprogramok vagy a IoCreateDevice, vagy a IoCreateDeviceSecure függvények hívásával hozzák létre az eszközobjektumaikat. A használandó rutinról a következő szakaszokban olvashat bővebben.

Eszközobjektumok létrehozása WDM-függvényhez és szűrőillesztőkhöz

Eszközobjektumok létrehozása WDM Bus-illesztőprogramokhoz

Eszközobjektumok létrehozása nem WDM-illesztőprogramokhoz

Amikor az illesztőprogram létrehoz egy eszközobjektumot, a következő információkat szolgáltatja az IoCreateDevice vagy IoCreateDeviceSecure:

  • Az eszköz eszközbővítményének mérete. Az eszközbővítmény egy rendszer által lefoglalt tárolóterület, amelyet az illesztőprogram az eszközspecifikus tároláshoz használhat. További információ: Eszközbővítmények.

  • Rendszer által definiált állandó, amely az eszközobjektum által képviselt DeviceType jelzi. További információ: Eszköztípusok megadása.

  • Egy vagy több ORed rendszer által definiált állandó, amely az eszköz eszközjellemzőit jelzi. További információ: Eszközjellemzők megadása.

  • Az Kizárólagosnevű logikai érték azt határozza meg, hogy az eszközobjektum jelzőinek egy bitjét DO_EXCLUSIVE kell-e beállítani, ami azt jelzi, hogy az illesztőprogram kizárólagos eszközt, például videót, soros, párhuzamos vagy hangeszközt használ. A WDM-illesztőprogramoknak a Kizárólagos értékét FALSE-re kell állítani. További információ: Az eszközobjektumok kizárólagos hozzáférésének megadása.

  • Az illesztőprogram objektumára mutató pointer. A WDM-függvények vagy szűrőillesztők a AddDevice rutin paramétereként egy mutatót kapnak az illesztőprogram objektumához. Minden illesztőprogram a DriverEntry rutinjában kap egy mutatót az illesztőprogram-objektumhoz. A rendszer ezzel a mutatóval társítja az illesztőprogramot az eszközobjektumához.

  • Opcionális mutató egy nullával lezárt Unicode-sztringre (DeviceName) az eszköz nevének megadására. A WDM-illesztőprogramok – a buszvezetők kivételével – nem adnak meg eszköznevet; ez megfelel a PnP-kezelő biztonsági funkcióinak. További információ: Elnevezett eszközobjektumok.

Ha a IoCreateDevice vagy a IoCreateDeviceSecure hívása sikeres, az I/O-kezelő biztosít tárhelyet magának az eszközobjektumnak és a hozzá kapcsolódó összes további adatstruktúrának is, beleértve az eszközkiterjesztést, amelyet nullákkal inicializál.

Eszközobjektumok létrehozása WDM-függvény- és szűrőillesztőkhöz

A WDM-illesztőprogramok a buszillesztők kivételével meghívják IoCreateDevice az eszközobjektumok létrehozásához. A legtöbb WDM-illesztőprogram a AddDevice rutinjaiból hozza létre eszközobjektumait. Egyes illesztőprogramok, például a lemezillesztők, amelyeknek válaszolniuk kell a meghajtóelrendezési IOCTL-ekre, meghívják a IoCreateDevice-t egy kézbesítési rutinból.

Ha a Windows Driver Kit (WDK) dokumentációjának eszköztípus-specifikus szakaszai másként nem rendelkeznek, az illesztőprogramnak létre kell hoznia az eszközobjektumokat az AddDevice rutinjában. További információért lásd: "AddDevice rutin írása" .

Eszközobjektumok létrehozása WDM Bus-illesztőprogramokhoz

A WDM-buszillesztő PDO-t hoz létre, amikor egy IRP_MN_QUERY_DEVICE_RELATIONS kérésre reagálva új eszközt sorol fel, ha a relációs típus BusRelations.

Az alábbi szabályok határozzák meg, hogy egy buszvezető meghívja-e IoCreateDevice vagy IoCreateDeviceSecure eszközobjektum létrehozásához:

  • Ha egy eszköz használható nyers módban, akkor meg kell hívnia IoCreateDeviceSecure.

  • Ha az eszköz nem képes nyers mód támogatására, akkor a buszillesztő program használhatja a IoCreateDevice vagy a IoCreateDeviceSecureparancsot. IoCreateDevice akkor használható, ha a buszon lévő eszközök alapértelmezett rendszerbiztonsága megfelelő; IoCreateDeviceSecure használható egy szigorúbb biztonsági leíró megadására. További információ: Eszközhozzáférés vezérlése.

Eszközobjektumok létrehozása nem WDM-illesztőprogramokhoz

A nem WDM-illesztő a IoCreateDevice függvényt használja névtelen eszközobjektumok létrehozásához, az IoCreateDeviceSecure pedig nevesített eszközobjektumok létrehozásához. Vegye figyelembe, hogy a nem WDM-illesztőprogramok névtelen eszközobjektumai nem érhetők el felhasználói módban, ezért az illesztőprogramnak általában létre kell hoznia legalább egy elnevezett objektumot.