WIN32 API ȘI REGISTRUL DE INFORMAȚII PENTRU WINDOWS

Ce este Win32 API?

Win32 API (Application Programming Interfaces) reprezinta un set de aplicatii disponibile pentru sistemele de operare Windows. Initial a fost numit Win32 API.Totusi,Win API isi are radacinile in Windows-ul pe 16 biti,iar in zilele noastre il intalnim si pe platformele pe 64 de biti.Marea majoritate a programelor interactioneaza cu Win API,dar exista unele exceptii, de exemplu:Windows Start-Up Process,care foloseste Native API.

Suportul pentru dezvoltatorii de aplicatii este disponibil pentru sistemul de operare Windows sub forma unui SDK, mai precis Windows Software Development Kit(Microsoft Windows SDK), care ofera documentatia necesara dezvoltatorilor pentru a crea aplicatii folosind Windows API si tehnologiile Windows asociate.

Windows API permite aplicatiilor sa „exploateze” capacitatea sistemului de operare Windows.Folosind API, pot fi dezvoltate aplicatii care sa ruleze cu succes pe toate versiunile de Windows si care sa profite de avantajele oferite de fiecare versiune in parte.Diferentele de implementare ale programelor depind de capabilitatea de interpretare a sistemului de operare.Aceste diferente sunt disponibile in documentatia sistemului de operare.

Windows API este format din urmatoare categorii:

 Administratie si Management  Diagnosticare  Grafica si Multimedia  Retele  Securitate  Servicii de sistem  Interfata utilizatorului cu Windows (Windows User Interface)

Administrare si Management

Administrarea si Managementul interfetelor permit instalarea,configurarea,managerizarea aplicatiilor sau a sistemelor.Vom ilustra prin cateva exemple aceasta categorie de Windows API.

Boot Configuration Data WMI Provider

Boot Configuration Data(BCD) Windows Management Instrumentation (WMI) ofera un spatiu care este folosit pentru descrierea aplicatiilor bootabile si setarile acestora.Obiectele si elementele inlocuiesc in esenta fisierul Boot.ini.Datele stocate pot fi gestionate utilizand clasele implementate de catre WMI,descrise in documentatia SDK sau utilizand BCDEdit (linie de comanda utilitara). Acesta este folosit incepand de la Windows Vista,Windows Server 2008 sau in versiunile care permit modificarea optiunilor de bootare.

Microsoft Management Console

Scopul Microsoft Management Console(MMC) este de a minimiza costul administrarii aplicatiilor din Windows si de a furniza o administrare eficienta,simpla pentru utilizartor.

MMC SDK poate fi folosit pentru a scrie utilitare, numite snap-ins,pentru administrarea mediilor bazate pe Windows.

Documentatia MMC SDK arata cum se dezvolta snap-ins-uri folosind Visual Basic sau ++.

Restart Manager

Scopul Restart Manager API este de a elimina sau de a reduce numarul de restart-uri necesare pentru a termina sau pentru a completa o instalare a unui program sau a unui update.Principalul motiv pentru care update-urile necesita un restart este ca fisierele care necesita updatare sunt folosite in acel moment si nu pot fi modificate.Restart Manager-ul elibereaza fisierele folosite si acestea pot fi updatate.

Restart Managerul (dll) exporta o interfata C care poate fi incarcata chiar si de utilizatorii standard. Instalatorul(programul care instaleaza) poate folosi Restart Managerul pentru a retine fisierele care ar trebui inlocuite in timpul instalarii sau al update-ului.Ulterior momentului in care se face instalarea sau update-ul, installerul poate folosi Restart Managerul pentru a sti care sunt fisierele care nu pot fi updatate , acesta poate inchide si redeschide programele care nu sunt esentiale in rularea sistemului de operare pentru a termina instalarea si update-ul fisierelor.

DIAGNOSTICAREA

Diagnosticarea permite evaluarea deficientelor de rulare a programelor sau a problemelor de sistem si monitorizeaza performanta.Cateva exemple de API-uri pentru aceasta ramura a Windows API ar fi:

