Windows API: Porovnání verzí

Smazaný obsah Přidaný obsah
m narovnání odkazu - Disk Operating System -> DOS
typografie, stylistika, opravy, redefinice, doplnění, eliminace a aktualizace odkazů
Řádek 1:
'''Windows API''' (neformálně '''WinAPI''') je [[API]] vyvinuté firmou [[Microsoft]] pro [[operační systém]] [[Microsoft Windows]]. Všechny programy v  Microsoft Windows musí nezávisle na použitém [[programovací jazyk|programovacím jazyce]] komunikovat prostřednictvím Windows API, které obsahuje nejen základní funkce, ale i  funkce pro vytváření [[Uživatelské rozhraní|uživatelského rozhraní]] a další.
 
Protože je jádro systémusystémů Microsoft [[Windows typuNT|Windows NT]] [[MikrojádroHybridní jádro|mikrokernelhybridní]], používá se v  programech výhradně [[meziprocesová komunikace]]. Programy nemají k  jádru přístup pomocí [[systémové volání|systémových volání]], jako je to obvyklé v  [[UN*X|unixových]] systémech s  jádrem [[Monolitické jádro|monolitického]] typu.
 
Nízkoúrovňový přístup k  systému Windows, nutný především pro [[ovladač zařízení|ovladače zařízení]], je v  současné verzi Windows poskytován systémem [[Windows Driver Foundation]] nebo [[Native API]].
 
== Komponenty Windows API ==
Funkčnost Windows API lze rozdělit do 8 kategorií:<ref name="msdn-overview">[[Microsoft Developer Network]] (červenec 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winproglibrary/winprog/overview_of_the_windows_apiaa271855(v=vs.asp60).aspx Přehled programování Windows API.]'' získaný 28. srpna 2005</ref>
 
; Základní služby<!--<ref name="msdn-base">[[Microsoft Developer Network]] (červenec 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/base_services.asp Základní Servis.]'' získaný 28. srpna 2005</ref>-->
: Poskytuje přístup k &nbsp;nezbytným zdrojům poskytnutým systémem Windows. Zahrnuje věci jako [[souborový systém]], [[periferie (technika)|periferie]], [[proces (program)|procesy]] a [[vlákno (program)|vlákna]], přístup do registrů Windows a ošetření chyb. Tyto funkce jsou na 16bitových Windows v &nbsp;souborech <tt>kernel.exe</tt>, <tt>krnl286.exe</tt> nebo <tt>krnl386.exe</tt> a na 32bitových Windows v &nbsp;<tt>kernel32.dll</tt> a <tt>advapi32.dll</tt>.
 
; Pokročilé služby
: Zahrnují API pro práci s &nbsp;[[registr Windows|registrem Windows]], vypnutí/restart systému (nebo jeho zrušení), spuštění/zastavení/vytvoření [[služba systému Windows|služeb systému Windows]] a správu uživatelských účtů. Tyto funkce jsou ve 32bitových Windows implementovány v &nbsp;<tt>advapi32.dll</tt>.
 
