Partager via


Bibliothèques et en-têtes

Les pilotes en mode noyau utilisent les routines des services système natifs en appelant les points d’entrée Nt et Zw dans la bibliothèque de liens dynamiques (DLL) Ntoskrnl.exe. Cette DLL contient les implémentations réelles de ces routines. Pour accéder à ces points d’entrée, un pilote est lié statiquement à la bibliothèque Ntoskrnl.lib, disponible dans le Kit de pilotes Windows (WDK). Les routines implémentées dans Ntoskrnl.lib sont des stubs qui relient dynamiquement les points d’entrée dans Ntoskrnl.exe au moment de l’exécution.

La documentation WDK décrit quelques-uns, mais pas tous, des points d’entrée zw dans Ntoskrnl.exe. Pour obtenir des descriptions des routines Zw qui peuvent être appelées par les pilotes, consultez Routines ZwXxx.

La plupart des routines Zw documentées sont définies dans le fichier d’en-tête Wdm.h dans wdK, mais quelques-uns sont définis dans d’autres fichiers d’en-tête, tels que Ntddk.h et Ntifs.h.

En règle générale, les applications en mode utilisateur n’appellent pas les routines Nt et Zw . Au lieu de cela, une application peut appeler une routine Win32, telle que CreateFile, qui appelle ensuite une routine de services système natifs, telle que NtCreateFile ou ZwCreateFile, pour effectuer l’opération demandée. Toutefois, une application en mode utilisateur peut appeler directement une routine Nt ou Zw pour effectuer une opération qui n’est pas prise en charge par les routines Win32.

Les applications en mode utilisateur utilisent les routines des services système natifs en appelant les points d’entrée dans la bibliothèque de liens dynamiques Ntdll.dll. Ces points d’entrée convertissent les appels en routines Nt et Zw en appels système piégés en mode noyau. Pour accéder à ces points d’entrée, une application en mode utilisateur est liée statiquement à la bibliothèque Ntdll.lib, qui est disponible dans le WDK. Les routines implémentées dans Ntdll.lib sont des stubs qui relient dynamiquement les points d’entrée dans Ntdll.dll au moment de l’exécution.

La documentation du Kit de développement logiciel (SDK) Windows décrit certains, mais pas tous, des points d’entrée Nt dans Ntdll.lib. La plupart des routines Nt documentées sont définies dans le fichier d’en-tête Winternl.h dans le Kit de développement logiciel (SDK) Windows. Cette documentation mentionne peu les points d’entrée Zw et aucun fichier d’en-tête dans le Kit de développement logiciel (SDK) Windows ne contient des définitions de routines Zw .

Avec quelques exceptions mineures, chaque point d’entrée dans Ntdll.dll pour une routine Nt a un point d’entrée correspondant pour une routine Zw . La documentation relative au KIT de développement logiciel (SDK) WDK et Windows recommande aux développeurs d’applications d’éviter d’appeler des points d’entrée Nt non documentés et avertit que les points d’entrée Zw peuvent disparaître de Ntdll.dll dans une version ultérieure de Windows. Les développeurs d’applications qui appellent les routines Zw à partir du mode utilisateur doivent être préparés pour cette occurrence.

Pour obtenir des descriptions des routines Nt qui peuvent être appelées par les applications, consultez l’en-tête Winternl, winternl.h et Divers Low-Level Support client. Certaines pages de référence pour les routines Nt dans la documentation du Kit de développement logiciel (SDK) Windows étiquetent les routines comme « déconseillées » et conseillent aux lecteurs d’utiliser les routines Win32 équivalentes au lieu des routines Nt déconseillées.

Une application en mode utilisateur ne peut pas appeler les points d’entrée dans Ntoskrnl.exe, et un pilote en mode noyau ne peut pas appeler les points d’entrée dans Ntdll.dll.