Visual C++ 5 Biblija

U ovom delu


Poglavlje 1

Programsko okruzenje Windows


Poglavlje 2

Komponente i strukture podataka operativnog sistema


Poglavlje 3

Visual C++ programski alati


Arhitektura sistema


Razumevanje API-ja (Application Programming Interfaces)

Istorija i karakteristike Win16 API-ja

Razvojni ciljevi i mogucnosti Win32 API-ja

Alati za kompatibilnost izmedju Win16 i Win32


Programsko okruzenje Windows


Programsko okruzenje Win16

Tabela 1-1     Platforme koje podrzavaju Win16 API
Procesor Operativni sistem
Intel x86 (80386 i visi) Izvorna binarna podrska na Windowsu 3.0, Windowsu 95 i Windowsu NT
Silicon Graphics MIPS R4000 Emulacija Win16 i Intel x86 na Windowsu NT 3.1 i 3.5
Digital Alpha Emulacija Win16 i Intel x86 na Windowsu NT 3.1 i 3.5
Motorola Power PC 601 Emulacija Win16 i Intel x86 na Windowsu NT 3.1 i 3.5
HP Workstation i Sun SPARC Binarna emulacija na HP-UX i SunOS sa WABI (Windows Application Binary Interface) emulacijom
(razni) Kompatibilnost izvornog koda na UNIX-u sa programom Wind/U, proizvodjaca Bristol Technologies
Intel x86 (80386 i visi) Izvorne masinske instrukcije i emulacija Win16 API-ja na OS/2 2.x
(razni) Emulacija Win16 i Intel x86 od strane Insignia SoftWindowsa na Macintosh System 7 i na UNIX implementacijama na IRIS, NextStep, HP, DEC, SUN i SGI
Intel x86 Operativni sistem Linux sa programom WINE (Windows Emulator); dostupno samo na Intelovim verzijama Linuxa


Programsko okruzenje Win32


Win16 kompatibilnost


32-bitni rad


Prenosivost

Tabela 1-2     Platforme koje podrzavaju Win32 API
Procesor Operativni sistem
Intel x86 (80386 i visi)  Windows 3.1 sa Win32s koji je podskup Win32 API-ja
Intel x86 (80386 i visi)  Windows 95 sa vecinom GUI delova Win32. Windows NT obezbedjuje kompletnu implementaciju.
Silicon Graphics MIPS R4000   Windows NT
Digital Alpha Windows NT
Motorola PowerPC 601  Windows NT
Motorola 68xxx  WINGS na Macintosh System 7
(razni)  UNIX sa Bristol Wind/U

Win32s Windows 3.1 podrska za Win32 API

Tabela 1-3     Win32 osobine koje Win32s ne podrzava   
Osobina Opis
GDI prosirenja 32-bitni GDI ima takve mogucnosti crtanja kao sto su putanje, Bezijeove krive i rotacija bit mapa.
Podrska za vise niti API-ji za Win32 niti i procese nisu podrzani od strane Win32s, jer je Windows 3.1 jednonitno okruzenje.
API-ji za mreze Imenovani kanali i mesta za elektronsku postu nisu podrzani, iako Socket API (API za prikljucke) jeste.
Zastita Win32 prosirenja za zastitu podrzavaju diskrecioni pristup Windowsa NT, koji nije dostupan pod Windowsom 3.1 i, zbog toga, ni pod Win32s i Windowsom 95.
Snimanje na traku Win32 podrska za snimanje na traku ne postoji.
Poziv udaljenih procedura Podrska za kontrolu procesa sa razlicitih racunara. Komunikacija kroz mrezu nije obezbedjena (iako je RPC sa strane klijenta podrzan).
Konzolni API Podrska za pravljenje programa zasnovanih na znacima nije obezbedjena. U Windowsu 3.1, ovo je obezbedjeno od strane MS-DOS API-ja.

Tabela 1-4     Prosirenja Windowsa 3.1 od strane Win32s
Osobina Opis
32-bitno adresiranje Win32 procesi pristupaju cistom, 32-bitnom adresnom prostoru umesto segmentiranom adresnom prostoru kao sto je slucaj u Win16.
32-bitna heap memorija Win32 podrzava procedure za alociranje heap memorije kao sto su HeapAlloc i HeapFree
Upravljanje strukturiranim izuzecima Ovu osobinu Win32 API-ja takodje podrzava Win32s. Upravljanje strukturiranim izuzecima vam pomaze da napravite robusniji softver, pojednostavljujuci proces otkrivanja izuzetaka tj. hardverskih i softverskih gresaka.
Deljena memorija Win32s obezbedjuje neku vrstu podrske za medjuprocesno deljenje memorije.
Virtuelna memorija Odredjene Win32 funkcije i mogucnosti za virtuelnu memoriju su obezbedjene da bi dozvolile vecu kontrolu nad programskim adresnim prostorom.
Ulaz/izlaz podataka Win32s obezbedjuje funkcije za ulaz/izlaz podataka kao zamenu za MS-DOS funkcije na koje se Win16 programi oslanjaju, ali koje ne mogu koristiti Win32 programi.
Univerzalnost Win32s dozvoljava Win32 programu da poziva Win16 DLL-ove.

Rezime

Operativni sistemi i API-ji
Vazno je jasno razumeti razliku izmedju operativnog sistema i API-ja (engl. Application Programming Interface). Za vecinu programera ova dva pojma su sinonimi, jer drugi operativni sistemi imaju samo jedno programsko okruzenje. Na primer, operativni sistem MS-DOS ima programsko okruzenje, kao sto ga imaju i razlicite verzije operativnog sistema UNIX. Medjutim, jos od svoje prve verzije Windows je podrzavao vise od jednog programskog okruzenja. Na primer, Windows 1.01 je dozvoljavao rad i Win16 i MS-DOS programa.Operativni sistem je proizvod. Moze doci na disketama ili na CD-u ili moze biti vec instaliran na disku racunarskog sistema. Jedan operativni sistem moze podrzavati vise programskih okruzenja. Na primer, Windows NT podrzava pet programskih okruzenja: MS-DOS, Win16, Win32, POSIX (Portable Operating System Interface) i API za OS/2 (samo na Intel x86 implementacijama). Windows 95, s druge strane, podrzava tri programska okruzenja: MS-DOS, Win16 i Win32.Sa razlicitim implementacijama Windowsa, data izvrsna datoteka uglavnom moze pozvati samo jedno programsko okruzenje. Na primer, program CALC.EXE ne moze da poziva i Win16 i Win32 API funkcije. Cak i pod Windowsom NT, sa podrskom za POSIX i OS/2 okruzenje, izvrsna datoteka moze raditi samo sa jednim API-jem. Za vreme ucitavanja programa, program zaduzen za ucitavanje povezuje izvrsnu datoteku sa odgovarajucim API-jem.Win16 je 16-bitni API koji je napravljen za 16-bitne procesore i oslanja se na 16-bitne vrednosti. Win32 je 32-bitni API napravljen za tekucu generaciju 32-bitnih procesora i oslanja se na 32-bitne vrednosti (sa povremenim koriscenjem 64-bitnih vrednosti.) Uglavnom, Microsoft se trudi da obezbedi podrsku za oba okruzenja u svim svojim tekucim operativnim sistemima. Iako je Win16 stekao svu slavu u proslosti, Microsoft se trudi da nagovori strucnjake za razvoj da njihov izbor bude Win32 API.