Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Kernelmodustreiber verwenden die systemeigenen Systemdienste-Routinen, indem sie die Nt- und Zw-Einstiegspunkte in der Ntoskrnl.exe Dynamic Link Library (DLL) aufrufen. Diese DLL enthält die tatsächlichen Implementierungen dieser Routinen. Um auf diese Einstiegspunkte zuzugreifen, wird ein Treiber statisch mit der Ntoskrnl.lib-Bibliothek verknüpft, die im Windows Driver Kit (WDK) verfügbar ist. Die Routinen, die in Ntoskrnl.lib implementiert sind, sind Stubs, die zur Laufzeit dynamisch mit den Einstiegspunkten in Ntoskrnl.exe linken.
Die WDK-Dokumentation beschreibt einige, aber nicht alle der Zw-Einstiegspunkte in Ntoskrnl.exe. Beschreibungen der Zw-Routinen , die von Treibern aufgerufen werden können, finden Sie unter ZwXxx Routines.
Die meisten dokumentierten Zw-Routinen werden in der Wdm.h-Headerdatei im WDK definiert, aber einige werden in anderen Headerdateien wie Ntddk.h und Ntifs.h definiert.
In der Regel rufen Benutzermodusanwendungen die Nt - und Zw-Routinen nicht auf. Stattdessen ruft eine Anwendung möglicherweise eine Win32-Routine auf, z. B. CreateFile, die dann eine systemeigene Systemdienstroutine aufruft, z. B. NtCreateFile oder ZwCreateFile, um den angeforderten Vorgang auszuführen. Eine Benutzermodusanwendung ruft jedoch möglicherweise direkt eine Nt - oder Zw-Routine auf, um einen Vorgang auszuführen, der von den Win32-Routinen nicht unterstützt wird.
Benutzermodusanwendungen verwenden die systemeigenen Systemdiensteroutinen, indem sie die Einstiegspunkte in der Ntdll.dll Dynamic Link Library aufrufen. Diese Einstiegspunkte konvertieren Aufrufe zu Nt und Zw-Routinen in Systemaufrufe, die in den Kernelmodus überführt und abgefangen werden. Um auf diese Einstiegspunkte zuzugreifen, wird eine Anwendung im Benutzermodus statisch mit der Ntdll.lib-Bibliothek verknüpft, die im WDK verfügbar ist. Die Routinen, die in Ntdll.lib implementiert sind, sind Stubs, die dynamisch mit den Einstiegspunkten in Ntdll.dll zur Laufzeit verknüpft sind.
In der Windows SDK-Dokumentation werden einige, aber nicht alle Nt-Einstiegspunkte in Ntdll.lib beschrieben. Die meisten dokumentierten Nt-Routinen werden in der Headerdatei Winternl.h im Windows SDK definiert. Diese Dokumentation erwähnt nur wenig die Zw-Einstiegspunkte, und keine Headerdateien im Windows SDK enthalten Definitionen von Zw-Routinen.
Mit einigen kleineren Ausnahmen verfügt jeder Einstiegspunkt in Ntdll.dll für eine Nt-Routine über einen passenden Einstiegspunkt für eine Zw-Routine . Die Dokumentation für das WDK und Windows SDK empfiehlt Anwendungsentwicklern, nicht dokumentierte Nt-Einstiegspunkte aufzurufen, und warnt, dass die Zw-Einstiegspunkte in einer zukünftigen Version von Windows möglicherweise von Ntdll.dll verschwinden. Anwendungsentwickler, die die Zw-Routinen aus dem Benutzermodus aufrufen, sollten für dieses Vorkommen vorbereitet sein.
Beschreibungen der Nt-Routinen, die von Anwendungen aufgerufen werden können, finden Sie unter Winternl, winternl.h header und Miscellaneous Low-Level Client Support. Einige Referenzseiten für Nt-Routinen in der Windows SDK-Dokumentation bezeichnen die Routinen als "veraltet" und empfehlen Lesern, die entsprechenden Win32-Routinen anstelle der veralteten Nt-Routinen zu verwenden.
Eine Benutzermodusanwendung kann die Einstiegspunkte in Ntoskrnl.exenicht aufrufen, und ein Kernelmodustreiber kann die Einstiegspunkte in Ntdll.dllnicht aufrufen.