Application Recovery and Restart

O aplicatie poate folosi Application Recovery and Restart(ARR) pentru a salva date si informatii despre starea programului inainte ca aplicatia sa se inchida in urma unei erori netratate( unhandled exception) sau in momentul in care aceasta se blocheaza,nu mai raspunde.Aplicatia poate fi repornita, daca utilizatorul cere acest lucru.

O aplicatie poate fi deasemenea restartata daca un program updateaza o aplicatie sau daca PC-ul este nevoit sa restarteze in urma unui proces de update.Este necesar ca atat aplicatia cat si programul care face update sa fie autorizate in mod corespunzator.

Performance Counter(indicatorul de performanta) Scopul acestui API este de a oferi informatii despre cat de bine ruleaza un sistem de operare,o aplicatie, un serviciu sau chiar un driver.Aceste API-uri sunt utile pentru a identifica gatuirile(bottleneck-urile) si de a ajusta performanta sistemului si a aplicatiilor.De exemplu,sistemul de operare poate oferi chiar si un grafic,indicator de performanta, sau un scor.

System Monitor

Scopul API-ului System Monitor(SYSMON) este ca utilizatorul sa configureze Microsoft System Monitor ActiveX Control.SYSMON permite vizualizarea in timp real si a performantelor precedente ale performance counter(indicatorului de performanta) informatii despre memorie, hdd si procesor.

SYSMON API a aparut incepand cu Microsoft Windows 2000.

Grafica si multimedia

Interfetele grafice si multimedia permit aplicatiilor sa incorporeze texte,grafica,audio si video.

Open GL

O interfata software foloseste OpenGL pentru a construi obiecte multidimenstionale intr-o zona tampon.Implementarea Microsoft a OpenGL pentru sistemele de operare Windows este standardizata,iar programatorii pot crea imagini si animatii tridimensionale color, de foarte mare calitate. OpenGL este foarte usor de folosit de la un sistem de operare la altul.Fiecare sistem de operare are cerintele proprii, iar codul OpenGl este compatibil cu multe versiuni ale Windows. OpenGL a fost dezvoltat de catre programatorii in C/C++.

Windows Multimedia

Windows Multimedia permite vizualizarea aplicatiilor care au sunet si imagine.

Retele

Acestea permit comunicarea intre diferite aplicatii intre doua sau mai multe calculatoare prin intermediul unei retele.De asemenea,pot fi gestionate resurse comune,cum ar fi directoare care pot fi vizibile in interiorul unei retele,sau folosirea unei imprimante.Cateva exemple de API-uri din aceasta categorie ar fi :

Bluetooth

Bluetooth-ul este un protocol standard care permite comunicarea wireless intre computere,telefoane mobile sau alte dispozitive care suporta acest protocol. Acesta permite dezvoltatorilor care deja cunosc programarea retelelor sa porteze aplicatii sau sa le dezvolte rapid.

HTTP Server API HTTP Server API permite aplicatiilor sa comunice prin intermediul protocolului HTTP fara a folosi IIS(Internet Information Server).Aplicatiile se pot inregistra sa primeasca o cerere HTTP de la un URL particular, sau sa trimita raspunsuri HTTP.HTTP Server API include si suport SSL astfel incat aplicatiile pot schimba date prin intermediul conexiunilor securizate HTTP fara a folosi IIS.

DNS

DNS (Domain Name System ) este un protocol standart care localizeaza calculatoarele pe baza unei adrese IP.Retelele precum Internet sau retelele Windows se bazeaza pe un numar de adrese pentru a procesa date.Utilizatorii, totusi,retin mai usor numele adresei si este necesara translatarea unor nume familiare in adrese pentru ca reteaua sa fie recunoscuta (www.microsoft.com -> 207.46.131.137)

Securitate

Cryptography

