Fonction KeRegisterBugCheckCallback (wdm.h)

La routine KeRegisterBugCheckCallback enregistre une routine BugCheckCallback, qui s’exécute lorsque le système d’exploitation émet un bogue case activée.

Syntaxe

BOOLEAN KeRegisterBugCheckCallback(
  [out]          PKBUGCHECK_CALLBACK_RECORD  CallbackRecord,
  [in]           PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
  [in, optional] PVOID                       Buffer,
  [in]           ULONG                       Length,
  [in]           PUCHAR                      Component
);

Paramètres

[out] CallbackRecord

Pointeur vers un enregistrement de rappel précédemment initialisé par KeInitializeCallbackRecord, pour lequel l’appelant fournit un stockage non paginé.

[in] CallbackRoutine

Pointeur vers la fonction de rappel KBUGCHECK_CALLBACK_ROUTINE fournie par le pilote.

[in, optional] Buffer

Pointeur vers une mémoire tampon fournie par l’appelant, qui doit se trouver dans la mémoire résidente, comme un pool non paginé.

[in] Length

Spécifie la taille en octets de la mémoire tampon allouée à l’appelant.

[in] Component

Pointeur vers une chaîne ANSI terminée par null qui identifie l’appelant. Cette chaîne contient généralement le nom du pilote de périphérique, ou éventuellement de son appareil.

Valeur retournée

KeRegisterBugCheckCallback retourne TRUE si la routine fournie par l’appelant est correctement ajoutée au jeu de rappels case activée de bogues inscrits ; sinon, elle retourne FALSE.

Remarques

La routine KeRegisterBugCheckCallback enregistre une routine BugCheckCallback, le type le plus simple de routine de rappel case activée bogues.

Pour inscrire d’autres types de rappels case activée de bogues, tels que les routines KbCallbackDumpIo et KbCallbackAddPages, utilisez plutôt la routine KeRegisterBugCheckReasonCallback.

La routine BugCheckCallback est exécutée lorsque le système émet un bogue case activée. Un pilote peut utiliser la routine pour réinitialiser l’appareil à un état connu. Pour plus d’informations, consultez BugCheckCallback.

Les pilotes peuvent utiliser la routine KeDeregisterBugCheckCallback pour supprimer le rappel. Tout pilote qui peut être déchargé doit supprimer tous ses rappels dans sa routine de déchargement .

La chaîne de composant est utilisée pour identifier le pilote pendant le débogage du vidage sur incident. Pour afficher les données de vidage sur incident correspondant à n’importe quelle chaîne de composant spécifiée, vous pouvez utiliser l’extension du débogueur !bugdump . Il est également possible de déboguer le bogue case activée routine de rappel elle-même. Pour plus d’informations sur les débogueurs et les extensions de débogueur, consultez Débogage Windows.

Implémentation

Pour définir une routine de rappel BugCheckCallback, vous devez d’abord fournir une déclaration de fonction qui identifie le type de routine de rappel que vous définissez. Windows fournit un ensemble de types de fonctions de rappel pour les pilotes. La déclaration d’une fonction à l’aide des types de fonction de rappel permet à l’analyse du code pour les pilotes, le vérificateur de pilotes statique (SDV) et d’autres outils de vérification de trouver les erreurs.

Par exemple, pour définir une routine de rappel BugCheckCallback nommée MyBugCheckCallback, utilisez le type KBUGCHECK_CALLBACK_ROUTINE comme indiqué dans cet exemple de code :

KBUGCHECK_CALLBACK_ROUTINE MyBugCheckCallback;

Ensuite, implémentez votre routine de rappel comme suit :

_Use_decl_annotations_
VOID
  MyBugCheckCallback(
    PVOID  Buffer,
    ULONG  Length
    )
  {
      // Function body
  }

Le type de fonction KBUGCHECK_CALLBACK_ROUTINE est défini dans le fichier d’en-tête Wdm.h.

Pour identifier plus précisément les erreurs lors de l’exécution des outils d’analyse du code, veillez à ajouter le _Use_decl_annotations_ annotation à votre définition de fonction. L’annotation Use_decl_annotations garantit que les annotations appliquées au type de fonction KBUGCHECK_CALLBACK_ROUTINE dans le fichier d’en-tête sont utilisées. Pour plus d’informations sur la configuration requise pour les déclarations de fonction, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes WDM. Pour plus d’informations sur Use_decl_annotations, consultez Annotating Function Behavior.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 2000.
Plateforme cible Universal
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL N’importe quel niveau

Voir aussi

Écriture d’une routine de rappel de vérification des bogues.

KeDeregisterBugCheckCallback

KeInitializeCallbackRecord

KeRegisterBugCheckReasonCallback