Forcer un crash système depuis le clavier

Les types de claviers suivants peuvent provoquer un crash système directement :

  • Claviers PS/2 connectés sur des ports i8042prt Cette fonctionnalité est disponible dans Windows 2000 et les versions ultérieures du système d’exploitation Windows.

  • Claviers USB
    Cette fonctionnalité est disponible dans Windows Vista et les versions ultérieures du système d’exploitation Windows.

  • Claviers Hyper-V
    Cette fonctionnalité est disponible dans Windows 10 version 1903 et les versions ultérieures du système d’exploitation Windows.

Configuration

Configurez les paramètres suivants pour activer un crash système à l’aide du clavier :

  1. Si vous souhaitez qu’un fichier de vidage sur incident soit écrit, vous devez activer ces fichiers de vidage. Choisissez le chemin et le nom du fichier, et sélectionnez la taille du fichier de vidage. Pour plus d’informations, consultez Activation d’un fichier de vidage en mode noyau.

  2. Avec les claviers PS/2, vous devez activer le crash initié par le clavier dans le registre. Dans la clé de registre HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters, créez une valeur nommée CrashOnCtrlScroll, et attribuez-lui une REG_DWORD valeur de 0x01.

  3. Avec les claviers USB, vous devez activer le crash initié par le clavier dans le registre. Dans la clé de registre HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters, créez une valeur nommée CrashOnCtrlScroll, et attribuez-lui une REG_DWORD valeur de 0x01.

  4. Avec les claviers Hyper-V, vous devez activer le crash initié par le clavier dans le registre. Dans la clé de registre HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\hyperkbd\Parameters, créez une valeur nommée CrashOnCtrlScroll, et attribuez-lui une REG_DWORD valeur de 0x01.

Certains ordinateurs portables utilisent le pilote PS/2 pour le clavier intégré et prennent également en charge les claviers HID externes. Pour ces systèmes, envisagez de créer à la fois les clés de registre USB et PS/2 pour permettre l’utilisation de l’un ou l’autre clavier.

Vous devez redémarrer le système pour que ces paramètres prennent effet.

Une fois le redémarrage terminé, le crash du clavier peut être initié en utilisant la séquence de touches suivante : Maintenez enfoncée la touche CTRL la plus à droite, et appuyez deux fois sur la touche SCROLL LOCK.

Le système appelle alors KeBugCheck et émet Vérification des bugs 0xE2 : MANUALLY_INITIATED_CRASH. Sauf si les vidages sur incident ont été désactivés, un fichier de vidage sur incident est alors écrit.

Si un débogueur du noyau est attaché à la machine qui a crashé, la machine entrera dans le débogueur du noyau après l’écriture du fichier de vidage.

Définir des raccourcis clavier alternatifs pour forcer un crash système à partir du clavier

Vous pouvez configurer des valeurs alternatives sous les sous-clés de registre suivantes pour des séquences de raccourcis clavier afin de générer le fichier de vidage mémoire :

  • Pour les claviers PS/2 :

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\crashdump

  • Pour les claviers USB :

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\crashdump

  • Pour les claviers Hyper-V :

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\hyperkbd\crashdump

Vous devez créer les valeurs de registre REG_DWORD suivantes sous ces sous-clés :

Dump1Keys

La valeur de registre Dump1Keys est une carte binaire de la première touche de raccourci à utiliser. Par exemple, au lieu d’utiliser la touche CTRL la plus à droite pour initier la séquence de raccourcis clavier, vous pouvez définir la première touche comme étant la touche SHIFT la plus à gauche.

Les valeurs hexadécimales pour la première touche sont décrites dans le tableau suivant.

Valeur Première touche utilisée dans la séquence de raccourcis clavier
0x01 Touche SHIFT la plus à droite
0x02 Touche CTRL la plus à droite
0x04 Touche ALT la plus à droite
0x10 Touche SHIFT la plus à gauche
0x20 Touche CTRL la plus à gauche
0x40 Touche ALT la plus à gauche

Vous pouvez attribuer à Dump1Keys une valeur qui active une ou plusieurs touches comme première touche utilisée dans la séquence de raccourcis clavier. Par exemple, attribuez à Dump1Keys une valeur de 0x11 pour définir à la fois les touches SHIFT la plus à droite et la plus à gauche comme première touche dans la séquence de raccourcis clavier.

Dump2Key

La valeur de registre Dump2Key est l’index dans la table des codes de scan pour la disposition du clavier de l’ordinateur cible. Consultez la table réelle dans le pilote :

const UCHAR keyToScanTbl[134] = { 
        0x00,0x29,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
        0x0A,0x0B,0x0C,0x0D,0x7D,0x0E,0x0F,0x10,0x11,0x12,
        0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x00,
        0x3A,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,
        0x27,0x28,0x2B,0x1C,0x2A,0x00,0x2C,0x2D,0x2E,0x2F,
        0x30,0x31,0x32,0x33,0x34,0x35,0x73,0x36,0x1D,0x00,
        0x38,0x39,0xB8,0x00,0x9D,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0xD2,0xD3,0x00,0x00,0xCB,
        0xC7,0xCF,0x00,0xC8,0xD0,0xC9,0xD1,0x00,0x00,0xCD,
        0x45,0x47,0x4B,0x4F,0x00,0xB5,0x48,0x4C,0x50,0x52,
        0x37,0x49,0x4D,0x51,0x53,0x4A,0x4E,0x00,0x9C,0x00,
        0x01,0x00,0x3B,0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,
        0x43,0x44,0x57,0x58,0x00,0x46,0x00,0x00,0x00,0x00,
        0x00,0x7B,0x79,0x70 };

L’index 124 (sysreq) est un cas particulier car un clavier à 84 touches a un code de scan différent.

Si vous définissez des raccourcis clavier alternatifs pour forcer un crash système à partir d’un clavier USB ou PS/2, vous devez soit définir la valeur de registre CrashOnCtrlScroll à 0, soit la supprimer du registre.

Exemple : Dans ce scénario, un ordinateur portable utilise un pilote de clavier PS/2, et un clavier HID externe est connecté. Définir les deux valeurs permet de déclencher un crash système manuel à partir de l’un ou l’autre des claviers. Un crash système manuel peut être forcé en maintenant la touche contrôle la plus à droite et en appuyant deux fois sur la barre d’espace lorsque la clé de registre suivante est définie.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\crashdump]
"Dump1Keys"=dword:00000002
"Dump2Key"=dword:0000003d

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\crashdump]
"Dump1Keys"=dword:00000002
"Dump2Key"=dword:0000003d

Limites

Il est possible mais rare qu’un système se fige de manière à ce que la séquence de raccourcis clavier ne fonctionne pas. Utiliser la séquence de raccourcis clavier pour initier un crash fonctionnera même dans de nombreux cas où CTRL+ALT+SUPPR ne fonctionne pas.

Forcer un crash système à partir du clavier ne fonctionne pas si l’ordinateur cesse de répondre à un niveau de requête d’interruption élevé (IRQL). Cette limitation existe parce que le pilote Kbdhid.sys, qui permet l’exécution du processus de vidage mémoire, fonctionne à un IRQL inférieur à celui du pilote i8042prt.sys.

Voir aussi

Vérification des bugs 0xE2 : MANUALLY_INITIATED_CRASH

!analyze -v

Analyse d’un fichier de dump en mode noyau avec WinDbg

Bug Check 0x161 : LIVE_SYSTEM_DUMP

Générer un noyau ou un vidage sur incident complet

Variétés de fichiers de vidage en mode noyau.