Artigo: 244617 - Última revisão: sexta-feira, 25 de Dezembro de 2009 - Revisão: 7.1

Utilizar verificação de controladores para identificar problemas com controladores do Windows para utilizadores avançados

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

A verificação de controladores incluída no Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008, Windows 2000, Windows XP e Windows Server 2003 para promover a estabilidade e fiabilidade; pode utilizar esta ferramenta para resolver problemas de controladores. Componentes de modo kernel do Windows podem provocar danos no sistema ou falhas do sistema como resultado de um controlador escrito incorrectamente, tal como uma versão anterior de um controlador Windows Driver Model (WDM). Este artigo descreve como utilizar o Verificador de controladores para isolar e resolver problemas relacionados com um controlador no sistema.

Mais Informação

Este artigo aborda os seguintes tópicos:
  • Capacidades de verificação de controlador
  • Verificador de E/s
  • Requisitos de verificação de controlador
  • Activar a verificação de controladores
  • Depurar violações de verificação de controlador
  • A verificação de controladores e controladores gráficos
  • Gestor de verificador de controladores (Verifier.exe)
  • Contadores globais
  • Conjunto de controlo
  • Definições
  • Definições voláteis
  • Interface da linha de comandos
  • Informações adicionais para programadores de controladores

Capacidades de verificação de controlador

Pode utilizar a verificação de controladores com Verifier.exe e, em seguida, reinicie o computador. Não é necessário efectuar outras alterações para começar a analisar controladores no sistema.

A verificação de controladores fornece as seguintes capacidades.

Atribuições de conjunto

Tente atribuir todas as atribuições de conjunto de um controlador do conjunto especial. Em vez de partilhar atribuições de conjunto com o resto do sistema, atribuições deste controlador estão isoladas e sujeitos a permissões sem acesso. Esta capacidade determina se um controlador atribui mais do que o seu quinhão do agrupamento e, por conseguinte, como resultado a provocar danos e instabilidade do sistema. Quando activar esta capacidade e o computador de destino tiver suficiente memória física e virtual, todas as atribuições do controlador são automaticamente redireccionadas para o conjunto especial.

Fornecer pressão de memória extrema

Pode ser fornecida sob pressão de memória extrema num controlador específico sem afectar outros controladores (independentemente do tamanho da memória de sistema). Pode fazê-lo por instruir gestão da memória para invalidar todos código paginável e dados, bem como conjunto paginado de sistema, código e dados do controlador. Isto permite-lhe detectar um controlador que retém incorrectamente spin bloqueia ou desencadeia IRQL e, em seguida, obtém acesso a código paginado ou dados. Pode utilizar a pressão de memória extrema para detectar problemas intermitentes e isolar a causa.

Validação de parâmetros

Rodar todas bloqueio, IRQL e agrupamento atribuição chamadas que faz com que o controlador receber validação de parâmetros automáticos. Isto significa que são efectuadas verificações para garantir as seguintes acções:
  • Um IRQL elevado é realmente um IRQL elevado (o IRQL actual é inferior ao IRQL de destino).
  • Um IRQL inferior é realmente um IRQL inferior.
  • Dupla libertação de um bloqueio de rotação.
  • Rodar bloqueio aquisições/libertações são efectuadas no IRQL correcto.
  • Atribuições/libertações de bloco paginado são efectuadas no IRQL correcto (APC_LEVEL ou abaixo).
  • Atribuições/libertações de bloco não paginado são efectuadas no IRQL correcto (DISPATCH_LEVEL ou abaixo).
  • Sem valores aleatórios (não inicializados) são especificados para estas interfaces de programação de aplicações (API).

Falhas de injecção de alocação de conjunto

Atribuições de conjunto não marcadas MUST_SUCCEED pelo controlador podem ser aleatoriamente falhou a assegurar que o controlador pode processar correctamente uma situação de pouca memória.

Conjunto de libertar a ser

Conjunto de todos os ser libertado é examinado para que não existem temporizadores pendentes estiverem dentro a alocação de conjunto, nestes casos causaria extremamente permanentemente para controlar as falhas do sistema.

Detecção de fugas de agrupamento

Todas as atribuições de conjunto do controlador são automaticamente controladas. No momento de descarregar controlador, uma verificação de erros ocorrerá se qualquer uma das atribuições de não libertados. Em seguida, pode utilizar o ! Verificador 3 comando de depurador de kernel para mostrar todas as atribuições que não são libertadas. Também pode utilizar este comando antes da descarga para visualizar as atribuições pendentes que do controlador tem em qualquer ponto no tempo.