Criptografia reprezinta utilizarea unor coduri pentru a converti anumite date astfel incat doar un anumit receptor sa le poata citi,utilizand o cheie.

Tehnologiile de criptare de la Microsoft includ CryptoAPI,Cryptographic Service Providers (CSP),CAPICOM.

CryptoAPI a fost gandita ca sa fie folosita de dezvoltatorii de aplicatii bazate pe Windows care permit utilizatorilor sa creeze si sa faca schimb de documente si alte date intr- un mediu sigur,intr-un loc atat de nesigur cum este Internetul.Dezvoltatorii ar trebui sa fie familiarizati cu limbajele de programare C si C++ si cu mediul de dezvoltare oferit de Windows.Desi nu este necesar,o intelegere a criptografiei si a problemelor legate de securitate este necesara pentru a intelege fenomenul.

Authentication

Authentication(autentificarea) reprezinta procesul prin care sistemul de operare valideaza informatia de logare a utilizatorului.Un username si o parola sunt comparate cu o lista de autorizatii,iar daca sistemul detecteaza o similaritate,accesul este permis.

Autentificarea facuta de Microsoft include autentificare LSA,Credentials Management, Smart Card Authentication, Network Provider, Security Support Provider Interface (SSPI), Winlogon, and GINA.

Tehnologiile de autentificare ale Microsoft au fost gandite de a fi folosite de dezvoltatorii de aplicatii care se bazeaza pe Windows Server,Windows Vista si sisteme operare Windows care identifica clientii.Dezvoltatorii ar trebui sa fie familiarizati cu programarea in Windows.O intelegere a procesului de autenrificare si a subiectelor legate de securitate este necesara.

Windows Web Services API Windows Web Services API , sau mai pe scurt WWSAPI reprezinta o implementare a codului SOAP care ofera o functionalitate de baza de comunicare in retea prin sprijinirea unui set WS-* si .NET de familii de protocoale.WWSAPI a fost creat pentru a fi utilizat de catre aplicatii care se incadreaza in urmatoarele categorii:

 Cod nativ mandatat  Necesita dependinte minime  Necesita un timp de pornire minim  Medii constranse de memorie

WWSAPI ofera o interfata de programare a aplicatiilor (API) in C / C++ pentru construirea de aplicatii SOAP bazate pe servicii web si client . O intelegere elementara a serviciilor web si protocoalele asociate acestora este importanta pentru a folosi API.

WWSAPI reprezinta o componenta a urmatoarelor sisteme de operare:

 Windows 7  Windows Server 2008 R2

DirectX

Microsoft DirectX este o colectie de API-uri care se ocupa cu gestionarea task-urilor legate de multimedia, in special in domeniul jocurilor video, pe platformele Microsoft.

Initial, numele acestor API-uri incepeau toate cu „Direct” si putem enumera cateva exemple : , DirectDraw,DirectMusic, DirectPlay sau DirectSound. Denumirea de DirectX a fost data pentru a ingloba toate aceste API-uri, X poate fi interpretat ca o necunoscuta care ia valorile 3D,Draw etc.

Atunci cand Microsoft a decis sa lanseze prima sa consola de jocuri video,a hotarat sa o denumeasca Xbox. X deoarece API-urile pentru Xbox incepeau cu X.Putem enumera cateva exemple,precum Xinput sau XACT(Cross-Platform Audio Creation Tool),iar DirectX a fost pastrat pentru denumirea API-urilor din Windows (,DirectWrite).

Direct3D(grafica 3D implementata cu DirectX) este folosit la scara larga in dezvoltarea jocurilor video pentru Microsoft Windows,Microsoft Xbox si Microsoft Xbox360.Direct3D este de asemenea folosit si de catre aplicatiile software pentru vizualizarea grafica a proceselor de tip CAD/CAM,ininginerie.Intrucat este foare popular si foarte folosit,este posibil ca in practica sa se intalneasca si numele simplu de DirectX.

