Compartilhar via


Verificação de bugs 0x18: REFERENCE_BY_POINTER

A verificação de bug REFERENCE_BY_POINTER tem um valor de 0x00000018. Isso indica que a contagem de referência de um objeto é ilegal para o estado atual do objeto.

Importante

Este artigo é para programadores. Se você for um cliente que recebeu um código de erro de tela azul enquanto estava usando o computador, confira Solucionar problemas de erros de tela azul.

REFERENCE_BY_POINTER Parâmetros

Parâmetro Descrição

1

Tipo de objeto do objeto cuja contagem de referência está sendo reduzida.

2

Objeto cuja contagem de referência está sendo reduzida.

3

Reserved

4

Reserved

Causa

A contagem de referência de um objeto é ilegal para o estado atual do objeto. Toda vez que um driver usa um ponteiro para um objeto, o driver chama uma rotina do kernel para aumentar a contagem de referência do objeto em um. Quando o driver termina de usar o ponteiro, ele chama outra rotina do kernel para diminuir a contagem de referência em um.

Os drivers devem corresponder chamadas às rotinas que aumentam (referência) e diminuem (desreferenciam) a contagem de referência. Essa verificação de bugs é causada por uma inconsistência na contagem de referências do objeto. Normalmente, a inconsistência é causada por um driver que diminui a contagem de referência de um objeto muitas vezes, fazendo chamadas extras que desreferenciam o objeto. Essa verificação de bugs pode ocorrer porque a contagem de referências de um objeto chega a zero enquanto ainda há identificadores abertos para o objeto. Isso também pode ocorrer quando a contagem de referências do objeto cai abaixo de zero, independentemente de haver ou não identificadores abertos para o objeto.

Resolução

Certifique-se de que o driver corresponda às chamadas para as rotinas que aumentam e diminuem a contagem de referência do objeto. Certifique-se de que seu driver não faça chamadas extras para rotinas que desreferenciam o objeto (consulte o Parâmetro 2).

Você pode usar um depurador para ajudar a analisar esse problema. Para obter mais informações, consulte Análise de despejo de memória usando os depuradores do Windows (WinDbg). A extensão de depuração !analyze exibe informações sobre a verificação de bugs e pode ser útil para determinar a causa raiz.

Para localizar a contagem de identificadores e ponteiros no objeto, use o comando do depurador !object.

kd> !object endereço

Onde endereço é o endereço do objeto fornecido no Parâmetro 2.

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

Se você não estiver equipado para usar o depurador do Windows para resolver esse problema, use algumas técnicas básicas de solução de problemas.

  • Verifique se há mensagens de erro adicionais no log do sistema no Visualizador de Eventos que possam ajudar a identificar o dispositivo ou o driver que está causando a 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 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 obter mais informações gerais sobre solução de problemas, consulte Analisar dados de tela azul de verificação de bugs.