Verificação de descarregar controlador

Verificação de descarregar controlador é efectuada para detectar controladores de descarregar e não limpar recursos utilizados (o que aumenta a possibilidade de uma verificação de erros do sistema pouco tempo após o descarregamento do controlador). Recursos que não pode eliminar o controlador incluem listas de anulação de aspecto, enquanto se aguarda chamadas de procedimentos adiadas (DPCs), threads de trabalho, filas, temporizadores e outros recursos.

Verificador de E/s

Se activar o sinalizador do Verificador de E/s utilizando a ferramenta de verificação ou a chave de registo VerifyDriverLevel (para mais informações, consulte a secção "Activar a verificação de controladores" deste artigo), algumas verificações do Gestor de E/s estão activadas. Isto inclui:
  • Todos os IRPS atribuídos através de IoAllocateIrp são atribuídos a partir do conjunto especial.
  • São efectuadas verificações em IoCallDriver, IoCompleteRequest e IoFreeIrp para detectar mensagens de erro do controlador.
  • Todos os Verificador de E/s falhas de verificação de erros com o código DRIVER_VERIFIER_IOMANAGER_VIOLATION (0xC9).

Requisitos de verificação de controlador

O único requisito é que tem de instalar Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008, Windows 2000, Windows XP ou Windows Server 2003. Pode activar a verificação de controladores em versões de revenda e verificado do Windows. Consulte o artigo de base de dados de Conhecimento Microsoft 251233 para obter informações sobre o que considerar antes de activar o Gestor de verificador de controladores em servidores de produção. Se o Norton AntiVirus estiver instalado, não Active a detecção de impasse do Verificador de controladores devido das recomendações no artigo da base de dados de conhecimento da Microsoft 325672.

Activar a verificação de controladores

Pode activar a verificação de controladores utilizando o ficheiro Verifier.exe. Verifier.exe é incluído com cada cópia do Windows e automaticamente instalado na pasta System32. Verifier.exe tem ambas as interfaces de interface (GUI) da linha de comandos e gráficas do utilizador, pelo que pode especificar controladores e níveis de verificação adequados. Também pode ver estatísticas de verificação de controladores em tempo real. Para obter informações adicionais, consulte a secção "Gestor de verificador de controladores" deste artigo.

Depurar violações de verificação de controlador

Tanto o ! Verificador comando o depurador do kernel e a ferramenta Verifier.exe é apresentado a configuração actual do Verificador de controladores e as estatísticas no tempo real.

Verificação de controladores todas as violações de resultar em erros controlos, as mais comuns (embora não necessariamente todas) são:
  • IRQL_NOT_LESS_OR_EQUAL 0XA
  • PAGE_FAULT_IN_NONPAGED_AREA 0X50
  • PAGE_FAULT_IN_NONPAGED_AREA 0X50
  • ATTEMPTED_WRITE_TO_READONLY_MEMORY 0XBE
  • SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION 0XC1
  • DRIVER_VERIFIER_DETECTED_VIOLATION 0XC4
  • DRIVER_CAUGHT_MODIFYING_FREED_POOL 0XC6
  • TIMER_OR_DPC_INVALID 0XC7
  • DRIVER_VERIFIER_IOMANAGER_VIOLATION 0XC9

A verificação de controladores e controladores gráficos

Controladores de gráficos de modo kernel do Windows (como, por exemplo, impressora e controlador de monitor dll) podem chamar directamente o ponto de entrada do conjunto. Em vez disso, atribuições de conjunto são executadas indirectamente, utilizando chamadas de gráficos dispositivo controlador de interface (DDI) retorno Win32k.sys. Por exemplo, EngAllocMem é a chamada de retorno que um controlador gráfico chama para atribuir explicitamente memória de conjunto. Além disso, outras chamadas de retorno especializadas como EngCreatePalette e EngCreateBitmap devolvem memória de conjunto.

Para fornecer o mesmo tipo de teste automatizado para os controladores gráficos, suporte para algumas das funções a verificação de controladores está incorporado no Win32k.sys. No entanto, uma vez que os controladores gráficos são mais restritos que outros controladores de modo kernel, requerem apenas um subconjunto da funcionalidade de verificação de controladores. Especificamente, a verificação de IRQL e verificação de E/s não são necessários. Outras funcionalidades, nomeadamente utilizando o conjunto especial, a falha aleatória de atribuições de conjunto e conjunto de controlo, são suportadas em vários graus nas chamadas de retorno de DDI gráficos diferentes.

