Librerie e intestazioni
I driver in modalità kernel usano le routine dei servizi di sistema nativi chiamando i punti di ingresso Nt e Zw nella Ntoskrnl.exe libreria di collegamento dinamica (DLL). Questa DLL contiene le implementazioni effettive di queste routine. Per accedere a questi punti di ingresso, un driver collega staticamente alla libreria Ntoskrnl.lib, disponibile in Windows Driver Kit (WDK). Le routine implementate in Ntoskrnl.lib sono stub che collegano dinamicamente ai punti di ingresso in Ntoskrnl.exe in fase di esecuzione.
La documentazione di WDK descrive alcuni punti di ingresso di Zw in Ntoskrnl.exe, ma non tutti. Per le descrizioni delle routine Zw che possono essere chiamate dai driver, vedere ZwXxx Routines.
La maggior parte delle routine zw documentate è definita nel file di intestazione Wdm.h nel WDK, ma alcuni sono definiti in altri file di intestazione, ad esempio Ntddk.h e Ntifs.h.
In genere, le applicazioni in modalità utente non chiamano le routine Nt e Zw . Un'applicazione potrebbe invece chiamare una routine Win32, ad esempio CreateFile, che chiama quindi una routine dei servizi di sistema nativa, ad esempio NtCreateFile o ZwCreateFile, per eseguire l'operazione richiesta. Tuttavia, un'applicazione in modalità utente potrebbe chiamare direttamente una routine Nt o Zw per eseguire un'operazione non supportata dalle routine Win32.
Le applicazioni in modalità utente usano le routine dei servizi di sistema nativi chiamando i punti di ingresso nella libreria di collegamenti dinamici Ntdll.dll. Questi punti di ingresso convertono le chiamate in routine Nt e Zw in chiamate di sistema intrappolate in modalità kernel. Per accedere a questi punti di ingresso, un'applicazione in modalità utente collega staticamente alla libreria Ntdll.lib, disponibile in WDK. Le routine implementate in Ntdll.lib sono stub che collegano dinamicamente ai punti di ingresso in Ntdll.dll in fase di esecuzione.
La documentazione di Windows SDK descrive alcuni punti di ingresso Nt , ma non tutti, in Ntdll.lib. La maggior parte delle routine Nt documentate è definita nel file di intestazione Winternl.h in Windows SDK. Questa documentazione illustra poco i punti di ingresso Zw e nessun file di intestazione in Windows SDK contiene definizioni di routine Zw.
Con un paio di eccezioni secondarie, ogni punto di ingresso in Ntdll.dll per una routine Nt ha un punto di ingresso corrispondente per una routine Zw . La documentazione per WDK e Windows SDK consiglia agli sviluppatori di applicazioni di evitare di chiamare punti di ingressoNt non documentati e avvisa che i punti di ingresso Zw potrebbero scomparire da Ntdll.dll in una versione futura di Windows. Gli sviluppatori di applicazioni che chiamano le routine Zw dalla modalità utente devono essere preparati per questa occorrenza.
Per le descrizioni delle routine Nt che possono essere chiamate dalle applicazioni, vedere Winternl, winternl.h header e Varie Low-Level Supporto client. Alcune pagine di riferimento per le routine Nt nella documentazione di Windows SDK etichettano le routine come "deprecate" e consigliano ai lettori di usare le routine Win32 equivalenti anziché le routine Nt deprecate.
Un'applicazione in modalità utente non può chiamare i punti di ingresso in Ntoskrnl.exe e un driver in modalità kernel non può chiamare i punti di ingresso in Ntdll.dll.