Biztos te is jártál már úgy, hogy találtál egy szuper régi hardvert a fiók mélyén, de a Windows 11 hallani sem akar róla. A Szoftverfejlesztés a mikroszkóp alatt: Így írj saját, hardver-közeli kernel-szintű illesztőprogramot az elfeledett perifériáidhoz Windows 11 alatt című írásom éppen arról szól, hogyan vedd vissza az irányítást a géped felett. Ez a folyamat nem egyszerű, de cserébe pontosan azt kapod, amire vágysz.
A legtöbb modern rendszer már régen lemondott a kilencvenes évek végén gyártott eszközökről. A gyártók már nem írnak hozzájuk meghajtókat, a Windows pedig biztonsági okokból alapértelmezetten blokkolja az unsigned, vagyis aláíratlan drivereket. Amikor saját illesztőprogramot írsz, nemcsak a hardvert éleszted újra, de rengeteget tanulsz a Windows operációs rendszer belső működéséről, a megszakításokról és a memória kezeléséről.
Mielőtt belevágnál a kódolásba, össze kell raknod a megfelelő eszköztárat. Nem elég egy sima szövegszerkesztő, itt komolyabb vizekre evezünk.
Ez a készlet a belépő a kernel módban történő kódoláshoz. A WDK telepítése után érdemes létrehozni egy alap "Hello World" drivert, hogy lásd, a fordítási folyamat rendben lezajlik-e.
A Windows rendszerben a kernel mód egyfajta "mindent szabad" zóna. Ha itt hibázol, a rendszer azonnal kékhalállal büntet, mivel a kernelben futó kódnak nincsenek védelmi hálói. Az illesztőprogramod egy úgynevezett DriverEntry rutinhoz kötődik, ami a rendszerindításkor hívódik meg.
A legfontosabb dolgok, amikkel tisztában kell lennöd:
Amikor egy régi perifériáról beszélünk, általában USB vagy soros port a leggyakoribb kapcsolódási pont. A Windows 11 alatt az USB-eszközök kezelése a KMDF, azaz a Kernel Mode Driver Framework segítségével a legkényelmesebb. Ez leveszi a válladról a bonyolultabb erőforrás-kezelési terheket.
A kommunikáció folyamata nagyjából így néz ki:
A Windows 11 egyik legszigorúbb része az illesztőprogramok aláírása. Mivel te saját célra készíted a drivert, nem kell feltétlenül drága tanúsítványt venned, de be kell kapcsolnod a "Test Signing" módot a gépeden.
Ehhez az alábbiakat kell tenned:
Ez a mód lehetővé teszi, hogy a rendszer elfogadja a saját készítésű kódodat anélkül, hogy az átesne a Microsoft hosszú és drága hitelesítési folyamatán.
Sokan ott csúsznak el, hogy túl sokat akarnak egyszerre. A kernelben minden műveletnek villámgyorsnak kell lennie. Ha hosszú ideig blokkolod a CPU-t egy várakozással, az egész Windows meg fog fagyni.
Pár dolog, amire figyelj oda:
Ha a periféria nem reagál, ne ess pánikba. A legtöbb esetben a probléma a rosszul beállított I/O prioritásokban vagy a nem megfelelő buffer kezelésében rejlik. A WinDbg segítségével lépésről lépésre végigkövetheted, hogyan jut el a jel a kódtól a fizikai alkatrészig. A kitartás itt fél siker, hiszen egy saját illesztőprogram megírása nemcsak technikai tudást igényel, de egyfajta technológiai régészeti munka is, ami igazi sikerélményt ad, amikor a régi egér vagy nyomtató végre újra életre kel a legmodernebb Windows környezetben.