Joskus pienenä tehtiin Win2000 ja XP näitä: eli ajettava ohjelma kopioitiin videomuistiin, jonka jälkeen käänsimme NMI:n ja kaikki keskeytykset kokonaan tietokoneesta pois päältä.
Windows ja kaikki RAM-muistissa tapahtuva toiminta pysähtyy, ainoastaan oma ohjelma toimii, koska näytönohjainkortti ajaa sen alueen muistin päivitystä (ei pääse virukset sotkemaan mitään).
Edellyttää tietysti että pitää myös kirjoittaa Privilege Level 0 -driveri, joka käynnistyy ilman tietokoneen restartointia suoraan, ja sallii kaikkien I/O porttien vapaan käytön, jolloin NMI:n sulkeminen käytöstä on mahdollista; pysäyttää kaikki keskeytykset ja muistin RAM päivitys.
Tietysti silloin joutuu kirjoittamaan hallintalaitteille omat pienet ajurinsa (näppäimistö lähinnä), käyttäen pelkästään I/O portteja.
Eli in/out -assemblykäskyt tulevat vain kysymykseen.
Windows ja kaikki RAM-muistissa tapahtuva toiminta pysähtyy, ainoastaan oma ohjelma toimii, koska näytönohjainkortti ajaa sen alueen muistin päivitystä (ei pääse virukset sotkemaan mitään).
Edellyttää tietysti että pitää myös kirjoittaa Privilege Level 0 -driveri, joka käynnistyy ilman tietokoneen restartointia suoraan, ja sallii kaikkien I/O porttien vapaan käytön, jolloin NMI:n sulkeminen käytöstä on mahdollista; pysäyttää kaikki keskeytykset ja muistin RAM päivitys.
Tietysti silloin joutuu kirjoittamaan hallintalaitteille omat pienet ajurinsa (näppäimistö lähinnä), käyttäen pelkästään I/O portteja.
Eli in/out -assemblykäskyt tulevat vain kysymykseen.
Vastaukset 3
Vanhimmat
NMI:n maskaaminen :) Tuossa on 2 erillistä I/O porttia, toinen on System Control Port, ja toinen mitä en nyt enää muista kun kauan aikaa kun tehnyt tuollaista:
Kumpikin pitää ohjelmoida uudelleen jotta RAM-muistin päivittäminen pysähtyy.
Mutta tosiaan pitää olla itse driveri ensin jolla on Privilege Level 0, eli Ring-0 driveri joka antaa oikeudet käyttää kaikkia I/O portteja vapaasti..
...Tuolta löytyy sitten sellaisia toimintoja: kuten välitön boottaus, kun käännät yhden bitin, ja samaten tuo mielenkiintoinen: NMI (Non-maskable Interrupt) Masking enable/disable, portit ovat: 91h ja 92h missä on.
Tuolta ensin pitää kääntä se maskaus enable-tilaan NMI:lle, sitten toisesta osoitteesta maskata se päälle, silloin pysähtyy RAM:n päivitys ;)
..ja tuossa vaiheessa kun RAM on pois päältä, niin tietysti oman ohjelman pitää ajaa koodiaan video muistissa, ei vaikuta siihen, kaikki muut pysähtyvät täystin paitsi se oma ohjelma.