; [[Graphics Device Interface]] (GDI)<ref name="msdn-gdi">[[Microsoft Developer Network]] (červenec 2005). ''[http://msdn.microsoft.com/library/default.asp?url=cs-cz/library/en-uswindows/winprogdesktop/winprog/graphics_device_interfacedd145203(v=vs.85).aspaspx GraphicsWindows Device Interface.GDI]'' získaný 28. srpna 2005</ref>
: Poskytuje funkce pro výstup grafického obsahu na [[monitor (obrazovka)|monitory]], [[Počítačová tiskárna|tiskárny]] a jiná [[výstupní zařízení]]. Na 16bitových Windows uloženo v &nbsp;<tt>gdi.exe</tt> a, na těch 32bitových Windows v &nbsp;<tt>gdi32.dll</tt>.
 
; Uživatelské Rozhranírozhraní<ref name="msdn-ui">[[Microsoft Developer Network]] (červenec 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winproglibrary/winprogwindows/user_interfacedesktop/aa372390(v=vs.asp85).aspx User Interface.]'' získaný 28. srpna 2005</ref>
: Poskytuje funkce pro tvorbu a řízení počítačových oken a dalších základních prvků jako jsou tlačítka a posuvníky, zpracovává vstup z &nbsp;[[počítačová klávesnice|klávesnice]] a [[počítačová myš|myši]] a jiných funkcí spojených s &nbsp;[[Grafické uživatelské rozhraní|GUI]]. Tato funkční jednotka se na 16bitových Windows nachází v &nbsp;<tt>user.exe</tt> a na těch 32bitových Windows v &nbsp;<tt>user32.dll</tt>. Od [[Windows XP|Windows&nbsp;XP]] se základní prvky nachází v &nbsp;<tt>comctl32.dll</tt>, společně s &nbsp;běžnými prvky (Common Control Library).
 
; Knihovna běžných dialogových oken<ref name="msdn-comdlg">[[Microsoft Developer Network]] (2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winuilibrary/winuiwindows/windowsuserinterfacedesktop/userinput/commondialogboxlibraryms645524(v=vs.85).aspaspx Common Dialog Box Library.]'' získaný 22. září 2005</ref>
: Poskytuje aplikacím standardní [[dialogové okno|dialogová okna]] pro otevření a ukládání souborů, volbu barvy a fontů, apod. Knihovna je na 16bitových Windows uložena v &nbsp;souboru <tt>commdlg.dll</tt>, akdežto na 32bitových Windows v &nbsp;<tt>comdlg32.dll</tt>. Celkově také patří do kategorie ''Uživatelské Rozhranírozhraní''.
 
; Knihovna běžných prvků (Common Control Library)<ref name="msdn-ccl">[[Microsoft Developer Network]] (červenec 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winproglibrary/winprogwindows/common_control_librarydesktop/bb773169(v=vs.asp Common85).aspx Control Library.]'' získán 28. srpna 2005</ref>
: Poskytuje aplikaci přístup k &nbsp;pokročilejším prvkům operačního systému. Zahrnuje věci jako stavový řádek, zobrazení průběhu výpočtu, [[toolbar]]y a [[záložka (GUI)|záložky]]. Knihovna je na 16bitových Windows umístěna v &nbsp;<tt>commctrl.dll</tt> a na 32bitových Windows v &nbsp;<tt>comctl32.dll</tt>. Celkově také patří do kategorie ''Uživatelské Rozhranírozhraní''.
 
; Windows Shell<ref name="msdn-shell">[[Microsoft Developer Network]] (červenec 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winproglibrary/winprogwindows/windows_shelldesktop/bb773177(v=vs.asp85).aspx Windows Shell.]'' získáno 28. srpna 2005.</ref><!--<ref name="msdn-shell2">[[Microsoft Developer Network]] (2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_intro.asp Nadstavba (Shell) Příručka Programátora.]'' získaný 28. srpna 2005</ref>-->
: Umožňuje aplikacím přístup k &nbsp;funkcím poskytovaných shellem Windows. Komponenta je na 16bitových Windows v &nbsp;<tt>shell.dll</tt>, později ve [[Windows 95|Windows&nbsp;95]] v &nbsp;<tt>shell32.dll</tt> a, na 32bitových Windowspak v &nbsp;<tt>shlwapi.dll</tt>. Celkově také patří do kategorie ''Uživatelské Rozhranírozhraní''.
 
; Síťové služby<ref name="msdn-network">[[Microsoft Developer Network]] (červenec 2005). ''[http://msdn.microsoft.com/cs-cz/library/defaulthh831683(v=ws.asp?url=/library/en-us/winprog/winprog/network_services11).aspaspx SíťovéPřehled služby.]'' získánoSíťové vzásady 28.a srpna 2005přístup]''</ref>
: Poskytuje přístup k &nbsp;různým [[Počítačová síť|počítačovým sítím]]. Zahrnuje také [[NetBIOS]], [[Winsock]], [[NetDDE]], [[Remote procedure call|RPC]] a mnoho dalších funkcí.
 
=== Web ===
[[World Wide Web|Webový]] prohlížeč [[Windows Internet Explorer]] poskytuje mnoho API funkcí, které lze považovat za součást Windows API. Internet Explorer je součástí operačních systémů firmy Microsoft od [[Windows 95]] a poskytuje doplňující webové funkce od [[Windows 98|Windows&nbsp;98]]:<!--<ref name="msdn-browser">[[Microsoft Developer Network]] (January 2006); ''[http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/prog_browser_node_entry.asp Programming and reusing the browser]'' získáno 22. ledna 2006.</ref>-->
 
* možnost využití prohlížeče v &nbsp;jiné aplikaci (<tt>shdocvw.dll</tt>) a využití renderovacího jádra [[Trident (jádro)|Trident]]
* servis URL v &nbsp;<tt>urlmon.dll</tt>, který poskytuje COM objekt aplikacím pro [[Syntaktická analýza|analýzu]] URL. Aplikace mohou též poskytovat vlastní URL odkazy ostatním.
* podpora pro vícejazyčné a mezinárodní texty (<tt>mlang.dll</tt>)
* DirectX transformace (sada filtrů pro zpracování obrázků)
* podpora XML (MSXML komponenty)
* přístup k &nbsp;adresáři (Windows Address Book)
 
=== Multimédia ===
Microsoft poskytuje [[DirectX]] API jako součást systému od [[Windows 95|Windows&nbsp;95]] OSR2. DirectX poskytuje podporu, a to nejen pro multimédia a hry:
 
* [[Direct2D]] pro vykreslování (rendering) 2D grafiky, bitmap a textu.<ref>Microsoft Developer Network ''[http://msdn.microsoft.com/en-us/library/windows/desktop/dd370990(v=vs.85).aspx Direct2D (Windows)]''</ref> Zachovávajíc plnou [[Interoperabilita|interoperabilitu]] s&nbsp;GDI/GDI+ i Direct3D, přináší vyšší vizuální kvalitu a hardwarově akcelerované vykreslování.
Microsoft poskytuje [[DirectX]] API jako součást systému od [[Windows 95]] OSR2. DirectX poskytuje podporu pro multimédia a hry:
* [[DirectWrite]] pro vykreslování rozvržených textů a [[glyf]]ů.
* [[Direct3D]] jako alternativu k &nbsp;[[OpenGL]] pro přístup k &nbsp;3D hardwarové akceleraci
* [[DirectDraw]] pro hardwarově akcelerovaný přístup k &nbsp;2D framebufferu. Od DirectX &nbsp;9 je tato komponenta nahrazena Direct3D, které poskytuje obecnější výkonné funkce (2D renderování je podmnožina 3D).
* [[DirectSound]] pro nízkoúrovňový přístup ke zvukovým kartám s &nbsp;hardwarovou akcelerací
* [[DirectInput]] pro komunikaci se vstupními zařízeními jako jsou [[joystick]]y a [[gamepad]]y.
* [[DirectPlay]] pro infrastrukturu her s &nbsp;více hráči. Tato komponenta byla odstraněna v &nbsp;DirectX &nbsp;9 a Microsoft nedoporučuje jejíjeho další využívání pro vývoj her.
* [[Microsoft DirectShow]] pro podporu multimédií, avšak Microsoft nedoporučuje jejíjeho další využívání pro vývoj her. Je srovnatelný s &nbsp;[[framework]]em [[GStreamer]].
* [[DirectMusic]] pro skládání a přehrávání zvukových efektů a hudby. V&nbsp;současnosti se od něj ustupuje.
* [[DirectMusic]]
 
=== Interakce s programy ===
Windows API slouží zejména pro komunikaci programů s &nbsp;operačním systémem. Pro komunikaci programů mezi sebou vyvinul Microsoft sérii technologií, která začala [[Dynamic Data Exchange]] (DDE), které bylo nahrazeno [[Object Linking and Embedding]] (OLE) a později ještě [[Component Object Model]] (COM).
 
=== Nadstavbové knihovny ===
Microsoft vyvinul různé nadstavbové knihovny, které umožňují aplikacím pracovat s &nbsp;nízkoúrovňovými Windows API funkcemi abstraktnějším způsobem. [[Microsoft Foundation Class Library]] (MFC) je nadstavba Windows API pro [[Třída (programování)|třídy]] v &nbsp;[[C++]], která usnadňuje [[objektově orientované programování]] při využívání Windows API. Active Template Library (ATL) je [[Šablona (programování)|šablonově]] orientovaná nadstavba pro COM. [[Windows Template Library]] (WTL) byla vyvinuta jako rozšíření pro ATL a zamýšlena jako odlehčená alternativa k &nbsp;MFC.
 
Další nadstavby vyvinula firma [[Borland]]: [[Object Windows Library]] (OWL) byla vydána jako konkurence k &nbsp;MFC a poskytuje podobnou objektově orientovanou nadstavbu. Nahradila ji [[Visual Component Library]] (VCL), která je napsána v &nbsp;[[Object Pascal]]u a dostupná jak pro [[Delphi]], tak pro [[C++Builder]].
 
Většina aplikačních [[framework]]ů pro Windows je (alespoň částečně) nadstavbou nad Windows API. Proto také [[.NET Framework]] a [[Java (programovací jazyk)|Java]] stejně jako ostatní [[Programovací jazyk|programovací jazyky]] pod Windows jsou (nebo obsahují) nadstavbové knihovny.
 
== Verze ==
Téměř všechny nové verze [[Microsoft Windows]] přinášejí rozšíření nebo změny Windows API,<!--<ref name="win32faq-history">The Iseran Project (1996–2001). ''[http://www.iseran.com/Win32/FAQ/history.html History of the Windows API.]'' získáno 7. října, 2005.</ref>--> avšak název API se s &nbsp;verzemi Microsoft Windows nemění kromě změny z &nbsp;''Win32'' na ''Windows API'', které nyní zahrnuje všechny starší i všechny budoucí verze.<ref name="msdn-overview2">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/overview_of_the_windows_api.asp Overview of the Windows API.]'' Retrieved August 28, 2005.</ref>
 
;Win16: Win16 je API pro první 16bitové verze [[Microsoft Windows]]. Původně byla nazývána ''Windows API'', avšak byla později byla [[Retronym|retronymicky]] přejmenována na ''Win16'' kvůli odlišení od nové 32bitové verze ''Windows API''. Funkce Win16 API jsou obsaženy zejména v &nbsp;základních souborech OS: ''<tt>kernel.exe''</tt> (nebo ''<tt>krnl286.exe''</tt> nebo ''<tt>krnl386.exe''</tt>), ''<tt>user.exe''</tt> a ''<tt>gdi.exe''</tt>. I &nbsp;přes [[Přípona souboru|příponu]] <tt>[[EXE|.exe]]</tt> se jedná o &nbsp;[[dynamická knihovna|dynamické knihovny]].
Téměř všechny nové verze [[Microsoft Windows]] přinášejí rozšíření nebo změny Windows API,<ref name="win32faq-history">The Iseran Project (1996–2001). ''[http://www.iseran.com/Win32/FAQ/history.html History of the Windows API.]'' získáno 7. října, 2005.</ref> avšak název API se s verzemi Microsoft Windows nemění kromě změny z ''Win32'' na ''Windows API'', které nyní zahrnuje všechny starší i všechny budoucí verze.<ref name="msdn-overview2">[[Microsoft Developer Network]] (July 2005). ''[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/overview_of_the_windows_api.asp Overview of the Windows API.]'' Retrieved August 28, 2005.</ref>
 
;Win32: Win32 je 32bitové API pro novou řadu [[Windows NT|Windows&nbsp;NT]]. Funkce jsou stejně jako u Win16 implementovány v &nbsp;základních systémových DLL <tt>[[kernel32.dll]]</tt>, <tt>[[user32.dll]]</tt> a <tt>[[gdi32.dll]]</tt>. Ve [[Windows 95|Windows&nbsp;95]] se původně hovořilo o &nbsp;''Win32c'' (písmeno „c“ je {{Vjazycez&nbsp;[[Angličtina|en}}anglického]] {{Cizojazyčně|en|''compatibility}}''), avšak název byl posléze firmou Microsoft opuštěn. Od verze [[Windows NT 4.0|Windows&nbsp;NT 4.0]] jsou Win32 volání vykonávány v &nbsp;uživatelském režimu modulem <tt>[[csrss.exe]]</tt> (Client/Server Runtime Server Subsystem) a v &nbsp;jaderném režimu modulem <tt>[[win32k.sys]]</tt>.
;Win16: Win16 je API pro první 16bitové verze [[Microsoft Windows]]. Původně byla nazývána ''Windows API'', avšak byla později přejmenována na ''Win16'' kvůli odlišení od nové 32bitové verze ''Windows API''. Funkce Win16 API jsou obsaženy zejména v základních souborech OS: ''kernel.exe'' (nebo ''krnl286.exe'' nebo ''krnl386.exe''), ''user.exe'' a ''gdi.exe''. I přes [[Přípona souboru|příponu]] <tt>EXE</tt> se jedná o [[dynamická knihovna|dynamické knihovny]].
 
;Win32s: Win32s bylaje [[podmnožina]] rozhraní Win32 určená pro [[Windows 3.01x]] (písmeno „s“ je {{Vjazyce|en}}z&nbsp;angl. {{Cizojazyčně|en|''subset}}'')
;Win32: Win32 je 32bitové API pro novou řadu [[Windows NT]]. Funkce jsou stejně jako u Win16 implementovány v základních systémových DLL [[kernel32.dll]], [[user32.dll]] a [[gdi32.dll]]. Ve [[Windows 95]] se původně hovořilo o ''Win32c'' (písmeno „c“ je {{Vjazyce|en}} {{Cizojazyčně|en|compatibility}}), avšak název byl posléze firmou Microsoft opuštěn. Od verze [[Windows NT 4.0]] jsou Win32 volání vykonávány v uživatelském režimu modulem [[csrss.exe]] (Client/Server Runtime Server Subsystem) a v jaderném režimu modulem [[win32k.sys]].
 
;Win32 pro 64bitové Windows: Win32 pro 64bitové Windows (dříve označované ''Win64'') je API pro 64bitové verze ([[Windows XP Professional x64 Edition|Windows&nbsp;XP Professional x64 Edition]], 64bitové verze [[Windows Server 2003]] a verze pro [[Itanium]] a jejich následovníci). Všechny 64bitové verze jsou totožnou [[Platforma (informatika)|platformou]] s &nbsp;Windows &nbsp;NT, takže lze po kontrole typů adresových ukazatelů (a jejich aritmetiky) použít 32bitové zdrojové kódy (64bitová verze API nepřináší žádné další specifické funkce).
;Win32s: Win32s byla [[podmnožina]] rozhraní Win32 určená pro [[Windows 3.0]] (písmeno „s“ je {{Vjazyce|en}} {{Cizojazyčně|en|subset}})
 
;Win32 pro 64bitové Windows: Win32 pro 64bitové Windows (dříve označované ''Win64'') je API pro 64bitové verze ([[Windows XP Professional x64 Edition]], 64bitové verze [[Windows Server 2003]] a verze pro [[Itanium]] a jejich následovníci). Všechny 64bitové verze jsou totožnou [[Platforma (informatika)|platformou]] s Windows NT, takže lze po kontrole typů adresových ukazatelů (a jejich aritmetiky) použít 32bitové zdrojové kódy (64bitová verze API nepřináší žádné další specifické funkce).
 
== Další implementace ==
Přestože je implementace Windows API chráněna [[Autorské právo|autorským právem]] (copyright), je všeobecně respektován precedent,<ref>[http://www.eetimes.com/news/design/showArticledocument.jhtmlasp?articleIDdoc_id=2018015791166905 Ruling thatfor copyrightGreen lawsHills doclears notway extendfor to the functionalitycopying of application programming interfaces, an arbitration panel threw out an injunction sought by Express Logic against sales of Green Hills Software's real-time operating system.APIs]</ref> který umožňuje ostatním dodavatelům emulovat Windows pomocí poskytnutí identického API bez porušení autorských práv.
 
;Wine: [[Wine]] je pokus[[Svobodný software|free]] a [[Otevřený software|open-source]] softwarová ovrstva poskytnutíposkytující Win32 API vrstvy pro [[UN*X|unixové]] [[Platforma (informatika)|platformy]] umožňující běh Win32 aplikací.
;ReactOS: [[ReactOS]] je volně šiřitelný operační systém, který spolupracujesi sklade projektemza Wine.cíl Implementuje[[Zpětná celýkompatibilita|binární operační systém včetně kompatibilitykompatibilitu]] s&nbsp;programy a [[Ovladač zařízení|ovladači zařízení]] vytvořenými pro řadu Windows&nbsp;NT.
;HX DOS Extender: [[HX DOS Extender]] je emulace WIndows APiAPI pro běh jednoduchých Windows programů na [[Příkazový řádek|příkazovém řádku]] systému [[DOS|DOS]].
;Odin: [[Odin (software)|Odin]] je projekt proumožňující emulaceběh Win32 vaplikací v&nbsp;[[OS/2]]. Též usnadňuje portování Win32 aplikací na OS/2 tak, že poskytuje vlastní Odin32 API, což je implementace Win32 API v&nbsp;OS/2.
 
== Volání API funkcí ==
Ve Windows je několik desítek knihoven (<tt>kernel32.dll</tt>, <tt>user32.dll</tt>, <tt>imagehlp.dll</tt>, …), které na zavolání vykonají funkce API. Jsou to celky, na které je možné v &nbsp;různých programech, tzv. „[[debugger]]ech“, nastavovat ''breakpointy'' (zarážky). Toho využívají například [[cracker|crackeři]].
 
V [[Assembler]]u probíhá volání API funkcí Windows instrukcí ''call''<tt>tcall</tt>, před ní pomocí instrukce ''<tt>push''</tt> musí proběhnout uložení hodnot. V &nbsp;některých assemblerech (<tt>[[MASM]]</tt>) je možné je volat pomocí maker, např.:
Ve Windows je několik desítek knihoven (<tt>kernel32.dll</tt>, <tt>user32.dll</tt>, <tt>imagehlp.dll</tt>, …), které na zavolání vykonají funkce API. Jsou to celky, na které je možné v různých programech, tzv. „[[debugger]]ech“, nastavovat ''breakpointy'' (zarážky). Toho využívají například [[cracker|crackeři]].
 
V [[Assembler]]u probíhá volání API funkcí Windows instrukcí ''call'', před ní pomocí instrukce ''push'' musí proběhnout uložení hodnot. V některých assemblerech ([[MASM]]) je možné je volat pomocí maker, např.:
 
invoke MessageBox, NULL, offset text, offset titulek, MB_OK