Types d’API
Un appel de procédure asynchrone (APC) est une fonction qui s’exécute de manière asynchrone. Les API sont similaires aux appels de procédure différée (DPC), mais contrairement aux PDC, les API s’exécutent dans le contexte d’un thread particulier. Les pilotes (autres que les systèmes de fichiers et les pilotes de filtre de système de fichiers) n’utilisent pas directement les API, mais d’autres parties du système d’exploitation le font. Vous devez donc être conscient du fonctionnement des API.
Le système d’exploitation Windows utilise quatre types d’API :
Les API spéciales en mode utilisateur s’exécutent strictement en mode utilisateur et s’exécutent toujours, même si le thread cible n’est pas dans un état d’attente pouvant être alerté. Pour plus d’informations sur les API en mode utilisateur spéciales, consultez QueueUserAPC2.
Les API en mode utilisateur standard s’exécutent strictement en mode utilisateur et uniquement lorsque le thread cible est dans un état d’attente pouvant être alerté. Le système d’exploitation utilise des API utilisateur standard pour implémenter des mécanismes tels que les E/S qui se chevauchent et la routine QueueUserApc Win32.
Les API de noyau normaux s’exécutent en mode noyau à IRQL = PASSIVE_LEVEL. Un APC de noyau normal préempte tout le code en mode utilisateur, y compris les API utilisateur. Les API de noyau normaux sont généralement utilisés par les systèmes de fichiers et les pilotes de filtre de système de fichiers.
Les API de noyau spéciales s’exécutent en mode noyau à IRQL = APC_LEVEL. Un APC de noyau spécial préempte le code en mode utilisateur et le code en mode noyau qui s’exécute à IRQL = PASSIVE_LEVEL, y compris les API utilisateur et les API de noyau normales. Le système d’exploitation utilise des API de noyau spéciales pour gérer des opérations telles que l’achèvement des demandes d’E/S.
Pour obtenir la liste des IRQL de la priorité la plus basse à la priorité la plus élevée, consultez Gestion des priorités matérielles.