Partager via


Bug Check 0x18 : REFERENCE_BY_POINTER

Le bug check REFERENCE_BY_POINTER a une valeur de 0x00000018. Cela indique que le compteur de références d’un objet est illégal pour l’état actuel de l’objet.

Important

Cet article s’adresse aux programmeurs. Si vous êtes un client et que vous avez reçu ce code d’erreur d’écran bleu en utilisant votre ordinateur, consultez Résoudre les erreurs d’écran bleu.

Paramètres REFERENCE_BY_POINTER

Paramètre Description

1

Type d’objet de l’objet dont le compteur de références est en cours de réduction.

2

Objet dont le compteur de références est en cours de réduction.

3

Reserved

4

Reserved

Cause

Le compteur de références d’un objet est illégal pour l’état actuel de l’objet. Chaque fois qu’un pilote utilise un pointeur vers un objet, le pilote appelle une routine du kernel pour augmenter le compteur de références de l’objet de un. Lorsque le pilote a terminé avec le pointeur, il appelle une autre routine du kernel pour diminuer le compteur de références de un.

Les pilotes doivent faire correspondre les appels aux routines qui augmentent (reference) et diminuent (dereference) le compteur de références. Ce bug check est causé par une incohérence dans le compteur de références de l’objet. En général, l’incohérence est causée par un pilote qui diminue trop de fois le compteur de références d’un objet, en effectuant des appels supplémentaires qui déréférencent l’objet. Ce bug check peut se produire parce que le compteur de références d’un objet tombe à zéro alors qu’il reste encore des handles ouverts sur l’objet. Il peut également se produire lorsque le compteur de références de l’objet descend en dessous de zéro, qu’il y ait ou non des handles ouverts sur l’objet.

Résolution

Assurez-vous que le pilote fait correspondre les appels aux routines qui augmentent et diminuent le compteur de références de l’objet. Assurez-vous que votre pilote n’effectue pas d’appels supplémentaires aux routines qui déréférencent l’objet (voir Paramètre 2).

Vous pouvez utiliser un débogueur pour vous aider à analyser ce problème. Pour plus d’informations, veuillez consulter la section Analyse des vidages mémoire à l’aide des débogueurs Windows (WinDbg). L'extension de débogage !analyze affiche des informations sur la vérification d'un bogue et peut être utile pour déterminer la cause racine.

Pour trouver le nombre de handles et de pointeurs sur l’objet, utilisez la commande de débogueur !object.

kd> !object address

address est l’adresse de l’objet donnée dans le Paramètre 2.

Vous pouvez également définir un point d’arrêt dans le code menant à ce code d’arrêt et essayer d’exécuter une étape à la fois dans le code défaillant.

Si vous n’êtes pas équipé pour utiliser le débogueur Windows pour travailler sur ce problème, vous pouvez utiliser quelques techniques de dépannage de base.

  • Vérifiez le journal système dans le Visualisateur d’événements pour des messages d’erreur supplémentaires qui pourraient aider à identifier le périphérique ou le pilote qui cause 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.

  • Confirmez que tout nouveau matériel installé est compatible avec la version installée de Windows. Par exemple, vous pouvez obtenir des informations sur le matériel requis sur les Spécifications de Windows 10.

  • Pour davantage d’informations concernant le dépannage, veuillez consulter la section Analyser les données d’écran bleu de vérification des bogues.