La méthode exacte dépend de l'architecture du processeur et des opérations qu'il définit pour le transfert en mode noyau. Une approche, et la traditionnelle sur x86, consistait à utiliser une interruption logicielle. Il s'est avéré que ce n'était pas très rapide pour le cas général si plus tard, Intel a ajouté SYSCALL
et AMD a ajouté SYSENTER
. Windows XP et versions ultérieures choisissent une technique d'appel système appropriée pour la plate-forme, au moment du démarrage.
Vous pouvez choisir d'utiliser des numéros d'interruption logicielle spécifiques pour des fonctions spécifiques, mais généralement le processeur ne dispose pas d'interruptions suffisantes pour couvrir toutes les fonctions du système, de sorte qu'un des registres contienne le numéro de fonction requis. Si vous le faites de toute façon, il n'est pas difficile de n'utiliser qu'une seule fonction d'appel système.
Windows CE, avant la version 6.0, utilise un modèle d'adresse virtuelle de processus côte à côte qui permet aux processus de s'appeler directement les uns aux autres. Les protections de page sont configurées pour que, une fois cette opération effectuée, une violation de violation d'accès se produise: le noyau obtient le contrôle, corrige l'espace d'adressage du processus (déplace le processus appelé dans l'emplacement 0), corrige les arguments au processus appelant, et retourne en mode utilisateur. Parce que l'adresse de retour est dans un autre processus, lorsque l'appel de fonction renvoie, le processus inverse se produit. Malheureusement, ce modèle n'autorise que de très petits espaces d'adressage virtuel pour chaque processus (32 Mo) et un nombre réduit de processus (32), de sorte que Windows CE 6.0 revient à un modèle d'appel système plus traditionnel.