API nativa de Windows

La API nativa es una interfaz de programación de aplicaciones (API) ligera que utilizan las aplicaciones de modo usuario y kernel 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 ejecución de cliente/servidor (CSRSS), se implementan utilizando la API nativa. La API nativa también la utilizan subrutinas como las de kernel32.dll que implementan la API de Windows , la API en base a la cual se crean 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 LdrInitializeThunk. Las llamadas a la API nativa se gestionan mediante el núcleo a través de la tabla de descriptores de servicios del sistema (SSDT).

Grupos de funciones

La API nativa comprende muchas funciones. Incluyen funciones de tiempo de ejecución de C que son necesarias para una ejecución en tiempo de ejecución de C muy básica , como strlen(), sprintf(), memcpy() y floor(). Faltan otros procedimientos comunes como malloc(), printf(), 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 se accede solo a través de KERNEL32.DLL). La gran mayoría de otras rutinas de API nativas, por convención, tienen un prefijo de 2 o 3 letras, que es:

  • Nt o Zw son llamadas del sistema declaradas en ntdll.dll y ntoskrnl.exe. Cuando se llaman desde ntdll.dll en modo de usuario, estos grupos son casi exactamente iguales; 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 (sólo es posible en modo kernel), las variantes Zw garantizan el modo kernel, mientras que las variantes Nt no lo hacen. [1] El prefijo Zw no significa nada. [2]
  • Rtl es el segundo grupo más grande de llamadas ntdll. Comprende 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 involucran directamente el soporte del núcleo.
  • Csr son funciones cliente-servidor que se utilizan para comunicarse con el proceso del subsistema Win32, csrss.exe ( csrss significa subsistema de ejecución de cliente/servidor).
  • 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 manejo de prefijos.
  • Tp para manejo de grupos de subprocesos.

user32.dll y gdi32.dll incluyen otras llamadas que ejecutan una interrupción en el modo kernel. Estas no eran 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 de gráficos al modo kernel. Por lo tanto, las llamadas del sistema en el rango de 0x1000-0x1FFF son satisfechas por win32k.sys (en lugar de ntoskrnl.exe como se hizo para 0-0x0FFF), y se declaran 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 API nativas incluyen, entre otros:

  • Habilitar y deshabilitar privilegios (RtlAdjustPrivilege)
  • Creación de subprocesos remotos dentro de procesos que se ejecutan en diferentes sesiones (RtlCreateUserThread)
  • Ejecución de aplicaciones nativas (RtlCreateUserProcess)
  • Realizar un apagado forzado (NtShutdownSystem)
  • Provocando un 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 nuevo de siempre: ¿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
  • 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 herramienta gratuita para el desarrollo de aplicaciones nativas
  • Shell nativo: símbolo del sistema de Windows que puede iniciarse antes que Winlogon y el subsistema Win32 Archivado el 11 de agosto de 2015 en Wayback Machine
Retrieved from "https://en.wikipedia.org/w/index.php?title=Windows_Native_API&oldid=1239213843"