vladiii Posted August 24, 2007 Report Share Posted August 24, 2007 Initial postat pe vladii.wordpress.comOk, un nou micut “tutorial” (daca il pot denumi asa ) ). De curand, m-am confruntat cu o problema, cand incercam sa scriu un cod in ASM. Vroiam sa setez ceasul la ora 00:00:00 din Windows, folosind BIOSul. Nicio problema, aveam interruptul necesar, dar programul, cand il rulam, imi dadea eroare grava (sau eroare fata). Avand proasta inspiratie sa nu-l intreb pe Shocker, am cautat pe Google, dar nu am gasit rezolvarea la problema mea. De unde am plecat, pana unde am ajuns este cale lunga Shocker mi-a explicat ca eu nu pot accesa direct din windows BIOSul prin intermediul interrupturilor, deoarece eu rulez in UserMode (adica ? Cand misc mouseul pe desktop, accesez un fisier si altele, folosesc modul Userului). In UserMode nu avem acces direct la memoria kernelului, la resursele fizice ale calculatorului. Sa va arat o imagine (preluata de pe wikipedia.org) care sper sa fie edificatoare:Clar, noi, cand rulam in User Mode suntem mai putini privilegiati, dar asta ne face si ceva mai secure. De ce ? In UserMode (Ring 3), o eroare se manifesta printr-o eroare predefinita a windowsului, pe cand in KernelMode (cel mai privilegiat, Ring 0), erorile se manifesta prin Blue Screenuri si Restarturi (ceea ce este cam neplacut )Sa revenim. Deci ? Am precizat ca interrupturile nu pot fi rulate “simplu si direct” din UserMode (deoarece nu avem acces la resursele fizice ale computerului), atunci unele programe cum fac asta ? Ma refer, spre exemplu, la imaginea de pe desktop (care apare, in special, datorita placii video => direct din windows se poate avea acces la resursele fizice ale calculatorului). Cum, cum, cum, aceasta e intrebarea ? )Aceste aplicatii comunica cu resursele fizice ale calculatorului prin intermediul unui Driver. Deci, practic, ce este un driver ? Este o aplicatie, care ruleaza in Kernel Mode [ring 0 - modul cel mai privilegiat]. Ca o mica schema, “comunicarea” dintre acestea se realizeaza astfel: aplicatia [ruleaza in usermode ring 3 - windows] -> driver [ruleaza in kernelmode ring 0] -> resursele fizice ale computerului.Cum comunica ? Aplicatia care ruleaza in usermode apeleaza anumite rutine(sau subrutine -> http://en.wikipedia.org/wiki/Subroutine) in driver, iar driverul comunica mai departe cu componenta hardware prin computer bus (http://en.wikipedia.org/wiki/Computer_bus) !Acum poate va intrebati, ok, dar eu am imagine pe desktop chiar daca nu am instalat driverul (software) de la placa video. Pai aveti, dar nu se foloseste placa video la capacitatile ei maxime, pentru ca si Windowsul are anumite drivere (pentru placa video, placa de sunet, etc.) incorporate, insa nu poate folosi toate modelele la capacitatile maxime, de aceea este nevoie de softwareul special realizat de firmwareul placii dumneavoastra !!Cam atat am avut de spus ! Astept critici de la voi, deoarece nici eu nu sunt prea sigur de ceea ce am scris si vreau sa imi fixez cat mai bine aceste lucruri in minte, mai ales ca in viitor (cateva luni de invatat) vreau sa ma apuc de programare de drivere.Bibliografie:http://en.wikipedia.org/wiki/Ring_(computer_security)[url]http://en.wikipedia.org/wiki/Device_driver[/url][url]http://en.wikipedia.org/wiki/Subroutine[/url][url]http://en.wikipedia.org/wiki/Computer_bus[/url]Al vostru, vladii !!! Quote Link to comment Share on other sites More sharing options...
moubik Posted August 24, 2007 Report Share Posted August 24, 2007 in windows 98 puteam sa setez timerul la ce vroiam eu.este vorba de timerul care se actualizeaza la 55ms si care se reseteaza la ora 00:00stiu ca o data vroiam sa-mi fac fighting game si nu ma multumea faptul ca daca apas 2 taste nu mi le ia ca lumea. si gasisem in memoria bios un queue unde se salvau codurile ascii ale fiecarei taste. sa nu se confunde cu shift, ctrl, alt ... acolo e alta poveste.deci pe 98 se putea si pe 95 Quote Link to comment Share on other sites More sharing options...
vladiii Posted August 25, 2007 Author Report Share Posted August 25, 2007 Accesul direct la resursele fizice a fost restrictionat pe platformele NT [New Technology, 1993 a aparut prima versiune, NT 3.1], Windows 95/98 nu rulau pe platorfa NT, pe cand Windows 2000, Windows XP, Vista, Server 2008 au la baza platforma NTDe aceea ma bate gandul tot mai tare sa trec la Windows 98 pe calculatorul cel vechi. Quote Link to comment Share on other sites More sharing options...