Compartilhar via


forçar uma falha do sistema pelo 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. Essa funcionalidade é útil quando um sistema não responde ou quando você precisa capturar informações de diagnóstico.

Este artigo explica como:

  • Configurar as configurações do Registro para habilitar crashes iniciados pelo teclado
  • Usar atalhos de teclado para disparar uma falha no sistema
  • Configurar atalhos de teclado alternativos

Esse recurso 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).

Cuidado

Forçar uma falha do sistema imediatamente interrompe seu sistema e pode resultar em perda de dados. Use esse recurso somente quando necessário para fins de depuração e certifique-se de salvar seu trabalho.

Configuração

Defina as seguintes configurações para ocasionar uma queda do sistema usando o teclado:

  1. Se quiser que um arquivo de despejo de falhas seja gravado, você deve ativar 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 Como ativar um arquivo de despejo no 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 a falha iniciada pelo teclado no registro.

    • Na chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parametersdo Registro, crie um valor chamado CrashOnCtrlScroll
    • Defina-o igual a um REG_DWORD valor de 0x01.
  4. Com teclados Hyper-V, é necessário ativar a falha iniciada pelo teclado no registro.

    • Na chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\hyperkbd\Parametersdo Registro, crie um valor chamado CrashOnCtrlScroll
    • Defina-o igual a 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 de chaves de registro USB e PS/2 para permitir o uso de qualquer um dos teclados.

Você deve reiniciar o sistema para que essas configurações tenham efeito.

Depois que a reinicialização for concluída, a falha do teclado poderá ser iniciada com a seguinte sequência de teclas de atalho: mantenha pressionada a tecla CTRL à direita e pressione a tecla SCROLL LOCK duas vezes.

Em seguida, o sistema chama o KeBugCheck e faz a Verificação de bugs 0xE2: MANUALLY_INITIATED_CRASH. A menos que os despejos de memória estejam desabilitados, um arquivo de despejo de memória será gravado.

Se um depurador de kernel estiver anexado ao computador com falha, o computador invadirá o depurador de kernel depois que o arquivo de despejo de falha for gravado.

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

Você pode configurar valores alternativos nas seguintes subchaves do Registro para sequências de atalhos 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 REG_DWORD de registro nessas subchaves:

Dump1Keys

O valor de registro Dump1Keys é um mapa de bits da primeira tecla de atalho a ser usada. Por exemplo, em vez de usar a tecla CTRL à direita para iniciar a sequência de teclas de atalho, você pode definir a primeira tecla de atalho como sendo a tecla SHIFT à esquerda.

A tabela a seguir descreve os valores hexadecimal da primeira chave ativa.

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

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

Dump2Key

O valor de registro Dump2Key é o índice na tabela de códigos de varredura para o layout de teclado do computador de destino. Veja a tabela atual 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 varredura diferente.

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

Example

Nesse cenário, um laptop usa um driver de teclado PS2 e um teclado HID externo é anexado. A definição de ambos os valores permite acionar uma falha manual do sistema a partir de qualquer um dos teclados. Você pode forçar uma falha manual do sistema segurando a tecla 'Ctrl' 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 trave de tal forma que a sequência de atalhos do teclado não funcione. O uso da sequência de atalhos de teclado para iniciar um crash funciona até mesmo em muitos casos onde CTRL+ALT+DELETE não funciona.

Forçar uma falha do sistema pelo teclado não funcionará 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 a execução do processo de despejo de memória, opera em um IRQL mais baixo do que o driver i8042prt.sys.

Confira também

Verificação de bugs 0xE2: MANUALLY_INITIATED_CRASH

!analyze -v

Analisando um arquivo de despejo no modo kernel com o WinDbg

Verificação de bugs 0x161: LIVE_SYSTEM_DUMP

Gerar um kernel ou despejo de memória completo

Variedades de arquivos de despejo no modo kernel.