Nativní API - Native API

Native API je lehká aplikační programovací rozhraní (API), který používá systém Windows NT a uživatelského režimu aplikací. Toto rozhraní API se používá v počátečních fázích procesu spouštění systému Windows NT , když ještě nejsou k dispozici další součásti a rozhraní API. Proto je pomocí nativního rozhraní API implementováno několik komponent systému Windows, například klientský / serverový běhový subsystém (CSRSS). Nativní rozhraní API používají také podprogramy, jako jsou ty v souboru kernel32.dll, které implementují rozhraní Windows API , což je rozhraní API, na kterém je vytvořena většina součástí systému Windows.

Většina volání nativního API je implementována v ntoskrnl.exe a jsou vystaveny uživatelskému režimu pomocí ntdll.dll . Vstupní bod z Ntdll.dll je LdrInitializeThunk . Nativní volání API zpracovává jádro prostřednictvím tabulky deskriptorů systémových služeb (SSDT).

Funkční skupiny

Nativní API obsahuje mnoho funkcí. Zahrnují funkce běhového prostředí C, které jsou potřebné pro velmi základní provádění běhového prostředí C , například strlen (), sprintf (), memcpy () a floor (). Ostatní běžné postupy jako malloc (), printf (), scanf () chybí (první, protože neurčuje hromadu, ze které se má alokovat paměť, a druhý a třetí, protože používají konzolu, přístupnou pouze přes KERNEL32.DLL). Drtivá většina ostatních rutin nativního API má podle konvencí předponu se dvěma nebo třemi písmeny, což je:

  • Nt nebo Zw jsou systémová volání deklarovaná v ntdll.dll a ntoskrnl.exe. Při volání z ntdll.dll v uživatelském režimu jsou tyto skupiny téměř přesně stejné; uvězní do režimu jádra a zavolá ekvivalentní funkci v ntoskrnl.exe přes SSDT . Při volání funkcí přímo v ntoskrnl.exe (možné pouze v režimu jádra) zajišťují varianty Zw režim jádra, zatímco varianty Nt ne. Předpona Zw nestojí za nic.
  • Rtl je druhá největší skupina volání ntdll. Patří mezi ně (rozšířená) běhová knihovna C, která obsahuje mnoho funkcí obslužného programu, které mohou používat nativní aplikace, avšak přímo nezahrnují podporu jádra.
  • CSR jsou funkce, klient-server, které se používají ke komunikaci s Win32 subsystému procesu, Csrss.exe ( CSRSS je zkratka pro runtime podsystém klient / server).
  • Dbg jsou ladicí funkce, jako je softwarový bod zlomu .
  • Ki jsou volání z jádra pro události, jako je dispečink APC .
  • Ldr jsou funkce zavaděče pro zpracování souborů PE a spouštění nových procesů.
  • Nls pro podporu národního jazyka (podobně jako kódové stránky).
  • Pfx pro zpracování předpony.
  • Tp pro manipulaci s vlákny.

user32.dll a gdi32.dll obsahují několik dalších hovorů, které se zachytí do režimu jádra. Nebyly součástí původního návrhu Windows NT, jak je vidět v systému Windows NT 3.5 . Avšak kvůli problémům s výkonem hardwaru tohoto věku bylo rozhodnuto přesunout grafický subsystém do režimu jádra. Proto je systémové volání v rozsahu 0x1000-0x1FFF uspokojeno souborem win32k.sys (namísto ntoskrnl.exe, jak je tomu u 0-0x0FFF) a je deklarováno v souboru user32.dll a gdi32.dll. Tyto funkce mají předponu NtUser a NtGdi (např. NtUserLockWorkStation a NtGdiEnableEudc ).

Použití

Použití funkcí nativního rozhraní API zahrnuje mimo jiné:

  • Povolení a zakázání oprávnění (RtlAdjustPrivilege)
  • Vytváření vzdáleného vlákna v rámci procesů spuštěných v jiné relaci (RtlCreateUserThread)
  • Spuštění nativní aplikace (RtlCreateUserProcess)
  • Provádění odstavení síly (NtShutdownSystem)

Viz také

Reference

externí odkazy