SDK-ul DirectX-ului (Software Development Kit) este constituit din librarii de tip runtime,impreuna cu documentatia si headerele folosite pentru scrierea codului.Initial,acestea librariile erau instalate de catre utilizator sau chiar direct de catre jocuri.De exemplu,Windows 95 nu cuprindea si DirectX,dar acesta a fost introdus o data cu Service Release 2 a aceluiasi sistem de operare. Windows 98 si NT 4.0 au fost oferite utilizatorilor impreuna cu DirectX,iar in zilele noastre sistemele de operare au inclus in pachetul de servicii DirectX-ul. SDK-ul este disponibil tuturor si mai mult,este gratuit.Exista numeroase tutoriale pentru dezvoltarea de aplicatii simple. Direct3D 9Ex, Direct3D 10, and Direct3D 11 sunt disponibile pentru Windows Vista si pentru Windows 7 pentru ca fiecare din aceste noi versiuni au fost construite sa depinda de noul Windows Display Driver,care a fost introdus o data cu Windows Vista.Arhitectura Windows Display Driver Model include un nou management al memoriei care permite vizualizarea a mai multor aplicatii rulate simultan,precum .

Windows API pentru Windows 2000

Ca toate sistemele de operare,Windows 2000 are un set de apeluri de sistem.Totusi,Microsoft nu a facut apelurile de sistem de tip public, si acestea se tot schimba de la un sistem de operare la altul.Atunci,Microsoft a definit un set de apeluri de functii denumite Win32 API,care sunt cunoscute si au documentatia disponibila.Astazi,sunt adaugate API-uri versiunilor mai noi de Windows.

Programele binare scrise pentru familia de procesoare Intel x86 care au aderat la Win32 API vor rula in acelasi mod de la Windows 95 pana la Windows 2000.Dupa cum se poate vedea in figura de mai jos,pentru sistemul de operare Windows 3.x trebuie adaugata o librarie in plus.Trebuie totusi remarcat ca Windows 2000 adauga in mod substantial o functionalitate pentru Win32,iar unele API-uri prezente in Windows 2000 nu sunt disponibile si in versiunile mai noi(acesta are cateva API-uri specifice). O schema generala poate fi vazuta mai jos :

Filosofia Win32 API este complet diferita de catre cea a UNIX-ului.Apelurile de sistem sunt publice si cunoscute si formeaza o interfata minima : reducerea uneia dintre acestea va duce la o functionalitate restransa a sistemului de operare. Filosofia Win32 API este de a oferi o interfata cuprinzatoare,de multe ori fiind oferite 3 sau poate chiar 4 posibilitati de a face acelasi lucru prin metode diferite si include multe functii (i.e proceduri) care nu sunt apeluri de sistem precum un apel API de copiere a unui fisier in intregime.

Multe din aplicatiile Win32 API creeaza obiecte kernel de tipuri diferite,precum fisiere,thread-uri,procese si asa mai departe.Orice apel care creeaza un obiect returneaza un rezultat numit handle catre cel care apeleaza.Acest handle poate fi folosit ulterior pentru a face diverse operatii cu obiectul.Handle-urile sunt specifice proceselor care au creat obiectele.Aceste handle-uri nu pot fi folosite in alte procese decat in cel care a fost creat.Totusi,exista posibilitatea de a „dubla” un handle in anumite circumstante intr-un mod protejat,permitand un acces controlat(limitat) la obiecte obtinute din alt proces.Orice obiect are atasat un descriptor de securitate care ne spune in detaliu ce este permis si ce nu este permis(ce operatii pot fi facute cu obiectul respectiv).

Se spune uneori ca Windows 2000 este obiect-orientat deoarece singurul mod de a manipula obiectele este de a invoca operatiile handle-urilor prin apelul Win32 API. Pe de alta parte, exista o lipsa a unor proprietati de baza ale conceptului obiect-orientat, de exemplu mostenirile sau polimorfismul.

