Partilhar via


Forçar um crash do sistema a partir do teclado

Ao solucionar problemas do sistema, talvez seja necessário gerar um arquivo de despejo de memória para analisar o estado do sistema. Você pode forçar uma falha do sistema diretamente do teclado usando combinações de teclas específicas. Esse recurso é útil quando um sistema deixa de responder ou quando você precisa capturar informações de diagnóstico.

Este artigo explica como:

  • Configurar as definições do Registo para ativar falhas iniciadas pelo teclado
  • Usar atalhos de teclado para disparar uma falha do sistema
  • Configurar atalhos de teclado alternativos

Esta funcionalidade funciona com teclados PS/2 (Windows 2000 e posterior), teclados USB (Windows Vista e posterior) e teclados Hyper-V (Windows 10 versão 1903 e posterior).

Atenção

Forçar uma falha do sistema faz com que ele pare imediatamente e pode resultar em perda de dados. Use esse recurso somente quando necessário para fins de depuração e garanta que você salve seu trabalho.

Configuração

Configure os seguintes parâmetros para causar uma falha do sistema utilizando o teclado:

  1. Se você quiser que um arquivo de despejo de memória seja gravado, você deve habilitar esses arquivos de despejo. Escolha o caminho e o nome do arquivo e selecione o tamanho do arquivo de despejo. Para obter mais informações, consulte Ativando um arquivo de despejo de modo kernel.

  2. Para teclados PS/2: Habilite a falha iniciada pelo teclado no registro:

    • Navegue até HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters
    • Criar um valor chamado CrashOnCtrlScroll
    • Defina-o como REG_DWORD valor de 0x01
  3. Com teclados USB, é necessário ativar o crash iniciado pelo teclado no registo.

    • Na chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parametersdo Registro , crie um valor chamado CrashOnCtrlScroll
    • Defina um valor de REG_DWORD igual a 0x01.
  4. Com os teclados do Hyper-V, deve ativar o crash iniciado pelo teclado no registo do sistema.

    • Na chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\hyperkbd\Parametersdo Registro , crie um valor chamado CrashOnCtrlScroll
    • Defina-o como um REG_DWORD valor de 0x01.

Alguns laptops usam o driver PS/2 para o teclado embutido e também suportam teclados HID externos. Para esses sistemas, considere a criação das chaves de registro USB e PS/2 para permitir o uso de qualquer teclado.

Você deve reiniciar o sistema para que essas configurações entrem em vigor.

Quando a reinicialização estiver concluída, a falha do teclado pode ser iniciada usando a seguinte sequência de teclas de atalho: Mantenha pressionada a tecla CTRL mais à direita e pressione a tecla SCROLL LOCK duas vezes.

Em seguida, o sistema chama KeBugCheck e emite Bug check 0xE2: MANUALLY_INITIATED_CRASH. A menos que os despejos de memória estejam desativados, um arquivo de despejo de memória é gravado.

Se um depurador do kernel estiver conectado à máquina que sofreu um acidente, a máquina acessa o depurador do kernel após a gravação do arquivo de despejo de memória.

Definir atalhos de teclado alternativos para forçar uma falha do sistema a partir do teclado

Você pode configurar valores alternativos nas seguintes subchaves do Registro para sequências de atalho de teclado para gerar o arquivo de despejo de memória:

  • Para teclados PS/2:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\crashdump

  • Para teclados USB:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\crashdump

  • Para teclados Hyper-V:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\hyperkbd\crashdump

Você deve criar os seguintes valores do Registro REG_DWORD nessas subchaves:

Dump1Keys

O valor do registo Dump1Keys é um bitmap da primeira tecla de atalho a utilizar. Por exemplo, em vez de usar a tecla CTRL mais à direita para iniciar a sequência de teclas de atalho, você pode definir a primeira tecla de atalho como sendo a tecla SHIFT mais à esquerda.

A tabela a seguir descreve os valores hexadecimais para a primeira tecla de atalho.

Valor Primeira tecla usada na sequência de atalhos de teclado
0x01 Tecla SHIFT mais à direita
0x02 Tecla CTRL mais à direita
0x04 Tecla ALT mais à direita
0x10 Tecla SHIFT mais à esquerda
0x20 Tecla CTRL mais à esquerda
0x40 Tecla ALT mais à esquerda

Você pode atribuir Dump1Keys um valor que habilite uma ou mais teclas como a primeira tecla usada na sequência de atalhos de teclado. Por exemplo, atribua Dump1Keys um valor de 0x11 para definir as teclas SHIFT mais à direita e mais à esquerda como a primeira tecla na sequência de atalhos de teclado.

Dump2Key

O Dump2Key valor do Registro é o índice na tabela de códigos de verificação para o layout de teclado do computador de destino. Veja a tabela real no driver:

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 };

O índice 124 (sysreq) é um caso especial porque um teclado de 84 teclas tem um código de verificação diferente.

Se definires atalhos de teclado alternativos para forçar uma falha do sistema a partir de um teclado USB ou PS/2, tens de definir o valor do registo CrashOnCtrlScroll para 0 ou removê-lo do registo.

Example

Nesse cenário, um laptop usa um driver de teclado PS2 e um teclado HID externo é conectado. A configuração de ambos os valores permite provocar uma falha manual do sistema a partir de um dos teclados. Você pode forçar uma falha manual do sistema segurando a tecla de controle mais à direita e pressionando a barra de espaço duas vezes quando a seguinte chave do Registro estiver definida.

[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

Limitações

É possível, mas raro, que um sistema congele de tal forma que a sequência de atalhos de teclado não funcione. Usar a sequência de atalhos de teclado para iniciar um crash funciona mesmo quando CTRL + ALT + DELETE não funciona.

Forçar uma falha do sistema a partir do teclado não funciona se o computador parar de responder em um alto nível de solicitação de interrupção (IRQL). Essa limitação existe porque o driver Kbdhid.sys , que permite que o processo de despejo de memória seja executado, opera em um IRQL menor do que o driver i8042prt.sys .

Consulte também

Verificação de falhas 0xE2: MANUALLY_INITIATED_CRASH

!analyze -v

Analisando um arquivo de despejo de Kernel-Mode com o WinDbg

Verificação de Erro 0x161: LIVE_SYSTEM_DUMP

Gerar a informação de falha de sistema completa ou um kernel

Variedades de arquivos de despejo do Kernel-Mode.