Compartilhar via


Log IRP

O recurso de registro em log IRP do Verificador de Driver monitora o uso de IRPs por um driver e faz um registro do uso do IRP. Esse registro é armazenado como informações de WMI.

O WDK (Windows Driver Kit) inclui a ferramenta DC2WMIParser (dc2wmiparser.exe) que pode converter esse registro WMI em um arquivo de texto.

Essa opção Verificador de Driver só está disponível no Windows Server 2003 e posterior.

O registro WMI

O registro WMI não incluirá mais de vinte IRPs para cada dispositivo. Depois que o vigésimo primeiro IRP é registrado, o primeiro registro IRP é substituído. Portanto, se o registro listar vinte IRPs, estes são sempre os vinte mais recentes, mas não há como saber qual deles é o mais recente.

Como o registro WMI é armazenado na memória, ele será apagado quando o computador for reinicializado. Portanto, use DC2WMIParser para salvar essas informações em um arquivo.

Se você usar a opção /t , DC2WMIParser será executado continuamente durante a duração especificada. Nessa situação, o registro pode incluir mais de vinte IRPs por dispositivo (até vinte IRPs em cada período de amostragem).

Ativando essa opção

Você pode ativar o recurso de registro em log do IRP para um ou mais drivers usando o Gerenciador de Verificador de Driver ou a linha de comando Verifier.exe.

Para ativar o recurso de log do IRP, você também deve ativar a Verificação de E/S.

  • Na linha de comando

    Na linha de comando, a opção log IRP é representada por 0x400 (Bit 10).

    Para ativar o registro em log do IRP, use um valor de sinalizador de 0x410 ou adicione 0x410 ao valor do sinalizador. Esse valor ativa a Verificação de E/S (0x10) e o Log de IRP (0x400). Por exemplo:

    verifier /flags 0x410 /driver MyDriver.sys
    

    O recurso estará ativo após a próxima inicialização.

    No Windows Vista e versões posteriores do Windows, você também pode ativar e desativar o registro de logs IRP sem reinicializar o computador adicionando o parâmetro /volatile ao comando. Por exemplo:

    verifier /volatile /flags 0x410 /adddriver MyDriver.sys
    

    Essa configuração é efetivada imediatamente, mas é perdida quando você desliga ou reinicializa o computador. Para obter detalhes, consulte Como usar configurações voláteis.

  • Usando o Gerenciador de Verificador de Driver

    1. Iniciar o Gerenciador de Verificador de Driver. Digite Verificador em uma janela do Prompt de Comando.
    2. Selecione Criar configurações personalizadas (para desenvolvedores de código) e clique em Avançar.
    3. Selecione Selecionar configurações individuais em uma lista completa.
    4. Selecione (verificar) Log de IRP e Verificação de E/S.

DC2WMIParser

DC2WMIParser é uma ferramenta que coleta os registros WMI IRP criados pelo Verificador de Driver e converte esse log em um arquivo de texto.

A sintaxe DC2WMIParser é a seguinte:

dc2wmiparser [/f File] [/t Time]

Os parâmetros têm os seguintes significados:

/fArquivo
Especifica o caminho completo e o nome do arquivo de log a ser gravado. Caminhos relativos serão considerados em relação ao diretório atual. Se isso for omitido, o nome do arquivo dc2verifier.act no diretório atual será usado.

/tTime
Especifica o período de tempo, em minutos, que o DC2WMIParser continuará executando. Se Tempo for igual a zero, DC2WMIParser gravará todas as informações do WMI IRP que já foram armazenadas pelo Verificador de Driver e, em seguida, sairá. Se o Tempo for definido como um valor positivo, DC2WMIParser continuará a ser executado pelo período de tempo especificado, armazenando novas informações conforme elas chegam. O padrão é zero.

Formato de arquivos de log DC2WMIParser

O arquivo gerado por DC2WMIParser é um arquivo de texto ASCII.

A primeira linha desse arquivo contém um número decimal que representa o número de dispositivos registrados no arquivo.

Após a primeira linha, o arquivo é dividido em seções; cada seção descreve um dispositivo.

Para cada dispositivo, o formato é:

  • Em uma única linha: O nome do dispositivo.

  • Em uma única linha: Um número decimal que especifica quantos tipos e funções de dispositivo são direcionados para este dispositivo.

  • Em uma linha para cada tipo de dispositivo e função: Três números hexadecimal, separados por vírgulas. Elas representam o tipo de dispositivo e as funções mais baixas e mais altas que foram registradas nesse registro.

  • Em um grupo de linhas para cada tipo de dispositivo e função:

    • Uma única linha com um número decimal especificando a contagem de IOCTLs para o tipo de dispositivo atual.
    • Uma linha para cada IOCTL. Cada uma dessas linhas contém seis números hexadecimal separados por vírgulas. Elas especificam o tipo de dispositivo, a função, o método, o acesso, o comprimento do buffer de entrada e o comprimento do buffer de saída.

Aqui está um arquivo de log DC2WMIParser de exemplo. Em um arquivo real, não haverá espaços, comentários ou linhas em branco, mas eles foram adicionados a este exemplo para torná-lo mais claro.

2           There are two devices described by this log file.

The first device begins here:

  DP(1)0x7e00-0x21dbda400+3   Device name of the first device
  2                           Number of device type IOCTLs targeted at this device

    7,12,12                     First targeted device: device type 7, low function 12, high function 12
    2d,420,420                  Second targeted device: device type 2d, low function 420, high function 420

    1                           Number of IOCTLs for first targeted  device (type 7)
      7,12,0,0,90,0               Device type 7, function 12, method 0, access 0, inbuflen 90, outbuflen 0
    1                           Number of IOCTLs for second targeted device (type 2d)
      2d,420,0,0,c,0              Device type 2d, function 420, method 0, access 0, inbuflen c, outbuflen 0

The second device begins here:

  DP(1)0x7e00-0x21dbda400+2   Device name of the second device
  2                           Number of device type IOCTLs targeted at this device

    7,12,12                     First targeted device: device type 7, low function 12, high function 12
    2d,420,420                  Second targeted device: device type 2d, low function 420, high function 420


    1                           Number of IOCTLs for first targeted  device (type 7)
      7,12,0,0,90,0               Device type 7, function 12, method 0, access 0, inbuflen 90, outbuflen 0
    1                           Number of IOCTLs for second targeted device (type 2d)
      2d,420,0,0,c,0              Device type 2d, function 420, method 0, access 0, inbuflen c, outbuflen 0