Partilhar via


Fornecendo dados de contador usando a versão 2.0

Os provedores de dados de desempenho modernos usam um manifesto para definir os dados do contador e usar APIs de provedor de contador de desempenho para gerenciar dados dentro do contexto do provedor. Provedores implementados usando um manifesto e APIs de provedor de contador de desempenho geralmente são chamados de provedores V2. O Windows dá suporte a provedores V2 no modo de usuário no Windows Vista ou posterior e provedores V2 no modo kernel no Windows 7 ou posterior.

Esta página descreve os provedores V2 no modo de usuário. Para obter informações sobre provedores V2 no modo kernel, consulte Monitoramento de desempenho do modo Kernel.

No runtime, os provedores V2 funcionam da seguinte maneira:

  • O processo do provedor registra-se no sistema de Contador de Desempenho do Windows chamando PerfStartProvider e PerfSetCounterSetInfo. Opcionalmente, o provedor fornece uma função de retorno de chamada que será notificada sobre solicitações do consumidor.
  • O processo do provedor adiciona ou remove instâncias conforme apropriado usando PerfCreateInstance e PerfDeleteInstance. O provedor atualiza os valores do contador quando eles mudam usando APIs PerfSet***.
  • Um consumidor faz uma solicitação de dados de um contraconjunto. O sistema verifica se o chamador tem permissões para coletar os dados. Em seguida, o sistema usa um thread de trabalho em execução no processo do provedor para lidar com a solicitação, invocando a função de retorno de chamada do provedor, se apropriado. O thread de trabalho copia os dados coletados em um buffer gerenciado pelo sistema e, em seguida, o sistema retorna os dados para o consumidor.

Etapas para criar um provedor

  1. Escreva um manifesto que defina os dados do contador que seu provedor fornecerá. Para obter detalhes sobre como gravar o manifesto, consulte Esquema de contadores de desempenho.

  2. Use CTRPP para gerar o código de modelo que você inclui em seu provedor. O código de modelo inclui as estruturas que definem os conjuntos de contadores, as funções CounterInitialize e CounterCleanup e as cadeias de caracteres de recurso.

    Seu provedor deve chamar as funções CounterInitialize e CounterCleanup . O CounterInitialize chama a função PerfStartProvider para registrar o provedor e também chama a função PerfSetCounterSetInfo para inicializar o conjunto de contadores. O CounterCleanup chama a função PerfStopProvider para remover o registro do provedor.

  3. Inclua o código do modelo da etapa anterior em seu projeto e conclua o provedor.

    Para concluir o provedor, você precisa chamar a função PerfCreateInstance para cada instância do conjunto de contadores fornecido.

    Para definir os valores do contador, chame uma das seguintes funções:

    O benefício de usar PerfSetCounterRefValue é que você não precisa fazer uma chamada de função para definir ou atualizar o valor do contador, basta atualizar sua variável de contador local (a variável para a qual os pontos de referência) e Os Contadores de Desempenho usam o ponteiro para acessar o valor do contador.

    Se você não usar PerfSetCounterRefValue, poderá usar as seguintes funções para incrementar ou diminuir o valor do contador:

    Antes que o provedor seja encerrado, ele deve chamar PerfDeleteInstance para cada instância de conjunto de contadores que ele criou.

    Se você especificou o atributo de retorno de chamada no elemento do provedor no manifesto ou usou o argumento -NotificationCallback ao chamar CTRPP, deverá implementar a função de retorno de chamada ControlCallback . Você passa a função de retorno de chamada para CounterInitialize.

    Se você usou o -MemoryRoutines ao chamar CTRPP, deverá implementar as funções de retorno de chamada AllocateMemory e FreeMemory . Você passa as funções de retorno de chamada para CounterInitialize.

  4. Ao instalar o provedor, use a ferramenta LodCtr para gravar o nome do arquivo binário que contém as cadeias de caracteres de recurso localizadas e as IDs de recurso no registro. Para obter detalhes sobre como usar o LodCtr, consulte Esquema de contadores de desempenho.

  5. Ao desinstalar seu provedor, use a ferramenta UnlodCtr para remover as informações do provedor do registro.