Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los controladores en modo kernel usan las rutinas nativas de servicios del sistema llamando a los puntos de entrada Nt y Zw en la biblioteca de vínculos dinámicos (DLL) de Ntoskrnl.exe. Este archivo DLL contiene las implementaciones reales de estas rutinas. Para acceder a estos puntos de entrada, un controlador se vincula estáticamente a la biblioteca Ntoskrnl.lib, que está disponible en el Kit de controladores de Windows (WDK). Las rutinas que se implementan en Ntoskrnl.lib son stubs que se vinculan dinámicamente a los puntos de entrada de Ntoskrnl.exe en tiempo de ejecución.
La documentación de WDK describe algunos, pero no todos, de los puntos de entrada Zw en Ntoskrnl.exe. Para obtener descripciones de las rutinas Zw a las que pueden llamar los controladores, vea ZwXxx Routines.
La mayoría de las rutinas zw documentadas se definen en el archivo de encabezado Wdm.h del WDK, pero algunos se definen en otros archivos de encabezado, como Ntddk.h y Ntifs.h.
Normalmente, las aplicaciones en modo de usuario no llaman a las rutinas Nt y Zw . En su lugar, una aplicación podría llamar a una rutina win32, como CreateFile, que luego llama a una rutina de servicios del sistema nativo, como NtCreateFile o ZwCreateFile, para realizar la operación solicitada. Sin embargo, una aplicación en modo de usuario podría llamar directamente a una rutina Nt o Zw para realizar una operación que no es compatible con las rutinas win32.
Las aplicaciones en modo de usuario usan las rutinas nativas de servicios del sistema llamando a los puntos de entrada de la biblioteca de vínculos dinámicos de Ntdll.dll. Estos puntos de entrada convierten las llamadas a rutinas Nt y Zw en llamadas del sistema que están atrapadas en modo kernel. Para acceder a estos puntos de entrada, una aplicación en modo de usuario se vincula estáticamente a la biblioteca Ntdll.lib, que está disponible en WDK. Las rutinas que se implementan en Ntdll.lib son stubs que se vinculan dinámicamente a los puntos de entrada de Ntdll.dll en tiempo de ejecución.
En la documentación de Windows SDK se describen algunos de los Nt de entrada en Ntdll.lib, pero no todos. La mayoría de las rutinas nt documentadas se definen en el archivo de encabezado Winternl.h en Windows SDK. Esta documentación hace poca mención de los puntos de entrada Zw y ningún archivo de encabezado en Windows SDK contiene definiciones de rutinas zw .
Con un par de excepciones menores, cada punto de entrada de Ntdll.dll para una rutina Nt tiene un punto de entrada coincidente para una rutina Zw . La documentación de WDK y Windows SDK recomienda que los desarrolladores de aplicaciones eviten llamar a puntos de entrada Nt no documentados y advierten de que los puntos de entrada Zw podrían desaparecer de Ntdll.dll en una versión futura de Windows. Los desarrolladores de aplicaciones que llaman a las rutinas Zw desde el modo de usuario deben estar preparados para esta aparición.
Para obtener descripciones de las rutinas Nt a las que pueden llamar las aplicaciones, consulte Winternl, archivo de encabezado winternl.h y Clientes Diversos Low-Level. Algunas páginas de referencia para rutinas nt en la documentación de Windows SDK etiquetan las rutinas como "en desuso" y aconsejan a los lectores que usen las rutinas de Win32 equivalentes en lugar de las rutinas nt en desuso.
Una aplicación en modo de usuario no puede llamar a los puntos de entrada en Ntoskrnl.exey un controlador en modo kernel no puede llamar a los puntos de entrada en Ntdll.dll.