Jump to content
vladiii

Adevaratul inteles al: ''Imi instalez driverul de la..''

Recommended Posts

Initial postat pe vladii.wordpress.com

Ok, 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:

ringsjq0.png

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 !!!

Link to comment
Share on other sites

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:00

stiu 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

Link to comment
Share on other sites

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 NT

De aceea ma bate gandul tot mai tare sa trec la Windows 98 pe calculatorul cel vechi.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...