Condividi tramite


Fornitura dei dati dei contatori utilizzando la versione 2.0

I provider di dati sulle prestazioni moderni usano un manifesto per definire i dati del contatore e usare le API del provider di contatori delle prestazioni per gestire i dati all'interno del contesto del provider. I provider implementati tramite un manifesto e le API del provider di contatori delle prestazioni vengono spesso chiamati provider V2. Windows supporta provider V2 in modalità utente in Windows Vista o versioni successive e provider V2 in modalità kernel in Windows 7 o versioni successive.

Questa pagina descrive i provider V2 in modalità utente. Per informazioni sui provider V2 in modalità kernel, vedere Monitoraggio delle prestazioni in modalità kernel.

In fase di esecuzione, i provider V2 funzionano come segue:

  • Il processo del provider si registra con il sistema contatore delle prestazioni di Windows chiamando PerfStartProvider e PerfSetCounterSetInfo. Il provider fornisce facoltativamente una funzione di callback che riceverà una notifica sulle richieste degli utenti.
  • Il processo del provider aggiunge o rimuove istanze in base alle esigenze usando PerfCreateInstance e PerfDeleteInstance. Il provider aggiorna i valori dei contatori quando cambiano usando le API PerfSet**.
  • Un consumer effettua una richiesta di dati da un contatore. Il sistema verifica che il chiamante disponga delle autorizzazioni per raccogliere i dati. Il sistema usa quindi un thread di lavoro in esecuzione nel processo del provider per gestire la richiesta, richiamando la funzione di callback del provider, se appropriato. Il thread di lavoro copia i dati raccolti in un buffer gestito dal sistema e quindi restituisce i dati al consumer.

Passaggi per la creazione di un provider

  1. Scrivere un manifest che definisce i dati del contatore che il provider fornirà. Per informazioni dettagliate sulla scrittura del manifesto, vedere schema dei contatori delle prestazioni.

  2. Usare CTRPP per generare il codice modello che includi nel tuo provider. Il codice del modello include le strutture che definiscono i set di contatori, le funzioni CounterInitialize e CounterCleanup e le stringhe di risorse.

    Il provider deve chiamare le funzioni CounterInitialize e CounterCleanup. Il CounterInitialize chiama la funzione PerfStartProvider per registrare il provider e chiama anche la funzione PerfSetCounterSetInfo per inizializzare il set di contatori. Il CounterCleanup chiama la funzione PerfStopProvider per rimuovere la registrazione del provider.

  3. Includere il codice del modello del passaggio precedente nel progetto e completare il provider.

    Per completare il provider, è necessario chiamare la funzione PerfCreateInstance per ogni istanza del set di contatori specificato.

    Per impostare i valori del contatore, chiamare una delle funzioni seguenti:

    Il vantaggio dell'uso di PerfSetCounterRefValue è che non è necessario effettuare una chiamata di funzione per impostare o aggiornare il valore del contatore, è sufficiente aggiornare la variabile del contatore locale (la variabile a cui i punti di riferimento) e i contatori delle prestazioni usano il puntatore per accedere al valore del contatore.

    Se non si usa PerfSetCounterRefValue, è possibile usare le funzioni seguenti per incrementare o decrementare il valore del contatore:

    Prima che il provider termini, deve chiamare il PerfDeleteInstance per ciascuna istanza che ha creato.

    Se è stato specificato l'attributo callback nell'elemento del provider nel manifesto o è stato usato l'argomento -NotificationCallback quando si chiama CTRPP, è necessario implementare la funzione di callback ControlCallback. Passa la funzione di callback a CounterInitialize.

    Se hai usato il -MemoryRoutines quando hai chiamato CTRPP, è necessario implementare le funzioni di callback AllocateMemory e FreeMemory. Passi le funzioni di callback a CounterInitialize.

  4. Quando si installa il provider, usare lo strumento LodCtr per scrivere il nome del file binario che contiene le stringhe di risorse localizzate e gli ID risorsa nel Registro di sistema. Per informazioni dettagliate sull'uso di LodCtr, vedere lo Schema dei Contatori delle Prestazioni .

  5. Quando si disinstalla il provider, usare lo strumento UnlodCtr per rimuovere le informazioni del provider dal Registro di sistema.