Partilhar via


Registo IRP

O recurso IRP Logging do Driver Verifier monitora o uso de IRPs por um driver e faz um registro do uso de IRPs. Este registo é armazenado como informação WMI.

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

Esta 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. Uma vez que o vigésimo primeiro IRP é registrado, o primeiro registro IRP é substituído. Então, se o registro lista 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 , o DC2WMIParser será executado continuamente durante a duração especificada. Nessa circunstância, o registo 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 IRP Logging para um ou mais drivers usando o Driver Verifier Manager ou a linha de comando Verifier.exe.

Para ativar o recurso IRP Log, 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 registo do IRP, utilize um valor de sinalizador de 0x410 ou adicione 0x410 ao valor desse sinalizador. Esse valor ativa a Verificação de E/S (0x10) e o Registro em 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 IRP Logging 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 reinicia o computador. Para obter detalhes, consulte Usando Configuração Volátil.

  • Usando o Gestor do Verificador de Drivers

    1. Inicie o Driver Verifier Manager. Digite Verifier numa janela da Linha de Comandos.
    2. Selecione Criar configurações personalizadas (para desenvolvedores de código) e clique em Avançar.
    3. Selecione configurações individuais de uma lista completa.
    4. Selecione (verifique) IRP Logging 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 considerados 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 o DC2WMIParser continuará em execução. Se Time for igual a zero, o DC2WMIParser gravará 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 chegam. O padrão é zero.

Formato dos arquivos de log DC2WMIParser

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

A primeira linha deste ficheiro contém um número decimal que representa o número de dispositivos registados no ficheiro.

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

Para cada dispositivo o formato é:

  • Numa única linha: O nome do dispositivo.

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

  • Em uma linha para cada tipo de dispositivo e função: Três números hexadecimais, separados por vírgulas. Estes representam o tipo de dispositivo e as funções mais baixas e mais altas que foram registadas neste registo.

  • 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 destas 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 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