www.wikidata.de-de.nina.az
Das Windows Application Programming Interface kurz WinAPI englisch fur Windows Anwendungs Programmierschnittstelle ist eine Programmierschnittstelle und Laufzeitumgebung zur Erstellung von Anwendungsprogrammen fur Windows Betriebssysteme Inhaltsverzeichnis 1 Einzelheiten 2 Versionen 2 1 Win16 2 2 Win32 2 3 Win32s 2 4 Win64 2 5 NET Framework 2 6 Weitere APIs 2 7 Implementierungen ausserhalb von Windows 3 Programmbeispiel 4 Literatur 5 Weblinks 6 EinzelnachweiseEinzelheiten BearbeitenDie Funktionen der WinAPI sind ausschliesslich in den Programmiersprachen C und Assembler geschrieben und konnen von Windows Programmierern im selbst erstellten Quelltext verwendet werden Sie befinden sich in dynamischen Bibliotheken den sogenannten DLL Dateien beispielsweise kernel32 dll user32 dll und gdi32 dll und sind Bestandteil des Betriebssystems Die WinAPI abstrahiert die nativen Funktionen des Betriebssystems die durch die ntdll dll exportiert und im Windows Kernel ntoskrnl exe implementiert sind Dies ermoglicht es Microsoft die Implementierung der WinAPI zu modifizieren ohne deren Funktionsweise zu andern Die WinAPI wird immer verwendet wenn native Windows Anwendungen geschrieben werden obwohl der Programmierer sie eventuell direkt im Quelltext gar nicht aufgerufen hat Die Aufrufe der API werden durch eine Laufzeitbibliothek gekapselt die ihrerseits Funktionen der Windows API aufrufen Windows NT 2000 hat eine native API die sowohl fur im Kernel Mode als auch fur im User Mode laufende Programme eine Programmierschnittstelle bereitstellt Diese Schnittstellen sind Bestandteil des Betriebssystemkerns der letzten Endes alle hardwarenahen Operationen mit und an der Hardware durchfuhrt 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 ermoglichen auf diese Art und Weise eine bequemere objektorientierte Handhabung der zur Verfugung stehenden Funktionen Viele von Programmen ausgefuhrte Aktionen seien es I O Operationen Windows Dialoge oder Speicherverwaltung waren ohne die Windows API nur sehr eingeschrankt durchfuhrbar Systemnaher Zugriff auf das Windows Betriebssystem der hauptsachlich von Geratetreibern benotigt wird wird mithilfe des Windows Driver Model WDM unter allen Windows NT Versionen realisiert Versionen BearbeitenBeinahe mit jeder neuen Version von Windows wurde die Windows API erweitert und abgeandert Der Name der API wurde dennoch zwischen den Versionen beibehalten und nur leicht verandert um gravierende Unterschiede zwischen den Windows Architekturen und den Plattformen zu verdeutlichen So wurde der ursprungliche 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 deutlich zu machen Dennoch wird heute der allgemeine Begriff Windows API verwendet der sowohl die alte API als auch die neue miteinschliesst Win16 Bearbeiten Win16 war die erste API fur die 16 Bit Versionen von Windows Gangiger Begriff war schlicht Windows API wurde aber spater umbenannt in Win16 um sie von der neueren Windows API der 32 Bit Architektur unterscheiden zu konnen Die Funktionen der Win16 API liegen hauptsachlich im Kern des Betriebssystems kernel exe oder krnl286 exe oder krnl386 exe user exe und gdi exe Trotz der Dateiendung exe sind diese Dateien tatsachlich sogenannte Programmbibliotheken Win32 Bearbeiten Win32 ist die 32 Bit API fur 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 eingefuhrt Die Version von Win32 die mit Windows 95 ausgeliefert wurde lief ursprunglich unter dem Namen Win32c wobei das c fur Kompatibilitat englisch compatibility stand aber dieser Ausdruck wurde spater von Microsoft zugunsten von Win32 wieder verworfen In Windows NT und seinen Nachfolgern eingeschlossen alle modernen Windows Versionen werden Win32 Aufrufe durch zwei Module ausgefuhrt csrss exe englisch Client Server Runtime 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 konnen Die Modi werden direkt vom Prozessor zur Verfugung gestellt Obwohl auch Windows CE eine Win32 ahnliche API enthalt gibt es tiefgreifende Unterschiede 1 die Portierungen von Quellcode in der Realitat meist aufwandig gestalten Win32s Bearbeiten Win32s ist die 32 Bit API fur die Windows 3 1x Familie und als solche die 32 Bit Erweiterung 2 fur die ansonsten 16 bittigen Betriebssysteme Das s steht fur Teilmenge englisch subset Dabei wurden die Funktionsbibliotheken aus Windows NT nicht komplett ubernommen sondern lediglich eine Auswahl daraus so ist beispielsweise MS Office 97 unter Windows NT 3 51 lauffahig nicht jedoch unter Windows 3 1x In Kombination mit Grafikschnittstellen wie OpenGL oder Video for Windows sollte damit jedoch bis zum Erscheinen von Windows 95 ein ausreichender Standard fur Heimanwender gesetzt werden Sie wurde mehrmals angepasst und in hoheren Versionsnummern erganzt Die letzte Version war Version 1 30c 3 Fur die Nutzung der Win32s API ist in Windows 3 x der Enhanced Mode erforderlich Win64 Bearbeiten Win32 fur 64 Bit Windows auch bekannt unter dem Namen Win64 ist die Version der API die fur 64 Bit Versionen von Windows namentlich Windows XP x64 Edition Windows Server 2003 x64 Edition fur AMD64 Prozessoren und Windows Server 2003 fur Itanium Serien entworfen wurde Bei den 64 Bit Versionen handelt es sich nur um zwei weitere unterstutzte 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 konnen Alle Zeiger auf den Speicher sind standardmassig 64 Bit gross weshalb der Quellcode gegebenenfalls auf Kompatibilitat uberpruft werden muss Obwohl keine neuen Funktionen zur API hinzugefugt wurden gibt es Unterschiede zwischen Win32 und Win64 Deshalb wird auf 64 Bit Systemen fur 32 Bit Anwendungen durch eine Abstraktionsebene namens WOW64 eine zu Win32 kompatible API bereitgestellt NET Framework Bearbeiten Die NET Framework API fruher WinFX genannt ist eine neue objektorientierte API die die native Windows API erweitert Die API wurde unter anderem entworfen um zukunftigen Anwendungen einen einfachen verwalteten Zugriff auf die zahlreichen neuen Features in Windows Vista zu geben NET Anwendungen laufen als sogenannter Managed Code verwalteter Code unter einer Laufzeitumgebung namens Common Language Runtime CLR einer virtuellen Maschine die im Sinne der Abstraktion keine direkten Maschinenbefehle ausfuhrt sondern stattdessen das aus Bytecode bestehende Programm in Maschinencode umwandelt bevor dieses dann vom Prozessor ausgefuhrt werden kann Der GUI API Satz fur WinFX der unter dem Codenamen Avalon lauft wird Windows Presentation Foundation genannt und lost die alte GDI und GDI APIs ab Sie setzt direkt auf DirectX auf und benotigt Grafikkarten mit Hardwarebeschleunigung um alle Effekte angemessen darstellen zu konnen Weitere APIs Bearbeiten Uberdies haben fruhere Versionen 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 eingeschrankter Form moglich auch Programme auszufuhren welche eigentlich fur OS 2 oder Unix Systeme kompiliert waren Moglich wurde dies durch eine tiefer liegende zweite API Schicht die weitestgehend undokumentierte native API Auf die Funktionen dieser API stosst man z B wenn man Betriebssystem DLLs mit einem Debugger durchlauft 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 unverandert Mit der NET API wurde sogar eine dritte nun aber wesentlich modernere objektorientierte Schicht uber die Win32 API und die Native API gesetzt Implementierungen ausserhalb von Windows Bearbeiten nbsp Wine und das Win32 64 API in verschiedenen Betriebssystemen Neben der in aktuellen Windows Versionen enthaltenen Win32 64 API von Microsoft gibt es auch Varianten fur andere Betriebssysteme Diese Nachbildungen dienen dazu Windows Anwendungsprogramme ohne Windows Betriebssystem zu nutzen Aus rechtlichen Grunden sind meist nicht alle Funktion der original API vorhanden was die Kompatibilitat mit Anwendungsprogrammen einschranken kann Da die wenigsten Anwendungsprogramme alle Funktionen der Win32 64 API benotigen sind viele aber trotzdem voll nutzbar Beispiele von Win32 Implementierungen Wine Ein Open Source Projekt mit dem Ziel eine vollstandige Win32 und Win64 API fur Linux und Unix artige Betriebssysteme zu erstellen CrossOver Eine kommerzielle Erweiterung von Wine Cedega fruher WineX Eine nahezu komplette kommerzielle Win32 und DirectX Implementation mit dem Ziel Windows Spiele unter Linux lauffahig zu machen Darwine Eine Wine Portierung fur macOS Odin Wine32 API fur OS 2 Proton Eine auf Wine basierende Software mit dem Ziel Windows Spiele auf anderen Plattformen auszufuhren ReWind ReactOS Verwendet einen Teil der Wine Bibliotheken um sich doppelte Entwicklungsarbeit zu sparen HX DOS Extender Macht Win32 Anwendungen unter DOS lauffahig Wabi Windows Application Binary Interface ein Win16 API Projekt von Sun Microsystems aus den fruhen 1990er Jahren Das Mono Projekt bietet eine Entwicklungsumgebung und eine API fur NET Anwendungen in Linux und Unix artigen Betriebssystemen Mono orientiert sich dabei vor allem am Common Language Infrastructure Standard Programmbeispiel BearbeitenFolgender 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 verfasst include lt windows h gt LRESULT CALLBACK WndProc HWND UINT WPARAM LPARAM int WINAPI WinMain HINSTANCE hInstance HINSTANCE hPrevInstance PSTR szCmdLine int iCmdShow static TCHAR const szAppName TEXT Klassenname HWND hWnd MSG msg WNDCLASSEX wndclassex wndclassex cbSize sizeof WNDCLASSEX wndclassex style CS HREDRAW CS VREDRAW wndclassex lpfnWndProc amp WndProc wndclassex cbClsExtra 0 wndclassex cbWndExtra 0 wndclassex hInstance hInstance wndclassex hIcon LoadIcon NULL IDI APPLICATION wndclassex hCursor LoadCursor NULL IDC ARROW wndclassex hbrBackground HBRUSH GetStockObject WHITE BRUSH wndclassex lpszMenuName NULL wndclassex lpszClassName szAppName wndclassex hIconSm wndclassex hIcon if RegisterClassEx amp wndclassex MessageBox NULL TEXT RegisterClassEx fehlgeschlagen szAppName MB OK MB ICONERROR return 1 hWnd CreateWindowEx WS EX OVERLAPPEDWINDOW erweiterter Fensterstil szAppName Name der Fensterklasse TEXT Fenstertitel Fenstertitel WS OVERLAPPEDWINDOW Fensterstil CW USEDEFAULT X Position des Fensters CW USEDEFAULT Y Position des Fensters CW USEDEFAULT Fensterbreite CW USEDEFAULT Fensterhohe NULL ubergeordnetes Fenster NULL Menu hInstance Programm Kopiezahler Programm ID NULL zusatzliche Parameter ShowWindow hWnd iCmdShow UpdateWindow hWnd while GetMessage amp msg NULL 0 0 TranslateMessage amp msg DispatchMessage amp msg UnregisterClass szAppName hInstance return int msg wParam Die Hauptnachrichtenschleife LRESULT CALLBACK WndProc HWND hWnd UINT message WPARAM wParam LPARAM lParam HDC hdc PAINTSTRUCT ps switch message case WM PAINT hdc BeginPaint hWnd amp ps TextOut hdc 0 0 TEXT Hello World 12 EndPaint hWnd amp ps return 0 case WM CLOSE DestroyWindow hWnd break case WM DESTROY PostQuitMessage 0 return 0 return DefWindowProc hWnd message wParam lParam Literatur BearbeitenMark Russinovich Windows Internals Part I Sechste Auflage Microsoft Press 2012 ISBN 978 0 7356 4873 9 Weblinks BearbeitenWindows 3 1 API Spezifikation ECMA 234 englisch Einzelnachweise Bearbeiten API Considerations Microsoft abgerufen am 2 September 2013 How to download and install Win32s using Windows 3 1 File Manager englisch MIT mit Win32s is an extension for the Windows 3 1 and Windows 3 11 operating systems which allows them to run some 32 bit applications letzte Anderung am 18 Februar 1999 The Win32s compatibility list Abgerufen von https de wikipedia org w index php title Windows Application Programming Interface amp oldid 222632973 Win32