Apelurile de sistem Win32 API acopera aproape toate problemele cu care s-ar putea confrunta un sistem de operare.In mod natural,exista apeluri pentru crearea si managementul proceselor si firelor de executie.Exista multe apeluri care sunt in concordanta cu notiunea de comunicatie inter-proces(sau mai bine zis,inter-thread),cum ar fi crearea,distrugerea,folosirea Mutex-urilor, a semafoarelor,evenimentelor sau a altor obiecte de tip IPC.

Desi managementul memoriei sistemului de operare este ascuns programatorului, o caracteristica importanta este totusi disponibila:abilitatea unui proces de a mapa un fisier in interiorul memoriei virtuale.Acest lucru permite proceselor sa citeasca si sa scrie parti din fisier ca si cum ar fi cuvinte din memorie.

Un alt lucru foarte important pentru programe este I/O.Din punctul de vedere al lui Win32,un fisier nu este altceva decat o insiruire de bytes. Win32 ofera peste 60 de apeluri pentru crearea si distrugerea fisierelor si directoarelor, deschiderea si inchiderea fisierelor,scrierea si citirea acestora, cererea si setarea atributelor fisierelor si multe altele.

O alta arie in care Win32 API ofera apeluri este aria securitatii.Fiecare proces are un ID care spune cine este si orice obiect poate avea o lista de acces care va spune care utilizatori au voie sa faca anumite operatii cu obiectul. Aceasta abordare permite limitarea accesului la anumite obiecte,din ratiuni de securitate.

Procesele, thread-urile, sincronizarea, management-ul de memorie, fisierele de intrare/iesire si apelurile de sistem pentru securitate nu mai sunt demult o noutate. Si alte sisteme de operare le au de asemenea, desi, in general, nu toate dintre ele, de exemplu Win32. Dar Win32 se remarca prin miile de apeluri pentru interfata grafica. Exista apeluri pentru crearea, distrugerea, gestionarea si utilizarea ferestrelor, meniurilor, tool bars, status bars, scroll bars, dialog boxes, iconitelor si multe alte lucruri care apar pe ecran. Exista apeluri pentru a desena figuri geometrice, pentru a le colora interiorul, pentru a gestiona paleta de culori folosita, tratarea fonturilor si plasarea iconitelor pe ecran. In cele din urma, exista apeluri pentru lucrul cu tastatura, mouse-ul si alte dispositive de intrare, cum ar fi cele audio, de printare sau alte dispositive de iesire. Pe scurt, Win32 API ( in special partea GUI) este imens si nu am putea nici macar sa incepem sa il descriem in detaliu in acest capitol, asa ca nici nu vom incerca.

Desi Win32 API este disponibil pe Windows 98 (la fel ca si pe sistemele de operare pentru electronice de consum, Windows CE), nu orice versiune de Windows implementeaza toate apelurile si uneori sunt diferente minore. De exemplu, Windows 98 nu are niciun fel de securitate, asa ca acele apeluri API care au legatura cu securitatea returneaza erori pe Windows 98. De asemenea, numele de fisiere din Windows 2000 folosesc caracterul Unicode set, care nu este disponibil pe Windows 98, iar numele de fisiere din Windows 98 nu sunt case sensitive, in timp ce numele de fisiere din Windows 2000 sunt case sensitive (desi unele cautari de nume de fisiere nu sunt case sensitive). Exista, de asemenea, diferente de parametri la unele functii de apel API. Pe Windows 2000, de exemplu, toate coordonatele de ecran date in functii grafice sunt numere pe 32 de biti, iar pe Windows 98 sunt folositi doar cei mai putini semnificativi 16 biti deoarece codul majoritatii subsistemelor grafice este pe 16 biti. Existenta Win32 API pe anumite sisteme de operare diferite face mai usoara transmiterea de programe intre ele, dar din moment ce aceste variatii minore exista, trebuie sa avem grija pentru a realiza transmiterea de programe.

Bibliografie Capitol 6  Silberschat & Galvin – Operating System Concepts 7th edition  Achyut S Godbole – Operating systems  http://msdn.microsoft.com