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
- Et nettsted som dokumenterer de fleste av Native API-funksjonene
- Inside Native Applications
- Inne i Native API
- Åpen kildekode native utviklingsrammer
- Kompilering av gratis Pascal-programmer for det opprinnelige API
- Windows NT Native Tools - Et gratis utviklingsprogram for innfødte applikasjoner
- Native shell - Windows ledetekst som kan starte før Winlogon og Win32 delsystem