A API nativa do Windows é uma interface de programação de aplicativos (API) usada pelo kernel do Windows NT e aplicativos de modo de usuário. Esta API é usada nos estágios iniciais do processo de inicialização do Windows NT, quando outros componentes e APIs ainda estão indisponíveis. Portanto, alguns componentes do Windows, como o Subsistema de Tempo de Execução Cliente/Servidor , são implementados usando a API nativa. Ela também é usada por sub-rotinas como aquelas no kernel32.dll que implementam a API do Windows, a API na qual a maioria dos componentes do Windows são criados. Categoria:Interfaces de programação de aplicações da Microsoft
A maioria das chamadas da API nativa são implementadas no ntoskrnl.exe e são expostas ao modo de usuário pelo ntdll.dll. O ponto de entrada (entry point) do ntdll.dll é LdrInitializeThunk. As chamadas da API nativa são gerenciadas pelo kernel pelo SSDT.
Grupos de funções A API nativa compreende muitas funções. Elas incluem funções de tempo de execução do C que são necessárias para uma execução bem básica do C, como strlen(), sprintf(), memcpy() e floor(). Outras funções comuns como malloc(), printf() e scanf() estão faltando. (o primeiro pois ele não especifica uma heap para alocar memória dela e o segundo e terceiro pois eles usam o console, acessado apenas por KERNEL32.DLL). A vasta maioria das outras rotinas da API nativa, por convenção, tem prefixos de 2 ou 3 letras, que são: Nt ou Zw são chamadas de sistema declaradas em ntdll.dll e ntoskrnl.exe. Quando chamadas de ntdll.dll em modo de usuário, esses grupos são quase exatamente o mesmo; eles executam uma interrupção no modo de kernel e chamam a função equivalente no ntoskrnl.exe pela SSDT. Ao chamar as funções diretamente no ntoskrnl.exe (só possível no modo de kernel), as variantes Zw asseguram o modo de kernel, enquanto as variantes Nt não asseguram. O prefixo Zw não significa nada. Rtl é o segundo maior grupo de chamadas ntdll. Esse grupo compreende a biblioteca de tempo de execução do C (C Run-Time Library), que inclui muitas funções que podem ser usadas por aplicativos nativos, mas que não envolvem suporte do kernel diretamente. Csr são funções cliente-servidor que são usadas para comunicar com o processo do subsistema Win32, csrss.exe. Dbg são funções de debug como, por exemplo, um breakpoint de software. Ki são chamadas do modo de kernel para eventos como despacho de APC. Ldr são funções de carregamento para gerenciamento de arquivos PE e iniciação de novos processos. Nls para National Language Support. Pfx para gerenciamento de prefixos. Tp para gerenciamento de thread pools.
User32.dll e gdi32.dll incluem várias outras chamadas que executam uma interrupção no modo de kernel. Essas não eram parte do design original do Windows NT, como pode ser visto no Windows NT 3.5. Porém, devido a problemas de performance de hardware daquela época, decidiram mover o subsistema de gráficos para o modo de kernel. Portanto, chamadas de sistema no intervalo de 0x1000 a 0x1FFF são satisfeitas pelo win32k.sys (ao invés do ntoskrnl.exe como é feito para 0-0x0FFF), e são declaradas em user32.dll e gdi32.dll. Essas funções tem os prefixos NtUser e NtGdi (por exemplo, NtUserLockWorkStation e NtGdiEnableEudc).
Usos Usos das funções da API nativa incluem mas não estão limitados a: Habilitar e desabilitar privilégios (RtlAdjustPrivilege). Criar threads remotas em processos que estão sendo executados em uma seção diferente (RtlCreateUserThread). Executar aplicativos nativos (RtlCreateUserProcess). Performar um desligamento forçado (NtShutdownSystem). Causar uma tela azul da morte no modo de usuário (NtRaiseHardError). Mostrar uma string no modo nativo (NtDisplayString).