Articulo de referencia

API nativa de Windows

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 ...

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

  1. 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 .
  2. Raymond Chen (2009). "Lo viejo y lo nuevo : ¿Qué significa el prefijo "Zw"?" . Microsoft Corporation . Consultado el 13 de junio de 2009 . 
  • 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.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Windows_Native_API&oldid=1319612805 "