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:
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.
Com teclados PS/2, você deve habilitar a falha iniciada pelo teclado no Registro. Na chave
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters
do Registro , crie um valor chamadoCrashOnCtrlScroll
e defina-o como igual a umREG_DWORD
valor de 0x01.Com teclados USB, você deve habilitar a falha iniciada pelo teclado no registro. Na chave
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters
do Registro , crie um valor chamadoCrashOnCtrlScroll
e defina-o como igual a umREG_DWORD
valor de 0x01.Com teclados Hyper-V, você deve habilitar a falha iniciada pelo teclado no Registro. Na chave
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\hyperkbd\Parameters
do Registro , crie um valor chamadoCrashOnCtrlScroll
e defina-o como igual a umREG_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
Analisando um arquivo de despejo de Kernel-Mode com WinDbg
0x161 de Verificação de Bugs: LIVE_SYSTEM_DUMP
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários