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:
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.
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 chamadoCrashOnCtrlScroll
e defina-o igual a um valorREG_DWORD
de 0x01.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 chamadoCrashOnCtrlScroll
e defina-o igual a um valorREG_DWORD
de 0x01.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 chamadoCrashOnCtrlScroll
e defina-o igual a um valorREG_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
Analisando um arquivo de despejo no modo kernel com o WinDbg
Verificação de bugs 0x161: LIVE_SYSTEM_DUMP