Biblioteki i nagłówki

Sterowniki trybu jądra używają natywnych procedur usług systemowych, wywołując punkty wejścia Nt i Zw w bibliotece linków dynamicznych (DLL) Ntoskrnl.exe. Ta biblioteka DLL zawiera rzeczywiste implementacje tych procedur. Aby uzyskać dostęp do tych punktów wejścia, sterownik statycznie łączy się z biblioteką Ntoskrnl.lib, która jest dostępna w zestawie sterowników systemu Windows (WDK). Procedury implementowane w Ntoskrnl.lib to zastępniki, które dynamicznie łączą się z punktami wejścia w Ntoskrnl.exe w czasie wykonywania.

W dokumentacji zestawu WDK opisano niektóre, ale nie wszystkie punkty wejścia Zw w Ntoskrnl.exe. Opisy procedur Zw , które mogą być wywoływane przez sterowniki, zobacz Procedury ZwXxx.

Większość udokumentowanych procedur Zw jest definiowana w pliku nagłówkowym Wdm.h w zestawie WDK, ale kilka z nich jest zdefiniowanych w innych plikach nagłówków, takich jak Ntddk.h i Ntifs.h.

Zazwyczaj aplikacje w trybie użytkownika nie nazywają procedur Nt i Zw . Zamiast tego aplikacja może wywołać procedurę Win32, taką jak CreateFile, która następnie wywołuje natywne procedury usług systemowych, takie jak NtCreateFile lub ZwCreateFile, w celu wykonania żądanej operacji. Jednak aplikacja w trybie użytkownika może bezpośrednio wywołać procedurę Nt lub Zw , aby wykonać operację, która nie jest obsługiwana przez procedury Win32.

Aplikacje w trybie użytkownika używają natywnych procedur usług systemowych przez wywołanie punktów wejścia w bibliotece linków dynamicznych Ntdll.dll. Te punkty wejścia konwertują wywołania procedur Nt i Zw na wywołania systemowe, które są przekazywane do trybu jądra. Aby uzyskać dostęp do tych punktów wejścia, aplikacja trybu użytkownika statycznie łączy się z biblioteką Ntdll.lib, która jest dostępna w zestawie WDK. Rutyny implementowane w Ntdll.lib to zastępniki, które dynamicznie łączą się z punktami wejścia w Ntdll.dll w czasie wykonywania.

W dokumentacji zestawu Windows SDK opisano niektóre, ale nie wszystkie punkty wejścia Nt w ntdll.lib. Większość udokumentowanych procedur Nt jest definiowana w pliku nagłówka Winternl.h w zestawie Windows SDK. Ta dokumentacja zawiera niewiele wzmianek o punktach wejścia Zw, a żadne pliki nagłówkowe w pakiecie Windows SDK nie zawierają definicji procedur Zw.

W przypadku kilku drobnych wyjątków każdy punkt wejścia w Ntdll.dll dla procedury Nt ma pasujący punkt wejścia dla procedury Zw . Dokumentacja zestawu WDK i zestawu Windows SDK zaleca, aby deweloperzy aplikacji unikali wywoływania nieudokumentowanych punktów wejścia Nt i ostrzegali, że punkty wejścia Zw mogą zniknąć z Ntdll.dll w przyszłej wersji systemu Windows. Deweloperzy aplikacji, którzy wywołują rutyny Zw z trybu użytkownika, powinni być przygotowani na taką sytuację.

Opisy procedur Nt, które mogą być wywoływane przez aplikacje, zobaczysz w Winternl, nagłówek winternl.h i Różne Low-Level Obsługa klienta. Niektóre strony referencyjne procedur Nt w dokumentacji zestawu Windows SDK zawierają etykietę procedur jako "przestarzałe" i doradzają czytelnikom używanie równoważnych procedur Win32 zamiast przestarzałych procedur Nt .

Aplikacja trybu użytkownika nie może wywołać punktów wejścia w Ntoskrnl.exe, a sterownik trybu jądra nie może wywołać punktów wejścia w Ntdll.dll.