Native API - Native API
De Native API is een lichtgewicht Application Programming Interface (API) die wordt gebruikt door Windows NT en gebruikersmodusapplicaties . Deze API wordt gebruikt in de vroege stadia van het opstartproces van Windows NT , wanneer andere componenten en API's nog niet beschikbaar zijn. Daarom worden enkele Windows-componenten, zoals het Client / Server Runtime Subsystem (CSRSS), geïmplementeerd met behulp van de Native API. De Native API wordt ook gebruikt door subroutines zoals die in kernel32.dll die de Windows API implementeren , de API op basis waarvan de meeste Windows-componenten zijn gemaakt.
De meeste native API-aanroepen zijn geïmplementeerd in ntoskrnl.exe en worden door ntdll.dll in de gebruikersmodus weergegeven . Het toegangspunt van ntdll.dll is LdrInitializeThunk . Native API-aanroepen worden door de kernel afgehandeld via de System Service Descriptor Table (SSDT).
Functiegroepen
De Native API bevat veel functies. Ze bevatten C-runtime-functies die nodig zijn voor een zeer eenvoudige C- runtime-uitvoering, zoals strlen (), sprintf (), memcpy () en floor (). Andere veelgebruikte procedures zoals malloc (), printf (), scanf () ontbreken (de eerste omdat het geen heap specificeert om geheugen van toe te wijzen en de tweede en derde omdat ze de console gebruiken, die alleen toegankelijk is via KERNEL32.DLL). De overgrote meerderheid van andere native API-routines heeft volgens afspraak een voorvoegsel van 2 of 3 letters, namelijk:
- Nt of Zw zijn systeemoproepen die zijn gedeclareerd in ntdll.dll en ntoskrnl.exe. Wanneer ze worden aangeroepen vanuit ntdll.dll in de gebruikersmodus, zijn deze groepen bijna exact hetzelfde; ze vallen in de kernelmodus en roepen de equivalente functie in ntoskrnl.exe aan via de SSDT . Wanneer de functies rechtstreeks worden aangeroepen in ntoskrnl.exe (alleen mogelijk in kernelmodus), zorgen de Zw-varianten voor de kernelmodus, terwijl de Nt-varianten dat niet doen. Het voorvoegsel Zw staat nergens voor.
- Rtl is de op een na grootste groep ntdll-oproepen. Deze omvatten de (uitgebreide) C Run-Time Library, die veel hulpprogramma-functies bevat die kunnen worden gebruikt door native applicaties, maar die niet direct betrekking hebben op kernelondersteuning.
- CSR zijn client-serverfuncties die worden gebruikt om te communiceren met het Win32-subsysteemproces, csrss.exe ( csrss staat voor client / server runtime-subsysteem).
- Dbg zijn foutopsporingsfuncties zoals een software- onderbrekingspunt .
- Ki zijn oproepen vanuit de kernelmodus voor gebeurtenissen zoals APC- verzending.
- Ldr zijn laderfuncties voor het afhandelen van PE- bestanden en het starten van nieuwe processen.
- Nls voor National Language Support (vergelijkbaar met codepagina's).
- Pfx voor het afhandelen van voorvoegsels.
- Tp voor het hanteren van threadpools.
user32.dll en gdi32.dll bevatten verschillende andere aanroepen die in de kernelmodus terechtkomen. Deze maakten geen deel uit van het oorspronkelijke Windows NT-ontwerp, zoals te zien is in Windows NT 3.5 . Echter, vanwege prestatieproblemen van hardware van die tijd, werd besloten om het grafische subsysteem in kernelmodus te verplaatsen. Als zodanig wordt aan de systeemaanroep in het bereik van 0x1000-0x1FFF voldaan door win32k.sys (in plaats van ntoskrnl.exe zoals gedaan voor 0-0x0FFF), en worden ze gedeclareerd in user32.dll en gdi32.dll. Deze functies hebben de prefix NtUser en NtGdi (bijvoorbeeld NtUserLockWorkStation en NtGdiEnableEudc ).
Toepassingen
Het gebruik van native API-functies omvat, maar is niet beperkt tot:
- Bevoegdheden in- en uitschakelen (RtlAdjustPrivilege)
- Externe thread maken binnen processen die in verschillende sessies worden uitgevoerd (RtlCreateUserThread)
- Native applicatie uitvoeren (RtlCreateUserProcess)
- Geforceerd afsluiten uitvoeren (NtShutdownSystem)
Zie ook
Referenties
Externe links
- Een website die de meeste native API-functies documenteert
- Binnen native applicaties
- Binnen de Native API
- Open source systeem voor de ontwikkeling van native applicaties
- Compileren van gratis Pascal-programma's voor de native API
- Windows NT Native Tools - Een gratis programma voor het ontwikkelen van native applicaties
- Native shell - Windows-opdrachtprompt die kan starten vóór het Winlogon- en Win32-subsysteem