Nativní API - Native API
![]() | tento článek příliš spoléhá na Reference na primární zdroje.Ledna 2018) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
The Nativní API je lehký aplikační programovací rozhraní (API) používá Windows NT a uživatelský režim aplikace. Toto API se používá v raných fázích roku Proces spouštění Windows NT, když ostatní komponenty a API nejsou stále k dispozici. Proto několik komponent systému Windows, například Runtime subsystém klient / server (CSRSS), jsou implementovány pomocí nativního API. Nativní API také používá podprogramy jako jsou ti v kernel32.dll které implementují Windows API, API, na základě kterého je vytvořena většina komponent Windows.
Většina volání nativního API je implementována v ntoskrnl.exe a jsou vystaveni uživatelskému režimu do ntdll.dll. The Vstupní bod z ntdll.dll je LdrInitializeThunk
. Nativní volání API zpracovává jádro přes Tabulka deskriptorů systémových služeb (SSDT).
Funkční skupiny
Nativní API obsahuje mnoho funkcí. Obsahují C runtime funkce které jsou potřebné pro velmi základní C spuštění za běhu, například strlen (), sprintf (), memcpy () a floor (). Jiné běžné postupy jako malloc (), printf (), scanf () chybí (první, protože neurčuje halda přidělit paměť za a druhý a třetí, protože používají konzolu, přístupné pouze prostřednictvím KERNEL32.DLL). Drtivá většina ostatních rutin nativního rozhraní API má podle konvencí předponu se dvěma nebo třemi písmeny, což je:
- Nt nebo Zw jsou systémová volání deklarováno 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ěznili do režim jádra a zavolat 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.[1] Předpona Zw nestojí za nic.[2]
- Rtl je druhou největší skupinou 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 procesem podsystému Win32, csrss.exe (CSRSS znamená podsystém runtime klient / server).
- Dbg jsou ladění funkce, jako je software bod zlomu.
- Ki jsou upcalls z režimu jádra pro události jako APC dispečink.
- Ldr jsou funkce zavaděče pro PE zpracování souborů a spuštění nových procesů.
- Nls pro Podpora národních jazyků (podobně jako kódové stránky).
- Pfx pro zpracování předpony.
- Tp pro manipulaci s vlákny.
user32.dll a gdi32.dll zahrnují několik dalších hovorů, které se zachytí do režimu jádra. Ty nebyly součástí původního návrhu Windows NT, jak je vidět na 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. Systémové volání v rozsahu 0x1000-0x1FFF je tedy splněno win32k.sys (namísto ntoskrnl.exe, jak se provádí pro 0-0x0FFF) a jsou deklarovány v user32.dll a gdi32.dll. Tyto funkce mají NtUser a NtGdi předpona (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
- ^ NT Insider (27. srpna 2003). „Nt vs. Zw - Clearing Confusion On The Native API“. OSR online. Zdroje otevřených systémů OSR. 10 (4). Citováno 2013-09-16.
- ^ Raymond Chen (2009). „Stará nová věc: Co znamená předpona„ Zw “?“. společnost Microsoft. Citováno 2009-06-13.
externí odkazy
- Web, který dokumentuje většinu funkcí nativního API
- Uvnitř nativních aplikací
- Uvnitř nativního API
- Open source framework pro vývoj nativních aplikací
- Kompilace programů Free Pascal pro nativní API
- Nativní nástroje Windows NT - bezplatný vývoj nativních aplikací
- Nativní prostředí - příkazový řádek systému Windows, který lze spustit před podsystémem Winlogon a Win32