title: Native API
text: # Native API
  
  Native API (o anche native system services o executive system services), in informatica, indica i servizi interni dei sistemi operativi appartenenti alla famiglia Windows NT.
  
  Le Native API costituiscono l'interfaccia al kernel di più basso livello possibile, tuttavia non si tratta dell'API ufficiale e documentata del sistema operativo, bensì di un'interfaccia privata sulla quale si appoggiano le Windows API. La compatibilità delle Native API non è garantita tra differenti versioni di Windows NT, in quanto cambiamenti alla struttura del kernel potrebbero riflettersi in cambiamenti delle Native API. Per la scrittura di applicazioni è necessario utilizzare esclusivamente le Windows API, sebbene sia tecnicamente possibile utilizzare le Native API, che però sono documentate solo parzialmente. Le Native API sono l'equivalente delle system call dei sistemi operativi Unix.
  
  Generalmente ad ogni Native API corrisponde una Windows API equivalente, ad esempio alla Native API NtWriteFile corrisponde la Windows API WriteFile.
  
  La ragione per la quale esiste questo doppio strato di API deriva dal fatto che i sistemi operativi Windows NT possono disporre di differenti subsystem. In Windows NT sono disponibili i subsystem Win32, Posix e OS/2 (a partire da Windows XP è presente solo quello Win32). Pertanto le Native API sono l'interfaccia con la quale vengono sviluppati i subsystem.
  
  Le Native API sono implementate nella libreria Ntdll.dll. A ciascuna Native API corrisponde un servizio del kernel, che viene invocato tramite un interrupt 0x2E (o con un'istruzione di linguaggio macchina sysenter o syscall sui microprocessori più recenti); questa operazione viene definita system service dispatching.
  
  