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ím jazyce komunikovat prostřednictvím Windows API, které obsahuje nejen základní funkce, ale i funkce pro vytváření uživatelského rozhraní a další.
Protože je jádro systémů Microsoft Windows NT hybridní, používá se v programech výhradně meziprocesová komunikace. Programy nemají k jádru přístup pomocí systémových volání, jako je to obvyklé v unixových systémech s jádrem monolitického typu.
Nízkoúrovňový přístup k systému Windows, nutný především pro ovladače zařízení, je v současné verzi Windows poskytován systémem Windows Driver Foundation nebo Native API.
Funkčnost Windows API lze rozdělit do 8 kategorií:[1]
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:
Microsoft poskytuje DirectX API jako součást systému od Windows 95 OSR2. DirectX poskytuje podporu, a to nejen pro multimédia a hry:
Windows API slouží zejména pro komunikaci programů s 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).
Microsoft vyvinul různé nadstavbové knihovny, které umožňují aplikacím pracovat s nízkoúrovňovými Windows API funkcemi abstraktnějším způsobem. Microsoft Foundation Class Library (MFC) je nadstavba Windows API pro třídy v C++, která usnadňuje objektově orientované programování při využívání Windows API. Active Template Library (ATL) je šablonově orientovaná nadstavba pro COM. Windows Template Library (WTL) byla vyvinuta jako rozšíření pro ATL a zamýšlena jako odlehčená alternativa k MFC.
Další nadstavby vyvinula firma Borland: Object Windows Library (OWL) byla vydána jako konkurence k MFC a poskytuje podobnou objektově orientovanou nadstavbu. Nahradila ji Visual Component Library (VCL), která je napsána v Object Pascalu 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 stejně jako ostatní programovací jazyky pod Windows jsou (nebo obsahují) nadstavbové knihovny.
Téměř všechny nové verze Microsoft Windows přinášejí rozšíření nebo změny Windows API, 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.[10]
Přestože je implementace Windows API chráněna autorským právem (copyright), je všeobecně respektován precedent,[11] který umožňuje ostatním dodavatelům emulovat Windows pomocí poskytnutí identického API bez porušení autorských práv.
Ve Windows je několik desítek knihoven (kernel32.dll, user32.dll, imagehlp.dll, …), které na zavolání vykonají funkce API. Jsou to celky, na které je možné v různých programech, tzv. „debuggerech“, nastavovat breakpointy (zarážky). Toho využívají například crackeři.
V Assembleru probíhá volání API funkcí Windows instrukcí tcall, 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