AMcD
L’API NATIVE
5
Version 1.02
Alors ? Seuls quelques « passionnés » de technique seraient en droit de déplorer
que Microsoft n’ait pas fait l’effort de documenter cette API « native » de services
système
15
? Malheureusement non…
Il y a, tout de même, un petit problème !
Car, en réalité, toutes les fonctions de ntdll.dll ne sont pas « encapsulées » par les
fonctions d’API d’un SSE ; certaines sont destinées à être uniquement utilisées en
« interne » par Windows
16
et permettent des choses impossibles à réaliser via
l’utilisation des APIs classiques, comme, par exemple, obtenir la liste des handles
ouverts d’un processus, récupérer le nombre de changements de contexte effectués
par un processeur, ou fixer les paramètres étendus d’un fichier.
C’est cet aspect « réservé » qui a engendré la rumeur « d’avantage déloyal »…
Il n’y a d’ailleurs pas que le problème des fonctions « réservées » ! Il y a aussi celui
de celles qui, bien que « documentées » via une fonction d’API, offrent de subtiles
nuances d’utilisation bien pratiques si on utilise directement la version native (non
documentée donc, à de très rares exceptions près).
Prenons le cas de CreateFile(), de Win32, qui se contente de 7 paramètres d’appel ;
son « alter ego » de ntdll.dll, NtCreateFile(), en nécessitant 11… vous vous doutez
bien que cela doit autoriser un plus grand nombre de possibilités
17
!
Les domaines de Windows concernés par les fonctions « cachées/réservées » sont
nombreux, même s’ils restent, tout de même, plutôt « spécifiques » :
• Objets système.
• LPC (
L
ocal
P
rocedure
C
alls).
• Mémoire virtuelle.
• Informations sur le système.
• Sécurité.
• Etc.
Il y a plusieurs dizaines de fonctions à découvrir (redécouvrir ?) et un livre entier
n’y suffirait pas ! Cet article étant juste une introduction sur le sujet, si l’API native
vous passionne je vous conseille alors de bondir sur les ouvrages cités en référence,
notamment [2000NEBB].
15
Comme cela l’est pour d’autres OS, UNIX, par exemple…
16
Notamment [2000SOLO], p. 60.
17
Plus d’options de création, de spécifications d’attributs de fichiers, etc.