Falhas aleatórias são suportadas para os gráficos seguintes funções de chamada de retorno DDI:
  • EngAllocMem
  • EngAllocUserMem
  • EngCreateBitmap
  • EngCreateDeviceSurface
  • EngCreateDeviceBitmap
  • EngCreatePalette
  • EngCreateClip
  • EngCreatePath
  • EngCreateWnd
  • EngCreateDriverObj
  • BRUSHOBJ_pvAllocRbrush
  • CLIPOBJ_ppoGetPath
Além disso, a utilização do conjunto especial e rastreio de conjunto é suportada para EngAllocMem.

Activar a verificação de controladores para os controladores gráficos é idêntica os outros controladores (consulte a secção "Activar a verificação de controladores" deste artigo para obter informações adicionais). São ignorados sinalizadores não suportados, tais como verificação de IRQL. Para além disso, pode utilizar o ! gdikdx.verifier comando de depurador de kernel para examinar actuais a verificação de controladores estado e o conjunto de rastreios para controladores gráficos.

Nota: só deve utilizar a definição de falha de atribuição aleatória para testar a robustez. Utilização desta definição pode causar a composição de mensagens de erro, pelo que não deve utilizar esta definição com testes de verificação para verificar a exactidão da execução do controlador de gráficos (por exemplo, por comparação a saída do controlador de gráficos para uma imagem de referência).

Gestor de verificador de controladores (Verifier.exe)

A ferramenta Gestor de verificador de controladores (Verifier.exe) é a forma preferencial para criar e modificar definições do Verificador de controladores e reunir as estatísticas de verificação de controladores. Verifier.exe está localizado na pasta %Windir%\System32 para cada instalação do Windows.

Estado do controlador

A página de propriedades de Estado do controlador dá-lhe uma imagem do estado actual da verificação de controladores. Pode ver que detecta o Verificador de controladores. O estado pode ser um dos seguintes procedimentos:
  • Carregado: O controlador está actualmente carregado e verificado.
  • Descarregado: O controlador não está actualmente carregado, mas que foi carregado, pelo menos uma vez que reiniciou o computador.
  • Nunca carregado: O controlador nunca foi carregado. Este estado pode indicar que o ficheiro de imagem do controlador está danificado ou especificou um nome de controlador que está em falta no sistema.
Pode clicar no cabeçalho da lista para ordenar a lista por estatuto ou nomes de controladores. Na área superior direita da caixa de diálogo, pode ver os tipos actuais da verificação em vigor. O estado dos controladores é actualizado automaticamente se não mudam para o modo de actualização manual. Pode modificar a frequência de actualização utilizando os botões de opção na área inferior esquerda da caixa de diálogo. Também pode forçar uma actualização do Estado, clicando em Actualizar agora.

Se activar o sinalizador de conjunto especial e inferior a 95 por cento de atribuições de conjunto passou para o conjunto especial, é apresentada uma mensagem de aviso nesta página. Isto significa que tem de seleccionar um conjunto mais pequeno de controladores para verificar ou adicionar mais memória física no computador para obter uma melhor cobertura da verificação de atribuições de conjuntos.

Contadores globais

A página de propriedades de Contadores globais mostra o valor actual de alguns contadores mantidos pela verificação de controladores. Um valor zero para um contador pode indicar que o sinalizador de verificação de controladores associado não está activado. Por exemplo, um valor de 0 para os outros / falhas contador indica que o sinalizador de simulação de poucos recursos não está activado. Pode monitorizar a actividade do verificador, porque os valores dos contadores são actualizados automaticamente (por predefinição). Pode alterar a frequência de actualização, mude para actualização manual ou forçar uma actualização utilizando o grupo de controlos na área inferior esquerda da caixa de diálogo.

Conjunto de controlo

Esta página de propriedades mostra as estatísticas mais reunidas do Verificador de controladores. Todos os contadores constantes nesta página estão relacionados com o sinalizador de rastreio de conjunto do verificador. A maioria deles são contadores por controlador (por exemplo, atribuições actuais, bytes actualmente atribuídos etc.). Isto significa que tem de seleccionar um nome de controlador na caixa de combinação superior para visualizar os contadores desse controlador específico.

Definições

