Kernel módú illesztőprogramok része a 1 alapfogalmak, wasm

Kernel módú illesztőprogramok: 1. rész: Alapelvek - Archívum WASM.RU

A szétválás a jogok és felelősségek egy kicsit bonyolultabb.

A felhasználónak a következő folyamatokat:
  • Folyamatokat támogató rendszer (rendszerek támogatása folyamatok) - például a bejelentkezési folyamat Winlogon rendszer (megvalósított \% SystemRoot% \ System32 \ Winlogon.exe);
  • Folyamatok szolgáltatások (Service folyamatok) - például a nyomtatási várólista-kezelő;
  • Felhasználói alkalmazások (felhasználói alkalmazások) - amelyek öt típusból: Win32, Windows 3.1, MS-DOS, POSIX és az OS / 2;
  • Alrendszer Environment (Környezet alrendszerek) - által támogatott három alrendszer környezet: Win32 (megvalósított \% SystemRoot% \ System32 \ Csrss.exe) POSIX (megvalósított \% SystemRoot% \ System32 \ Psxss.exe), OS / 2 (megvalósított \% SystemRoot% \ System32 \ os2ss.exe).
A mag áll a következő komponenseket:
    Mozgatórendszer (ügyvezető) - memória kezelése, folyamata és cérna, stb.;
  • Kernel (mag) - szál ütemezés, szakítsa meg és kivétel kiszállás, stb (megvalósított \% SystemRoot% \ System32 \ Ntoskrnl.exe) ;.
  • Az eszközmeghajtók (Device Drivers) - hardver eszköz-illesztőprogramok, a hálózati illesztőprogramok fájlrendszer járművezetők
  • A absztrakciós szinten a hardver (Hardware Abstraction Layer HAL) - elszigeteli a fent említett három komponens a különbségek a hardver architektúrák (végrehajtani \% SystemRoot% \ System32 \ Hal.dll);
  • Támogatás alrendszer ablak és grafika (Windowing és grafikus rendszer) - egy grafikus felhasználói felület funkcióit (Graphic User Interface, GUI) (végre a \% SystemRoot% \ System32 \ Win32k.sys).

felhasználói és a kernel mód

Felhasználói mód folyamat tekinthető potenciálisan veszélyes szempontjából a rendszer stabilitását. Jogaik korlátozottak. És megpróbálja túllépni ezeket a korlátozásokat súlyosan elnyomott.

Ahogy a neve is mutatja, az eszköz-illesztőprogram egy olyan program célja, hogy kezelje néhány eszközt, az, hogy nem kell a fizikai. Ez lehet egy logikai vagy, mint a mi esetünkben, a virtuális.

A struktúrájában, az eszköz-illesztőprogram nem más, mint egy fájl PE-formátum (Portable végrehajtható, PE). Ugyanaz, mint a normál exe és dll. Csak elindul és más szabályok. Drivers tekinthető DLL kernel módban feladatok elvégzéséért nem lehet megoldani a felhasználó által módban. A fő különbség itt (eltekintve a jogosultsági szint), hogy nem tudjuk közvetlenül elérni a vezető, sem a kódot, vagy annak adatait, és speciális mechanizmusok révén input-output vezérlő (Input / Output Manager). IO menedzser keretet biztosít a működését, a vezetők, és biztosítja mechanizmusok a rakodáshoz és kezelése.

Ismerkedés a fejlesztés a kernel módú illesztőprogramok, úgy érzi, mint egy teljes kezdő, mint minden korábbi tapasztalata az API használatával nem fog segíteni - a kernel egy teljesen más funkciókat. Azt is meg kell használni rosszul dokumentált (meghatározott csak a header fájlokat), vagy akár okmányok nélküli funkciók és adatstruktúrák.

Egy- és többszintű illesztőprogramok

A legtöbb vezető irányítani fizikai eszközök réteges (rétegelt vezetők). Feldolgozás IO kérés megoszlik több járművezetők. Minden kiveszi részét. Például egy kérést az olvasás egy fájlt a fájlrendszer driver, kivásárlási végrehajt bizonyos műveletet (például kérésre particionálás több részre), közvetít „alatt” - a lemez meghajtó, és viszont, kérést küld a vezető busz. Között is a vezető tetszőleges számú szűrőillesztőinek (például titkosítás adatok). Lekérdezésével a downstream vezető (alacsonyabb szintű vezető) jelenti az eredménye „up” - a superior (magasabb szintű vezető). De szerencsére minden sokkal könnyebb lesz. A vezetők mindig egyszintű (monolitikus vezetők), ami nagyban megkönnyíti a folyamatot az írás és a hibakeresés.

