Forçando uma falha do sistema do teclado

Os seguintes tipos de teclados podem causar uma falha do sistema diretamente:

  • Teclados PS/2 conectados em portas i8042prt Esse recurso está disponível no Windows 2000 e versões posteriores do sistema operacional Windows.

  • Teclados USB
    Esse recurso está disponível no Windows Vista e em versões posteriores do sistema operacional Windows.

  • Teclados Hyper-V
    Esse recurso está disponível no Windows 10 versão 1903 e versões posteriores do sistema operacional Windows.

Configuração

Defina as seguintes configurações para habilitar uma falha do sistema usando o teclado:

  1. Se você quiser que um arquivo de despejo de memória seja gravado, habilite 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 Habilitar um arquivo de despejo no modo kernel.

  2. Com teclados PS/2, você deve habilitar a falha iniciada pelo teclado no Registro. Na chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parametersdo Registro , crie um valor chamado CrashOnCtrlScrolle defina-o como igual a um REG_DWORD valor de 0x01.

  3. Com teclados USB, você deve habilitar a falha iniciada pelo teclado no registro. Na chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parametersdo Registro , crie um valor chamado CrashOnCtrlScrolle defina-o como igual a um REG_DWORD valor de 0x01.

  4. Com teclados Hyper-V, você deve habilitar a falha iniciada pelo teclado no Registro. Na chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\hyperkbd\Parametersdo Registro , crie um valor chamado CrashOnCtrlScrolle defina-o como igual a um REG_DWORD valor de 0x01.

Alguns laptops usam o driver PS/2 para o teclado interno e também dão suporte a teclados HID externos. Para esses sistemas, considere criar as teclas 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.

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

Em seguida, o sistema chama KeBugCheck e emite marcar 0xE2 de bugs: MANUALLY_INITIATED_CRASH. A menos que os despejos de falha tenham sido desabilitados, um arquivo de despejo de memória é gravado em seguida.

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

Definindo atalhos de teclado alternativos para forçar uma falha do sistema 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 REG_DWORD Registro sob estas subchaves:

Dump1Keys

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

Os valores da primeira tecla de acesso são descritos na tabela a seguir.

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 habilita 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 à esquerda como a primeira tecla na sequência de atalhos de teclado.

Dump2Key

O Dump2Key valor do Registro é o índice na tabela de código de verificação do layout do teclado do computador de destino. Consulte 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 você definir atalhos de teclado alternativos para forçar uma falha do sistema de um teclado USB ou PS/2, deverá definir o valor do CrashOnCtrlScroll Registro como 0 ou removê-lo do registro.

Exemplo: nesse cenário, um laptop usa um driver de teclado PS2 e um teclado HID externo é anexado. Definir ambos os valores fornece a capacidade de disparar uma falha manual do sistema de qualquer teclado. Uma falha manual do sistema pode ser forçada segurando a tecla de controle mais à direita e pressionando a barra de espaços duas vezes quando a seguinte chave do Registro é 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 para um sistema congelar de tal forma que a sequência de atalho de teclado não funcione. Usar a sequência de atalho de teclado para iniciar uma falha funcionará mesmo em muitas instâncias em que CTRL+ALT+DELETE não funciona.

Forçar uma falha do sistema do teclado não funcionará se o computador parar de responder em um IRQL (alto nível de solicitação de interrupção). Essa limitação existe porque o driverKbdhid.sys , que permite que o processo de despejo de memória seja executado, opera em um IRQL inferior ao driver dei8042prt.sys .

Confira também

marcar 0xE2 de bugs: MANUALLY_INITIATED_CRASH

!analyze -v

Analisando um arquivo de despejo de Kernel-Mode com WinDbg

0x161 de Verificação de Bugs: LIVE_SYSTEM_DUMP

Gerar um kernel ou despejo de memória completo

Variedades de arquivos de despejo de Kernel-Mode.