Windows Application Programming Interface
Aus New TuxBoxWiki
Das Windows Application Programming Interface (kurz: WinAPI; zu dt. etwa: Windows-Anwendungs-Programmierungs-Schnittstelle) ist eine Programmierschnittstelle und Laufzeitumgebung, welche Windows-Programmierern bereitsteht, um Anwendungsprogramme für Windows-Betriebssysteme zu erstellen.
Inhaltsverzeichnis |
[bearbeiten] Details
Die Funktionen der WinAPI sind ausschließlich in der Programmiersprache C geschrieben und können von allen Windows-Programmierern im selbst erstellten Quelltext aufgerufen werden. Sie befinden sich in Bibliotheken, den sogenannten DLL-Dateien, wie beispielsweise kernel32.dll, user32.dll und gdi32.dll.
In Programmiersprachen, wie zum Beispiel C, C++ oder Delphi, wird die WinAPI immer verwendet, wenn Windows-Anwendungen geschrieben werden, obwohl der Programmierer sie eventuell direkt im Quelltext gar nicht aufgerufen hat. Windows NT/2000 stellt hierfür eine native API zur Verfügung, die sowohl für im Kernel-Mode, als auch im User-Mode laufenden Programmen eine Programmierschnittstelle offenbart. Diese Schnittstellen sind Bestandteil des Betriebssystemkerns, welcher letztenendes alle hardwarenahen Operationen mit und an der Hardware durchführt. Die objektorientierten Bibliotheken, wie die MFC-Bibliothek und das .NET-Framework, sind eine Alternative zur direkten Nutzung der Windows API. Hierbei werden die nativen Methoden der Windows API gekapselt und ermöglichen auf diese Art und Weise eine bequemere objektorientierte Handhabung der zur Verfügung stehenden Funktionen. Viele von Programmen ausgeführte Aktionen, seien es I/O-Operationen, Windows-Dialoge oder Speicherverwaltung wären ohne die Windows API nur sehr eingeschränkt durchführbar. Systemnaher Zugriff auf das Windows-Betriebssystem, welcher hauptsächlich von Gerätetreibern benötigt wird, wird mithilfe des WDM (Abkürzung für Windows Driver Model) unter allen Windows NT Versionen realisiert.
[bearbeiten] Versionen
Beinahe mit jeder neuen Version von Microsoft Windows wurde die Windows API erweitert und abgeändert. Der Name der API wurde dennoch zwischen den Versionen beibehalten und nur leicht verändert um gravierende Unterschiede zwischen den Windows-Architekturen und den Plattformen zu verdeutlichen. So wurde der ursprüngliche Begriff WinAPI, der in den 16-Bit Versionen von Windows vorherrschte, um die Zahl 32 zu Win32 API erweitert um dem bedeutsamen Sprung zur 32-Bit Architektur Rechnung zu zollen. Dennoch wird heute der allgemeine Begriff Windows API verwendet der sowohl die alte API als auch die neue mit einschließt.
[bearbeiten] Win16
Win16 war die erste API, für die 16-Bit Versionen von Microsoft Windows. Gängiger Begriff war schlicht Windows API, wurde aber später umbenannt in Win16 um sie von der neueren Windows API der 32-Bit Architektur unterscheiden zu können. Die Funktionen der Win16 API liegen hauptsächlich im Kern des OS: kernel.exe (oder krnl286.exe oder krnl386.exe), user.exe und gdi.exe. Trotz der Dateiendung exe sind diese Dateien tatsächlich sogenannte Programmbibliotheken.
[bearbeiten] Win32
Win32 ist die 32-Bit API für moderne Versionen von Windows. Die API besteht aus Funktionen die, wie bei Win16, in Programmbibliotheken implementiert sind. Die Kern-DLLs von Win32 sind kernel32.dll, user32.dll und gdi32.dll. Win32 wurde mit Windows NT eingeführt. Die Version von Win32 die mit Windows 95 ausgeliefert wurde, lief ursprünglich unter dem Namen Win32c, wobei das 'c' für Kompatibilität (engl. compatibility) stand, aber dieser Ausdruck wurde später von Microsoft zugunsten von Win32 wieder verworfen. In Windows NT und seinen Nachfolgern (eingeschlossen alle modernen Windows Versionen), werden Win32-Aufrufe durch zwei Module ausgeführt, csrss.exe (engl. Client/Server Runtime Server Subsystem) im User-Modus und win32k.sys im Kernel-Modus. Dies dient dem Schutz des Betriebssystems und verhindert, dass laufende Anwendungen des Benutzers kritische Daten des Betriebssystems modifizieren oder darauf zugreifen können. Die Modi werden direkt vom Prozessor zur Verfügung gestellt.
[bearbeiten] Win32s
Win32s ist eine Erweiterung für die Windows 3.1x-Familie von Microsoft Windows die einen Teil der Win32 API für diese Systeme implementierte. Das „s“ steht für Teilmenge (engl.: „subset“).
[bearbeiten] Win64
Win32 für 64-Bit-Windows, auch bekannt unter dem Namen Win64, ist die Version der API die für 64-Bit-Versionen von Windows – namentlich Windows XP „x64 Edition“, Windows Server 2003 „x64 Edition“ (für AMD64 Prozessoren), Windows XP 64-Bit Edition und Windows Server 2003 für Itanium-Serien - entworfen wurde. Bei den 64-Bit Versionen handelt es sich nur um zwei weitere unterstützte Plattformen innerhalb der Windows-NT-Architektur, so dass sowohl die 32-Bit als auch die 64-Bit Version einer Anwendung aus demselben Quellcode kompiliert werden können. Alle Zeiger auf den Speicher umfassen standardmäßig 64-Bit, weshalb der Quellcode gegebenenfalls auf Kompatibilität überprüft werden muss. Es wurden allerdings keine neuen Funktionen zur API hinzugefügt.
[bearbeiten] .NET Framework
Die .NET Framework API (früher WinFX genannt), ist eine neue objektorientierte API, die die native Windows API erweitert und umschließt. Mit der Version 3.0 wurde das Framework weitestgehend von der nativen WinAPI abgekoppelt, so dass ein großer Teil des Frameworks mittlerweile zu 100% aus verwalteten Code besteht und nicht mehr nur ein einfacher Wrapper der nativen WinAPI ist. Die API wurde unter anderem entworfen, um zukünftigen Anwendungen einen einfachen verwalteten Zugriff auf die zahlreichen neuen Features in Windows Vista zu geben. .NET-Anwendungen laufen als so genannter Managed Code (verwalteter Code) unter einer Laufzeitumgebung namens Common Language Runtime (CLR), eine virtuelle Maschine, die im Sinne der Abstraktion, keine direkten Maschinenbefehle ausführt sondern stattdessen das aus Bytecode bestehende Programm in Maschinencode umwandelt, bevor dieses dann vom Prozessor ausgeführt werden kann. Der GUI-API-Satz für WinFX, der unter dem Codenamen Avalon läuft, wird Windows Presentation Foundation genannt und löst die alte GDI- und GDI+-API ab. Sie setzt direkt auf DirectX auf und benötigt leistungsfähige Grafikkarten, um alle Effekte angemessen darstellen zu können.
[bearbeiten] Weitere APIs
Überdies haben frühere Version von Windows auch die APIs anderer Betriebssysteme mitgebracht. Windows NT 3.1 sowie Windows NT 4.0 waren noch mit einer leicht abgespeckten Version der OS/2- und einer POSIX-API ausgestattet. Dadurch war es in eingeschränkter Form möglich, auch Programme auszuführen, welche eigentlich für OS/2- bzw. Unix-Systeme kompiliert waren. Möglich wurde dies durch eine tiefer liegende zweite API-Schicht – das "Windows-native-API". Auf die Funktionen dieser API – die Namen beginnen alle mit „Zw..“ – stößt man z.B. wenn man Betriebssystem DLLs mit einem Debugger durchläuft. Die Windows-API-Funktionen von Win32 usw. rufen zum Teil wiederum Funktionen der Native-API auf, ebenso wie das OS/2- und POSIX-Subsystem. Inzwischen hat Microsoft die anderen APIs entfernt, der prinzipielle Mechanismus ist aber auch in Windows Vista noch unverändert. Mit der .NET-API wurde sogar eine dritte, nun aber wesentlich modernere objektorientierte Schicht über die Win32- und Windows-native-API gesetzt.
[bearbeiten] Programmbeispiel
Folgender Quelltext implementiert ein Programm mit Hilfe der WinAPI, welches ein Fenster erzeugt und den Text „Hello World!“ ausgibt. Das Programm ist in der Programmiersprache C implementiert.
sh: highlight: command not found
Die gewünschte Sprache muss wie folgt definiert werden: <source lang="html">...</source>
Unterstützte Sprachen für die Syntax-Hervorhebung:
(Fehler beim Laden der Sprachenliste)[bearbeiten] Weblinks
- Dokumentation der Win32-API (Microsoft) (englisch)
- Windows32 API-Deklarationen für Basic-Sprachen und ApiHelper-Programm
- KPD AllAPI Webseite (englisch)be-x-old:Windows API
cs:Windows API da:Windows API el:Διεπαφή Windows en:Windows API es:API de Windows fr:Windows API it:Windows API ja:Windows API lt:Windows API ms:Windows API pl:Windows API ru:Windows API zh:Windows API

