Compartilhar via


forçar uma falha do sistema pelo teclado

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

  • Teclados PS/2 conectados em portas i8042prt Esse recurso está disponível no Windows 2000 e em 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 em versões posteriores do sistema operacional Windows.

Configuração

Defina as seguintes configurações para ativar uma falha no 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. Com teclados PS/2, é necessário ativar a falha iniciada pelo teclado no registro. Na chave de registro HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters, crie um valor chamado CrashOnCtrlScroll e defina-o igual a um valor REG_DWORD de 0x01.

  3. Com teclados USB, é necessário ativar a falha iniciada pelo teclado no registro. Na chave de registro HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters, crie um valor chamado CrashOnCtrlScroll e defina-o igual a um valor REG_DWORD de 0x01.

  4. Com teclados Hyper-V, é necessário ativar a falha iniciada pelo teclado no registro. Na chave de registro HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\hyperkbd\Parameters, crie um valor chamado CrashOnCtrlScroll e defina-o igual a um valor REG_DWORD 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 falhas tenham sido desativados, um arquivo de despejo de falhas será gravado.

Se um depurador de kernel estiver conectado ao computador com falha, o computador entrará no depurador de kernel depois que o arquivo de despejo de falha tiver sido 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.

Os valores hexadecimais da primeira tecla de atalho estão descritos na tabela a seguir.

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.

Exemplo: neste cenário, um laptop usa um driver de teclado PS2, e um teclado HID externo é conectado. A definição de ambos os valores permite acionar uma falha manual do sistema a partir de qualquer um dos teclados. Uma falha manual do sistema pode ser forçada mantendo pressionada a tecla de controle mais à direita e pressionando a barra de espaço duas vezes quando a seguinte chave de 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 travamento funcionará mesmo nos casos em que CTRL+ALT+DELETE não funcionar.

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.