Native API - Native API

The Native API er et lett programmeringsgrensesnitt (API) som brukes av Windows NT og brukermodus applikasjoner. Denne API-en brukes i de tidlige stadiene av oppstartsprosessen for Windows NT , når andre komponenter og API-er fortsatt ikke er tilgjengelige. Derfor er noen få Windows-komponenter, for eksempel Client / Server Runtime Subsystem (CSRSS), implementert ved hjelp av Native API. Native API brukes også av underrutiner som de i kernel32.dll som implementerer Windows API , APIen som de fleste Windows-komponentene er opprettet på.

De fleste av Native API-anropene er implementert i ntoskrnl.exe og blir utsatt for brukermodus av ntdll.dll . Den inngangspunkt for ntdll.dll er LdrInitializeThunk . Innfødte API-anrop håndteres av kjernen via System Service Descriptor Table (SSDT).

Funksjonsgrupper

Native API inneholder mange funksjoner. De inkluderer C runtime-funksjoner som er nødvendige for en veldig grunnleggende C runtime-kjøring, for eksempel strlen (), sprintf (), memcpy () og floor (). Andre vanlige prosedyrer som malloc (), printf (), scanf () mangler (den første fordi den ikke spesifiserer en bunke å tildele minne fra, og den andre og tredje fordi de bruker konsollen, kun tilgjengelig via KERNEL32.DLL). De aller fleste andre Native API-rutiner, etter konvensjon, har et prefiks på 2 eller 3 bokstaver, som er:

  • Nt eller Zw er systemanrop erklært i ntdll.dll og ntoskrnl.exe. Når de blir ringt fra ntdll.dll i brukermodus, er disse gruppene nesten nøyaktig de samme; de feller inn i kjernemodus og kaller den tilsvarende funksjonen i ntoskrnl.exe via SSDT . Når du ringer til funksjonene direkte i ntoskrnl.exe (bare mulig i kjernemodus), sørger Zw-variantene for kjernemodus, mens Nt-variantene ikke gjør det. Zw-prefikset står ikke for noe.
  • Rtl er den nest største gruppen av ntdll-samtaler. Disse inkluderer (utvidet) C Run-Time Library, som inkluderer mange verktøyfunksjoner som kan brukes av innfødte applikasjoner, men likevel ikke direkte involverer kjernestøtte.
  • CSR er klient-serverfunksjoner som brukes til å kommunisere med Win32-delsystemprosessen, csrss.exe ( csrss står for klient / server kjøretidsundersystem).
  • DBG er debugging funksjoner som en programvare stoppunkt .
  • Ki er oppkall fra kjernemodus for hendelser som APC- utsendelse.
  • Ldr er lasterfunksjoner for PE- filhåndtering og start av nye prosesser.
  • Nls for National Language Support (ligner på kodesider).
  • Pfx for håndtering av prefiks.
  • Tp for threadpool håndtering.

user32.dll og gdi32.dll inkluderer flere andre anrop som fanges inn i kjernemodus. Disse var ikke en del av den opprinnelige Windows NT-designen, som kan sees i Windows NT 3.5 . På grunn av ytelsesproblemer med maskinvare i den alderen ble det imidlertid bestemt å flytte grafikkundersystemet til kjernemodus. Som sådan blir systemanrop i området 0x1000-0x1FFF fornøyd med win32k.sys (i stedet for ntoskrnl.exe som gjort for 0-0x0FFF), og blir erklært i user32.dll og gdi32.dll. Disse funksjonene har prefikset NtUser og NtGdi (f.eks. NtUserLockWorkStation og NtGdiEnableEudc ).

Bruker

Bruk av Native API-funksjoner inkluderer, men ikke begrenset til:

  • Aktivere og deaktivere privilegier (RtlAdjustPrivilege)
  • Opprette ekstern tråd i prosesser som kjører i en annen økt (RtlCreateUserThread)
  • Kjører native applikasjon (RtlCreateUserProcess)
  • Utfører kraftavstenging (NtShutdownSystem)

Se også

Referanser

Eksterne linker