네이티브 API(Native API)는 윈도우 NT와 사용자 모드의 응용 프로그램에서 사용되는 API이다. 다른 윈도우 구성 요소들이 사용되기 힘들 때 사용되며, 주로 시스템 부팅 시나 kernel32.dll 같은 윈도우 API를 구현하는 용도로 쓰인다. ntdll.dll의 엔트리 포인트는 LdrInitializeThunk이다. 대부분의 네이티브 API의 호출은 ntoskrnl.exe에서 구현되며, ntdll.dll에 의해서 사용자 모드로 노출된다. 어떤 경우에는 사용자 모드에서 ntdll.dll 내부의 네이티브 API가 직접 호출되기도 한다.
네이티브 API 호출은 SSDT를 통해서 커널에 의해 관리된다.
대부분의 마이크로소프트 윈도우가 잘 정의된 윈도우 API에 의해 구현된 반면, 클라이언트/서버 런타임 하위 시스템같은 소수의 구성 요소들은 네이티브 API로 구현된다. 왜냐하면 이것이 윈도우 NT 시작 프로세스 전에 호출되는데, 이 때는 WIndows API가 아직 사용 가능하지 않기 때문이다.
네이티브 API는 많은 함수들로 이루어져 있다. strlen(), sprintf() 등이 있고 floor() 같은 기본적인 C 런타임 실행을 위해 C 런타임 함수들을 포함한다. malloc(), printf(), scanf() 같은 공통 프로시저들은 빠졌다. 대다수의 네이티브 API들은 관행적으로 아래와 같은 접두사를 갖는다.
user32.dll과 gdi32.dll은 커널 모드로 가는 다른 호출도 포함한다. 이것은 과거에 하드웨어의 성능 문제로 인해 그래픽 서브 시스템을 커널 모드로 보내기로 결정했기 때문이다. 0x1000~0x1FFF 범위의 시스템 호출들은 win32k.sys용이며, user32.dll과 gdi32.dll에서 정의된다. 이런 함수들은 NtUser, NtGdi 접두사가 붙는다.
또한 ntoskrnl.exe에서 나온 많은 그룹들이 있으며, 그 이유로 오직 커널 모드에서만 사용될 수 있다. 이것들은 네이티브 API에 포함되기도 하고, 되지 않기도 한다. Cc(cache controller), Ex(Windows Executive), FsRtl(file system runtime library), Io(I/O manager), Ke(core kernel routines), Ks(kernel streaming), Lpc(로컬 프로시저 호출), Lsa(로컬 보안 인증), Mm(memory management), Ob(객체 관리자), Ps(Process management), Se(security), Po(power management) 등이 있다.[2][3][4][5][6][7]