Partilhar via


Verificação de bugs 0x1: APC_INDEX_MISMATCH

A verificação de bugs APC_INDEX_MISMATCH tem um valor de 0x00000001. A verificação de bugs indica uma incompatibilidade no índice de estado das chamadas de procedimento assíncrono (APC).

Importante

Este artigo é para programadores. Se você é um cliente da Microsoft e seu computador exibe um código de erro de tela azul, consulte Solucionar problemas de erros de tela azul.

APC_INDEX_MISMATCH parâmetros

Parâmetro Descrição
1 O endereço da função do sistema (chamada do sistema) ou da rotina de trabalho.
2 O valor do campo ApcStateIndex do thread atual.
3 O valor do campo CombinedApcDisable do thread atual. Esse campo consiste em dois campos separados de 16 bits: (Thread>SpecialApcDisable<< 16) | Thread>KernelApcDisable.
4 Tipo de chamada:
0 - Chamada do sistema
1 - Rotina de trabalho

Causa

A causa mais comum dessa verificação de bugs é quando um sistema de arquivos ou driver tem uma sequência incompatível de chamadas para desabilitar e reabilitar APCs. O item de dados chave é o campo Thread>CombinedApcDisable. O campo CombinedApcDisable consiste em dois campos separados de 16 bits: SpecialApcDisable e KernelApcDisable. Um valor negativo de qualquer um dos campos indica que um driver desabilitou os APCs especiais ou normais (respectivamente) sem reabilitar. Um valor positivo indica que um driver habilitou APCs especiais ou normais muitas vezes.

Resolução

Você pode resolver esse problema usando o WinDbg ou técnicas básicas de solução de problemas.

Depurar usando o WinDbg

A extensão de depuração !analyze exibe informações sobre a verificação de bugs e pode ajudá-lo a determinar a causa raiz.

Você pode usar a extensão !apc para exibir o conteúdo de uma ou mais APCs.

Você também pode definir um ponto de interrupção no código que precede esse código de parada e tentar avançar em uma única etapa para o código de falha.

Para obter mais informações sobre o uso do WinDbg,, consulte Análise de despejo de memória usando os depuradores do Windows (WinDbg).

Depurar sem usar o WinDbg

Se você não estiver equipado para usar o depurador do Windows para solucionar este problema:

  • No Visualizador de Eventos, verifique o Log do Sistema para obter mais mensagens de erro que possam ajudá-lo a identificar o dispositivo ou driver que está causando essa verificação de bugs.

  • Se um driver for identificado na mensagem de verificação de bugs, desabilite o driver ou verifique com o fabricante se há atualizações de driver.

  • Confirme se o novo hardware que foi instalado é compatível com a versão instalada do Windows. Por exemplo, você pode obter informações sobre o hardware necessário em Especificações do Windows 10.

Para mais informações gerais sobre solução de problemas, consulte Analisar dados de tela azul de verificação de bugs.

Comentários

Essa verificação de bugs é o resultado de um erro interno no kernel. Esse erro ocorre na saída de uma chamada do sistema. Uma possível causa para essa verificação de bugs é um sistema de arquivos ou driver que tem uma sequência incompatível de chamadas de sistema para entrar ou sair de regiões protegidas ou críticas. Por exemplo, cada chamada para KeEnterCriticalRegion deve ter uma chamada correspondente para KeLeaveCriticalRegion.

Se você estiver desenvolvendo um driver, poderá usar o Verificador de Driver Estático, uma ferramenta de análise estática disponível no Kit de Driver do Windows, para detectar problemas em seu código antes de enviar o driver. Execute o Verificador de Driver Estático com a regra CriticalRegions para verificar se o código-fonte usa essas chamadas do sistema na sequência correta.

Confira também

Referência de código de verificação de bugs