Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A felhasználói móddal nem megosztható szakaszokat és nézeteket létrehozó illesztőprogramoknak a következő protokollt kell használniuk, amikor szakaszokkal és nézetekkel dolgoznak:
Az illesztőprogramnak kernelfogópontot kell használnia, amikor fogópontot nyit a szakaszobjektum számára. Az illesztőprogramok a rendszerfolyamatban való létrehozással vagy a fogópont OBJ_KERNEL_HANDLE attribútumának megadásával gondoskodhatnak arról, hogy a fogópont kernelfogantyú legyen. További információ: Objektumfogópontok.
A nézetet csak rendszerszálból lehet leképezni. (Ellenkező esetben a nézet elérhető abból a folyamatból, amelyben a környezete létre van hozva.) Az illesztőprogramok gondoskodhatnak arról, hogy a nézet leképezhető legyen a rendszerfolyamatból egy rendszervégző szál használatával a leképezési művelet végrehajtásához. További információ: System Worker Threads és Driver Thread Context.
Azok az illesztőprogramok, amelyek felhasználói módú folyamattal osztanak meg nézetet, a következő protokollt kell használniuk, amikor szakaszokkal és nézetekkel dolgoznak:
A szakaszobjektumot az illesztőnek kell létrehoznia, nem pedig a felhasználói módú folyamatnak, és a nézeteket is az illesztőnek kell leképeznie.
Ahogy korábban említettük, az illesztőprogramnak egy kernel fogantyút kell használnia, amikor egy fogantyút nyit meg a szakaszobjektumhoz. Az illesztőprogramok a rendszerfolyamatban való létrehozással vagy a fogópont OBJ_KERNEL_HANDLE attribútumának megadásával gondoskodhatnak arról, hogy a fogópont kernelfogantyú legyen. További információ: Objektumfogópontok.
A nézet abban a szálkörnyezetben van leképezve, amelyet a nézetet megosztó folyamat használ. A legmagasabb szintű illesztőprogramok garantálhatják, hogy a nézet az aktuális folyamatkörnyezetben van leképezve, ha végrehajtja a leképezési műveletet egy kézbesítési rutinban, például a DispatchDeviceControlban. Az alacsonyabb szintű illesztőprogramok kézbesítési rutinjai tetszőleges szálkörnyezetben futnak, így nem tudják biztonságosan leképezni a nézetet a kézbesítési rutinban. További információ: Driver Thread Context.
Az illesztőprogramon belüli nézethez történő minden memóriahozzáférést try-except blokkokkal kell védeni. Egy rosszindulatú felhasználói módú alkalmazás feloldhatja a nézet leképezését, vagy módosíthatja a nézet védelmi állapotát. Bármelyik a rendszer összeomlását okozhatja, hacsak nem védik egy try-except blokkal. További információ: Kivételek kezelése.
Az illesztőprogramnak szükség szerint ellenőriznie kell a nézet tartalmát is. Az illesztőprogram-író nem feltételezheti, hogy csak egy megbízható felhasználói módú összetevő rendelkezik hozzáféréssel a nézethez.
Egy olyan illesztőnek, amelynek meg kell osztania egy szakaszobjektumot egy felhasználói módú alkalmazással (amelynek saját nézeteket kell létrehoznia) a következő protokollt kell használnia:
Az illesztőnek nem a felhasználói módú folyamatnak kell létrehoznia a szakaszobjektumot. Az illesztőprogramok soha nem használhatnak felhasználói módban átadott leírót.
Mielőtt átadja a leírót a felhasználói módnak, az illesztőprogramnak meg kell hívnia az ObReferenceObjectByHandle parancsot, hogy a szakaszobjektumra mutató hivatkozást kapjon. Ez megakadályozza, hogy egy rosszindulatú alkalmazás töröljön a szakaszobjektumot a leíró bezárásával. Az objektumhivatkozást az illesztőprogram eszközbővítményében kell tárolni.
Miután az illesztőprogram már nem használja a szakaszobjektumot, meg kell hívnia az ObDereferenceObject parancsot az objektumhivatkozás felszabadításához.
A Microsoft Windows Server 2003 Service Pack 1 (SP1) és újabb verziójú rendszereken csak a kernel módú illesztőprogramok nyithatják meg a \Device\PhysicalMemory eszközt. Az illesztőprogramok azonban dönthetnek úgy, hogy egy kezelőt adnak egy felhasználói alkalmazásnak. A biztonsági problémák elkerülése érdekében csak az illesztőprogram által megbízható felhasználói alkalmazásokat szabad hozzáférést biztosítani a \Device\PhysicalMemory szolgáltatáshoz.