Pode utilizar esta página para criar e modificar definições do Verificador de controladores. As definições são guardadas no registo e tem de reiniciar o computador para que as definições tenham efeito. Pode utilizar a lista para visualizar os controladores actualmente instalados. Cada controlador pode ter um dos seguintes Estados:
  • Certifique-se activado: O controlador está actualmente verificado.
  • Verificação desactivada: O controlador está actualmente não verificado.
  • Certifique-se activada (reinicialização necessária): O controlador é verificado apenas após o reinício seguinte.
  • Verificação desactivada (reinicialização necessária): O controlador está actualmente verificado mas não é verificado após a próxima reinicialização.
Pode seleccionar um ou vários controladores a partir da lista e mudar o estado utilizando os dois botões sob a lista. Também pode clicar com o botão direito do rato num nome de controlador para apresentar o menu de contexto, que permite efectuar Estado alternar.

Na parte inferior da caixa de diálogo, pode especificar controladores adicionais (separados por espaços) que pretende verificados após o reinício seguinte. Normalmente utilizado este controlo de edição quando pretender instalar um novo controlador que já não está carregado.

Se o grupo de botão de rádio na parte superior da lista for definido para verificar se todos os controladores, a lista e os botões Verificar e Don't certifique-se e o controlo de edição não estão disponíveis. Isto significa que após o reinício seguinte, são verificados todos os controladores no sistema.

Pode definir o tipo de verificação utilizando as caixas de verificação na área superior direita da caixa de diálogo. Pode activar a verificação de E/s ao nível 1 ou no nível 2. Verificação de nível 2 é mais forte do que o nível 1.

Deve guardar qualquer modificação às definições, clicando em Aplicar. Existem mais dois botões nesta página:
  • Definições preferidas: Selecciona algumas definições utilizadas com frequência (com todos os controladores verificados).
  • Repor tudo: Desmarca todas as definições de verificação de controladores para que não existem controladores são verificados.
Depois de clicar em Aplicar, é necessário reiniciar o computador para que as alterações tenham efeito.

Definições voláteis

Pode utilizar esta página de propriedades para alterar os sinalizadores de verificação de controladores imediatamente. Só pode alternar o estado de alguns dos sinalizadores de verificação de controladores e não pode alterar a lista de controladores que estão a ser verificado. Depois de alterar o estado de algumas caixas de verificação, tem de clicar em Aplicar para que as alterações tenham efeito. As alterações têm efeito imediato e estes últimos enquanto efectuar alterações adicionais ou até que reinicie o computador.

A interface da linha de comandos

Também pode executar Verifier.exe a partir de uma linha de comandos (para mais informações, escreva verifier.exe /? numa linha de comandos). A lista seguinte mostra os mais utilizados sinalizadores de linha de comandos:
  • verifier.exe /flags value [/ iolevel 2]
    Especifica um valor decimal os sinalizadores de verificação de controladores e possivelmente o nível para a verificação de E/s (para obter uma lista de sinalizadores disponíveis, escreva verifier.exe /? numa linha de comandos ou consulte a secção "Activar a verificação de controladores" deste artigo).

    Substitua o parâmetro de value por um dos seguintes valores de bits de verificação:
    0 - Verificação de conjunto especial
    1 Forçar verificação IRQL
    2 Simulação de de baixos recursos
    3 Rastreio de conjunto de
    4 Verificação de E/s de
    5 Detecção de impasse
    6 Verificação de E/s avançada
    7 Verificação de DMA
    Por exemplo, escreva o seguinte comando:
    c:\verifier /flags 3 /iolevel 2
    Nota: O nível de verificação de E/s predefinido é 1. O valor é ignorado se o bit de verificação de E/s não estiver definido nos sinalizadores.
  • verifier.exe /all
    Verifica todos os controladores no sistema.
  • verifier.exe /volatile/sinalizadores value
    Verificador alterações sinalizadores imediatamente.
  • Verifier.exe /reset
    Apaga todas as definições actuais do Verificador de controladores.
  • verificador /query
    Informações de estado dos contadores à saída padrão e o estado actual da verificação de controladores.
  • verifier.exe /log LOG_FILE_NAME [/ intervalo seconds]
    Regista o estado de verificação de controladores e contadores de um ficheiro de registo (em seconds é o período de tempo que especificar).

Informações adicionais para programadores de controladores

