Bug check 0x1 : APC_INDEX_MISMATCH
Le bug check APC_INDEX_MISMATCH a une valeur de 0x00000001. Ce bug check indique une incohérence dans l’index de l’état des appels de procédure asynchrone (APC).
Important
Cet article s’adresse aux programmeurs. Si vous êtes un client Microsoft et que votre ordinateur affiche un code d’erreur d’écran bleu, veuillez consulter la section Dépanner les erreurs d’écran bleu.
Paramètres de APC_INDEX_MISMATCH
Paramètre | Description |
---|---|
1 | L’adresse de la fonction système (appel système) ou de la routine de travail. |
2 | La valeur du champ ApcStateIndex du thread actuel. |
3 | La valeur du champ CombinedApcDisable du thread actuel. Ce champ se compose de deux champs distincts de 16 bits : (Thread>SpecialApcDisable<< 16) | Thread>KernelApcDisable. |
4 | Type d’appel : 0 : Appel système 1 : Routine de travail |
Cause
La cause la plus courante de ce bug check est lorsqu’un système de fichiers ou un pilote a une séquence incohérente d’appels pour désactiver et réactiver les APC. L’élément de données clé est le champ Thread>CombinedApcDisable. Le champ CombinedApcDisable se compose de deux champs distincts de 16 bits : SpecialApcDisable et KernelApcDisable. Une valeur négative de l’un de ces champs indique qu’un pilote a désactivé les APC spéciaux ou normaux (respectivement) sans les réactiver. Une valeur positive indique qu’un pilote a activé trop de fois les APC spéciaux ou normaux.
Résolution
Vous pouvez résoudre ce problème en utilisant WinDbg ou en utilisant des techniques de dépannage de base.
Déboguer en utilisant WinDbg
L’extension du débogueur !analyze affiche des informations sur le bug check et peut vous aider à déterminer la cause racine.
Vous pouvez utiliser l’extension !apc pour afficher le contenu d’un ou plusieurs APC.
Vous pouvez également définir un point d’arrêt dans le code qui précède ce code d’arrêt et tenter d’avancer pas à pas dans le code défaillant.
Pour plus d’informations sur l’utilisation de WinDbg, veuillez consulter la section Analyse des vidages mémoire à l’aide des débogueurs Windows (WinDbg).
Déboguer sans utiliser WinDbg
Si vous n’êtes pas équipé pour utiliser le débogueur Windows pour résoudre ce problème :
Dans l’Observateur d’événements, vérifiez le journal Système pour plus de messages d’erreur qui pourraient vous aider à identifier le périphérique ou le pilote à l’origine de ce bug check.
Si un pilote est identifié dans le message de bug check, désactivez le pilote ou vérifiez auprès du fabricant les mises à jour du pilote.
Assurez-vous que tout nouveau matériel installé est compatible avec la version de Windows installée. Par exemple, vous pouvez obtenir des informations sur le matériel requis sur les Spécifications de Windows 10.
Pour des informations de dépannage plus générales, veuillez consulter la section Analyser les données d’écran bleu de vérification des bogues.
Notes
Ce bug check est le résultat d’une erreur interne dans le noyau. Cette erreur se produit à la sortie d’un appel système. Une cause possible de ce bug check est un système de fichiers ou un pilote qui a une séquence incohérente d’appels système pour entrer ou quitter des régions gardées ou critiques. Par exemple, chaque appel à KeEnterCriticalRegion doit avoir un appel correspondant à KeLeaveCriticalRegion.
Si vous développez un pilote, vous pouvez utiliser Static Driver Verifier, un outil d’analyse statique disponible dans le Windows Driver Kit, pour détecter les problèmes dans votre code avant de livrer votre pilote. Exécutez Static Driver Verifier avec la règle CriticalRegions pour vérifier que votre code source utilise ces appels système dans le bon ordre.