Szintje megszakításkérelmeket

Először is, a munka a mi vezetők lehet állítani bármikor megszakíthatja a magasabb prioritású (például egy időzítőt, amikor az ütemező dönti el, hogy a jelenlegi és a már hosszú ideje van a processzor, és ez a pihenés ideje rá). Ezért ebben az értelemben, a sofőrünk kód futása megszakad, és kiszorítja (processzor adott másik szál), csakúgy, mint a bármely felhasználó kódját menet. Vannak alapvető funkciókat, hogy a jelenlegi megszakítási szintet, valamint növelheti vagy csökkentheti azt.

A második fontos pont: megszakítási szintű passzív hívhatja bármelyik alapvető funkciók (DDK a függvények leírása, feltétlenül jelezze, milyen szinten lehet okozni a megszakítás), valamint hozzáférést a memória oldalak lerakott a lapozófájl. Magasabb szinten a megszakítás (DPC / dispath felett), hogy megkísérelje elérni a hiányzó oldal fizikai memória eredményezi a rendszer összeomlik, mint Memory Manager (Memory Manager) nem tudja feldolgozni a laphiba.

"Blue Screen of Death"

Azt hiszem, mindenki, legalább egyszer látta, hogy egy izgalmas festmény címe: "Blue Screen of Death" (Blue Screen of Death, BSOD). Valószínűleg nem kell magyarázni, mi ez és miért van. Itt fontos, hogy a kéz a fejlesztés a kernel módú illesztőprogramok, készülj fel, hogy mit BSOD dastatochno gyakran jelennek meg a képernyőn a monitor.

minden volt, csak a harmadik gyűrű: felvázolt mintakódban létre a int3 ahol szükséges, és elszaladt. hibakereső már megérteni, hogy mi az, ami. Ha valami nincs rendben - szögezték, azt kijavítani a hibákat, fordítanod. és így tovább, amíg a kód nem működik, ahogy kellene. Amikor beállítja az illesztőprogramok ezt a technikát lehet elfelejteni. Itt az „utász” rossz egyszerre. Egy rossz lépés. és nyugodtan hátradőlhet, és pihenjen egy kicsit.

Teoretikusa nekem értéktelen, úgy, hogy az összes fenti lehet tekinteni, mint egy nagyon alapvető tudás elveinek, amelyek mindenképpen szükségesek, hogy megértsék. Nem tud fejlődni kezd a kernel módú illesztőprogramok nem rendelkező nyom, hogy milyen összefüggésben áramlásának, szintjének megszakítások és cérna prioritások magmódban / user, stb stb Akkor érzik magukat bizonytalan bármely kérdésben - a hivatkozások listáját az alján.

Driver Development Kit

Amellett, hogy a dokumentációt a DDK magában foglalja egy sor könyvtár fájlok (* .lib), ami feltétlenül szükséges, ha összeköti. A DDK tartalmaz két fájl (az úgynevezett szabad kimenet (ingyenes verzió)) for Windows végleges változata; és a hibakeresés (az úgynevezett felszabadulás ellenőrzés (ellenőrzött build)). Ezek a fájlok a könyvtárak .dk% \ libfre \ i386 és .dk% \ libchk \ i386 volt. A debug verzió egy szigorúbb hibajavítás. Ki kell használni a megfelelő fájlt a változat a rendszer tegye őket a \ MASM32 \ lib \ w2k.

Bár ez a könyv nem egyetlen sornyi forráskódot, ez elsősorban a programozók számára.

Ez a könyv elsősorban a Plag'n'Play vezetők, de ez nem csökkenti érdemben, mert alapelveit vezető fejlődés egyetemes.

Ez a könyv nincs közvetlen kapcsolatban a programozás, a vezetők, hanem nagyon érdekes ;-)

Ez a lista semmiképpen sem tekinthető teljesnek. Sok, főleg angol, megtalálható az interneten (kivéve Schreiber, az összes könyvet vannak az elektronikus változat). Ami a könyveket akarom mondani újra, hogy mindegyikük a kategóriában a „kell”. Látod - vásárolni nem nézett. Minden, de Walter'a Oney át a mi „nagy és hatalmas.”

Kapcsolódó cikkek