La API nativa es una interfaz de programación de aplicaciones (API) ligera utilizada por el núcleo y las aplicaciones en modo usuario de Windows NT . Esta API se utiliza en las primeras etapas del proceso de inicio de Windows NT , cuando otros componentes y API aún no están disponibles. Por lo tanto, algunos componentes de Windows, como el subsistema de tiempo de ejecución cliente/servidor (CSRSS), se implementan mediante la API nativa. Esta API también la utilizan subrutinas , como las de kernel32.dll , que implementan la API de Windows , la API sobre la que se basan la mayoría de los componentes de Windows.
La mayoría de las llamadas a la API nativa se implementan en ntoskrnl.exe y se exponen al modo de usuario mediante ntdll.dll . El punto de entrada de ntdll.dll es . El kernelLdrInitializeThunk gestiona las llamadas a la API nativa a través de la Tabla de descriptores de servicios del sistema (SSDT).
Grupos funcionales
La API nativa comprende muchas funciones. Estas incluyen funciones de tiempo de ejecución de C necesarias para una ejecución básica de C , como strlen(), sprintf(), memcpy() y floor(). Faltan otros procedimientos comunes como malloc(), printf() y scanf() (el primero porque no especifica un montón desde el que asignar memoria y el segundo y el tercero porque utilizan la consola, a la que solo se accede a través de KERNEL32.DLL). La gran mayoría de las demás rutinas de la API nativa, por convención, tienen un prefijo de 2 o 3 letras, que es:
- Nt o Zw son llamadas al sistema declaradas en ntdll.dll y ntoskrnl.exe. Cuando se llaman desde ntdll.dll en modo usuario, estos grupos son casi idénticos; ejecutan una interrupción en modo kernel y llaman a la función equivalente en ntoskrnl.exe a través de SSDT . Cuando se llaman las funciones directamente en ntoskrnl.exe (solo posible en modo kernel), las variantes Zw aseguran el modo kernel, mientras que las variantes Nt no. [ 1 ] El prefijo Zw no significa nada. [ 2 ]
- Rtl es el segundo grupo más grande de llamadas a ntdll. Estas conforman la biblioteca de tiempo de ejecución de C (extendida), que incluye muchas funciones de utilidad que pueden ser utilizadas por aplicaciones nativas, pero que no requieren soporte directo del kernel.
- Las funciones Csr son funciones cliente-servidor que se utilizan para comunicarse con el proceso del subsistema Win32, csrss.exe ( csrss significa subsistema de tiempo de ejecución cliente/servidor).
- Las funciones Dbg son funciones de depuración como un punto de interrupción de software .
- Ki son llamadas ascendentes desde el modo kernel para eventos como el despacho de APC .
- Ldr son funciones de carga para el manejo de archivos PE y el inicio de nuevos procesos.
- NLS para Soporte de Idiomas Nacionales (similar a las páginas de códigos).
- Pfx para el manejo de prefijos.
- Tp para la gestión del grupo de subprocesos.
user32.dll y gdi32.dll incluyen varias otras llamadas que ejecutan una interrupción en modo kernel. Estas no formaban parte del diseño original de Windows NT, como se puede ver en Windows NT 3.5 . Sin embargo, debido a problemas de rendimiento del hardware de esa época, se decidió mover el subsistema gráfico al modo kernel. Por lo tanto, las llamadas al sistema en el rango 0x1000-0x1FFF son satisfechas por win32k.sys (en lugar de ntoskrnl.exe como se hacía para 0-0x0FFF), y están declaradas en user32.dll y gdi32.dll. Estas funciones tienen el prefijo NtUser y NtGdi (por ejemplo, NtUserLockWorkStation y NtGdiEnableEudc ).
Usos
Los usos de las funciones de la API nativa incluyen, entre otros:
- Habilitar y deshabilitar privilegios (RtlAdjustPrivilege)
- Creación de subprocesos remotos dentro de procesos que se ejecutan en sesiones diferentes (RtlCreateUserThread)
- Ejecución de aplicaciones nativas (RtlCreateUserProcess)
- Realizando un apagado forzado (NtShutdownSystem)
- Provoca una pantalla azul de la muerte (BSOD) en modo de usuario (NtRaiseHardError)
- Visualización de una cadena en modo nativo (NtDisplayString)
Véase también
Referencias
- ↑ The NT Insider (27 de agosto de 2003). "Nt vs. Zw: aclarando la confusión sobre la API nativa" . OSR Online . 10 (4). Recursos de sistemas abiertos de OSR . Consultado el 16 de septiembre de 2013 .
- ↑ Raymond Chen (2009). "Lo viejo y lo nuevo : ¿Qué significa el prefijo "Zw"?" . Microsoft Corporation . Consultado el 13 de junio de 2009 .
Enlaces externos
- Un sitio web que documenta la mayoría de las funciones de la API nativa. Archivado el 25/10/2017 en Wayback Machine.
- Dentro de las aplicaciones nativas
- Dentro de la API nativa
- Marco de desarrollo de aplicaciones nativas de código abierto
- Compilación de programas Free Pascal para la API nativa
- Herramientas nativas de Windows NT: una utilidad gratuita para el desarrollo de aplicaciones nativas.
- Shell nativo: símbolo del sistema de Windows que puede iniciarse antes de Winlogon y el subsistema Win32. Archivado el 11 de agosto de 2015 en Wayback Machine.
- Interfaces de programación de aplicaciones de Microsoft
- API del sistema operativo
- núcleo de Windows NT