Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os componentes do modo kernel fornecem contadores de desempenho usando as APIs de Contadores de Desempenho para Windows (PCW).
Use as seguintes etapas para desenvolver novos provedores de dados de contador:
Escreva um manifesto de contador que descreva o provedor e seus contadores. O manifesto do contador é um arquivo de formato XML que define o provedor de contador de desempenho e seus contadores.
- Defina o
applicationIdentityatributo como o nome de um binário que será instalado como parte do componente do modo kernel e que conterá os recursos de cadeia de caracteres necessários para os consumidores de dados de desempenho. - Defina o atributo
providerTypecomokernelMode. - Defina pelo menos um
structelemento (emcounterSet/structs) com o nome de uma estrutura C/C++ que será usada ao passar valores de contador do componente para as APIs pcw. - Em cada
counter, defina ostructefieldde qual PCW deve ler o valor do contador.
- Defina o
Como parte do processo de build do componente, use a ferramenta CTRPP para compilar o manifesto do contador. (A ferramenta CTRPP (Pré-processador de contador) está incluída no WDK e está disponível no Prompt de Comando do Desenvolvedor digitando
ctrpp.) A ferramenta CTRPP gerará um.rcarquivo e um.harquivo.- O arquivo gerado por
.rcCTRPP deve ser compilado pela ferramenta Compilador de Recursos (RC.exe) e o arquivo resultante.resdeve ser vinculado ao binário nomeado noapplicationIdentityatributo . Você pode compilar diretamente o arquivo gerado pelo.rcCTRPP ou#includepode o arquivo gerado por.rcCTRPP em um arquivo existente.rcque está sendo compilado no binário. - O arquivo gerado pelo
.hCTRPP contém funções auxiliares que encapsulam as APIs pcw subjacentes. Por exemplo, o arquivo gerado por.hCTRPP conterá uma função RegistrarXxx que chamaPcwRegisterem seu nome. Na maioria dos casos, você chamará as funções auxiliares geradas por CTRPP em vez de chamar qualquer APIs pcw diretamente, mas você pode consultar a documentação das APIs pcw para entender o que as funções geradas por CTRPP correspondentes estão fazendo. As funções auxiliares gerenciam a tradução do layout de dados do contador do componente para oPCW_DATAlayout esperado pelas APIs pcw.
- O arquivo gerado por
Na inicialização do componente, invoque a função RegisterXxx gerada por CTRPP, que chama PcwRegister. No desligamento do componente, invoque a função UnregisterXxx gerada por CTRPP, que chama PcwUnregister.
Adicione código para fornecer dados de contador. Isso é feito implementando uma função de retorno de chamada PCW_CALLBACK ou mantendo estruturas de dados com valores de contador para cada instância e invocando as funções CreateInstanceXxx e CloseInstanceXxx geradas por CTRPP à medida que as instâncias são criadas e destruídas.
Na instalação do componente, use
lodctr /m:<CounterManifest> <InstallPath>para instalar o provedor. Na desinstalação do componente, useunlodctr(com/mou/gparâmetros) para desinstalar o provedor. A instalação do provedor adiciona os contadores do provedor a um repositório em todo o sistema de contadores disponíveis para que os contadores possam ser usados por consumidores de dados de desempenho, como perfmon, typeperf ou WMI. Em particular, a instalação do provedor registra o caminho completo para o binário (arquivo DLL, SYS ou EXE) que contém a tabela de cadeia de caracteres do provedor. O caminho completo para o binário é determinado combinando o atributo doapplicationIdentitymanifesto com os<CounterManifest>valores e<InstallPath>usados na linha de comando dalodctrseguinte maneira:- Se o
applicationIdentityatributo for um caminho completo, ele será usado. - Caso contrário, se o
<InstallationPath>parâmetro for um caminho completo, ele será usado. - Caso contrário, se o
<CounterManifest>parâmetro for um caminho completo, o diretório de<CounterManifest>será combinado com o nome do arquivo doapplicationIdentityatributo. - Caso contrário, o diretório de trabalho atual será combinado com o nome do arquivo do
applicationIdentityatributo.
- Se o
Para obter um exemplo de um provedor PCW no modo kernel, consulte o Kcs (Exemplo de Contador de Kernel) no repositório de exemplos de driver do Windows no GitHub.
Confira também
Monitoramento de desempenho do modo kernel