Compartilhar via


Log IRP

O recurso de Log de IRP do Verificador de Driver monitora o uso de IRPs de um driver e faz um registro do uso de IRP. Esse registro é armazenado como informações 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 do 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 lista vinte IRPs, esses 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 pela 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 esta opção

Você pode ativar o recurso Log de IRP para um ou mais drivers usando o Gerenciador de Verificação de Driver ou a linha de comando Verifier.exe.

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

  • Na linha de comando

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

    Para ativar o Log 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 registro 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 Log IRP sem reinicializar o computador adicionando o parâmetro /volatile ao comando. Por exemplo:

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

    Essa configuração entra em vigor imediatamente, mas é perdida quando você desliga ou reinicializa o computador. Para obter detalhes, consulte Usando configurações voláteis.

  • Usando o Gerenciador de Verificação de Driver

    1. Inicie o Gerenciador de Verificação 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 (verifique) Registro IRP e Verificação de E/S.

DC2WMIParser

DC2WMIParser é uma ferramenta que coleta os registros IRP WMI 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. Os caminhos relativos serão tomados em relação ao diretório atual. Se isso for omitido, o nome do arquivo dc2verifier.act no diretório atual será usado.

/tTempo
Especifica o período de tempo, em minutos, que DC2WMIParser continuará a ser executado. Se o Tempo for igual a zero, DC2WMIParser registrará todas as informações de IRP do WMI que já foram armazenadas pelo Verificador de Driver e, em seguida, sairá. Se Time for definido como um valor positivo, DC2WMIParser continuará a ser executado pelo período de tempo especificado, armazenando novas informações à medida que 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 de dispositivo e funções são direcionados a este dispositivo.

  • Em uma linha para cada tipo de dispositivo e função: Três números hexadecimais, separados por vírgulas. Eles representam o tipo de dispositivo e as funções mais baixas e mais altas que foram registradas neste 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 hexadecimais separados por vírgulas. Eles 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 exemplo de arquivo de log DC2WMIParser. 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