Windows Native API

Das Einheimische API ist ein leichtes Gewicht Programmierschnittstelle (API) verwendet von Windows NT und Benutzermodus Anwendungen. Diese API wird in den frühen Stadien von verwendet Windows NT -Startprozess, wenn andere Komponenten und APIs noch nicht verfügbar sind. Daher einige Windows -Komponenten wie die Client/Server -Laufzeit -Subsystem (CSRS) werden mit der nativen API implementiert. Die native API wird auch von verwendet von Unterroutinen wie die in kernel32.dll das implementiert die Windows -APIDie API basiert darauf, welche die meisten Windows -Komponenten erstellt werden.

Die meisten nativen API -Anrufe werden in implementiert ntoskrnl.exe und sind dem Benutzermodus von ausgesetzt von ausgesetzt ntdll.dll. Das Einstiegspunkt von ntdll.dll ist Ldrinitializethunk. Native API -Anrufe werden von der behandelt Kernel über die Systemdienstdeskriptortabelle (SSDT).

Funktionsgruppen

Die native API umfasst viele Funktionen. Sie beinhalten C Laufzeitfunktionen das werden für eine sehr grundlegende benötigt C Laufzeitausführung wie Strlen (), Sprintf (), memcpy () und floor (). Andere gängige Verfahren wie malloc (), printf (), scanf () fehlen (das erste, weil es keine angeben a Haufen zum Speichern von und dem zweiten und dritten, weil sie die Konsole verwenden, auf nur über Kernel32.dll zugegriffen werden. Die überwiegende Mehrheit anderer einheimischer API -Routinen hat nach Übereinkommen ein Präfix von 2 oder 3 Buchstaben, das heißt:

  • Nt oder Zw sind Systemaufrufe deklariert in ntdll.dll und ntoskrnl.exe. Wenn diese Gruppen aus ntdll.dll im Benutzermodus aufgerufen werden, sind sie fast genau gleich. Sie fangen in ein Kernelmodus und rufen Sie die äquivalente Funktion in ntoskrnl.exe über die auf Ssdt. Wenn Sie die Funktionen direkt in ntoskrnl.exe aufrufen (nur im Kernel -Modus möglich), sorgen die ZW -Varianten für den Kernel -Modus, während die NT -Varianten dies nicht tun.[1] Das ZW -Präfix steht für nichts.[2]
  • RTL ist die zweitgrößte Gruppe von NTDLL -Anrufen. Diese umfassen die (erweiterte) C-Laufzeitbibliothek, die viele Versorgungsfunktionen enthält, die von nativen Anwendungen verwendet werden können, aber nicht direkt die Kernel-Unterstützung beinhalten.
  • CSR sind Client-Server-Funktionen, die verwendet werden, um mit dem Win32-Subsystemprozess zu kommunizieren, csrs.exe (CSRSS steht für Client/Server-Laufzeit-Subsystem).
  • DBG sind Debuggen Funktionen wie eine Software Haltepunkt.
  • Ki sind upcalls aus dem Kernel -Modus für Ereignisse wie APC Versand.
  • LDR sind Laderfunktionen für SPORT Dateihandhabung und Beginn neuer Prozesse.
  • NLS zum Nationalsprachunterstützung (ähnlich wie Codeseiten).
  • PFX Für das Präfixhandling.
  • Tp Für Threadpool -Handhabung.

User32.dll und GDI32.dll enthalten mehrere andere Anrufe, die in den Kernel -Modus einfallen. Diese waren nicht Teil des ursprünglichen Windows -NT Windows NT 3.5. Aufgrund von Leistungsproblemen in Hardware in diesem Alter wurde jedoch beschlossen, das Grafik -Subsystem in den Kernel -Modus zu verschieben. Daher sind Systemaufrufe im Bereich von 0x1000-0x1fff durch Win32K.Sys (anstelle von ntoskrnl.exe wie für 0-0x0fff) erfüllt und werden in user32.dll und gdi32.dll deklariert. Diese Funktionen haben die Ntuser und Ntgdi Präfix (z. Ntuserlockworkstation und NtgdienableableDc).

Verwendet

Die Verwendung von nativen API -Funktionen umfasst, ohne darauf beschränkt zu sein, und nicht beschränkt auf:

  • Berechtigung aktivieren und deaktivieren (rtladjustprivilege)
  • Erstellen von Remote -Thread innerhalb von Prozessen, die in verschiedenen Sitzungen ausgeführt werden (rtlcreatUserThread)
  • Ausführende native Anwendung (rtlcreatUserProcess)
  • Ausführung der Kraft zum Abschalten (NTShutdownsystem)

Siehe auch

Verweise

  1. ^ Der NT Insider (27. August 2003). "NT vs. ZW - Verwirrung auf der nativen API klären". OSR online. OSR Open Systems Ressourcen. 10 (4). Abgerufen 2013-09-16.
  2. ^ Raymond Chen (2009). "Das alte neue Ding: Was bedeutet das" zw "Präfix?". Microsoft Corporation. Abgerufen 2009-06-13.

Externe Links