As secções que se seguem descrevem detalhes adicionais sobre as definições de verificador de controlador podem ter interesse para programadores de controladores. Estas definições não têm geralmente por profissionais de TI.
Importante Esta secção, método ou tarefa contém passos que indicam como modificar o registo. No entanto, poderão ocorrer problemas graves se modificar o registo incorrectamente. Por conseguinte, certifique-se de que segue estes passos cuidadosamente. Para protecção adicional, cópia de segurança do registo antes de o modificar. Em seguida, pode restaurar o registo se ocorrer um problema. Para obter mais informações sobre como efectuar uma cópia de segurança e restaurar o registo, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
322756  (http://support.microsoft.com/kb/322756/ ) Como efectuar uma cópia de segurança e restaurar o registo no Windows

Para activar a verificação de controladores editando o registo, siga estes passos:
  1. Inicie o Editor de registo (Regedt32).
  2. Localize a seguinte chave de registo:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\VerifyDrivers
  3. Edite a chave REG_SZ.
Defina a chave REG_SZ para os nomes não sensível a maiúsculas e minúsculas dos controladores que pretende testar. Pode especificar vários controladores, mas utilize apenas um controlador. Ao fazê-lo, pode certificar-se de que os recursos do sistema disponíveis não são prematuramente esgotar. Esgotamento prematuro dos recursos não causa qualquer sistema de problemas de fiabilidade, mas pode fazer com que algum controlador verificação para ser ignorada.

A lista seguinte mostra exemplos de valores para a chave REG_SZ:
  • NTFS.sys
  • Win32k.sys ftdisk.sys
  • *.sys
Pode especificar o nível de verificação de controladores na seguinte chave do registo:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\VerifyDriverLevel
A lista seguinte mostra o campo de bits valores para esta chave. Livremente, é possível combinar estes valores:
  • 0 x 01: tenta satisfazer todas as atribuições a partir do conjunto especial.
  • 0 x 02: aplica-se a pressão de memória a este controlador para validar a utilização IRQL sobre como aceder a dados e código paginável.
  • 0 x 04: Falha aleatoriamente vários pedidos de atribuição de conjuntos. Esta acção só é executada depois do sistema foi iniciado e atingido um ponto em que o problema pode ser tratado como situações razoáveis que devem ser manipuladas.
  • 0 x 08: activar o rastreio de alocação de conjunto. Cada atribuição deve ser libertada antes do descarregamento do controlador ou o sistema efectua uma verificação de erros.
  • 0 x 10: activar o Verificador de E/s.
Nota: O valor predefinido é 3 se a chave não existir ou se não especificar um nível de verificação de controladores. O valor predefinido é 0x1B se estiver a utilizar as definições preferidas no utilitário do verificador. Para registar fugas de memória, tente um valor de 0xB. Este valor é obtido facilmente clicando para seleccionar a caixa de verificação definição preferida e clicando para desmarcar a caixa de verificação de verificação de E/s.

A informação contida neste artigo aplica-se a:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Standard Edition
  • Windows 7 Enterprise
  • Windows 7 Enterprise N
  • Windows 7 Home Basic
  • Windows 7 Home Premium
  • Windows 7 Home Premium N
  • Windows 7 Professional
  • Windows 7 Professional N
  • Windows 7 Release Candidate
  • Windows 7 Starter
  • Windows 7 Starter N
  • Windows 7 Ultimate
  • Windows 7 Ultimate N
  • Windows Vista Enterprise 64-bit edition
  • Windows Vista Home Basic 64-bit edition
  • Windows Vista Home Premium 64-bit edition
  • Windows Vista Ultimate 64-bit edition
  • Windows Vista Business
  • Windows Vista Business 64-bit edition
  • Windows Vista Business N
  • Windows Vista Business N 64-bit Edition
  • Windows Vista Enterprise
  • Windows Vista Home Basic
  • Windows Vista Home Basic Beta
  • Windows Vista Home Basic N
  • Windows Vista Home Basic N 64-bit Edition
  • Windows Vista Home Premium
  • Windows Vista Home Premium Beta
  • Windows Vista Service Pack 1
  • Windows Vista Service Pack 2
  • Windows Vista Starter
  • Windows Vista Ultimate
  • Windows HPC Server 2008
  • Windows HPC Server 2008 R2
  • Windows Server 2008 R2 HPC without Hyper-V
  • Windows Server 2008 Datacenter without Hyper-V
  • Windows Server 2008 Enterprise without Hyper-V
  • Windows Server 2008 for Itanium-Based Systems
  • Windows Server 2008 Foundation
  • Windows Server 2008 R2 Beta
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 Service Pack 2
  • Windows Server 2008 Standard without Hyper-V
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
Palavras-chave: 
kbmt kbresolve kbenv kbhowto kbprogramming KB244617 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 244617  (http://support.microsoft.com/kb/244617/en-us/ )