Condividi tramite


Uso delle funzioni del Registro di sistema per l'utilizzo dei dati del contatore

Usare le funzioni del Registro di sistema per raccogliere i dati sulle prestazioni dalla chiave del Registro di sistema speciale HKEY_PERFORMANCE_DATA .

I dati sulle prestazioni non vengono effettivamente archiviati nel Registro di sistema. La chiamata alle funzioni del Registro di sistema causa la raccolta dei dati dal provider di dati di prestazioni appropriato.

Nota

In genere non usare le funzioni del Registro di sistema per usare i dati dei contatori. È invece consigliabile usare le funzioni Di Supporto dati prestazioni (PDH). Le funzioni PDH sono più facili da usare ed evitare molti problemi di prestazioni e affidabilità che possono verificarsi tramite l'uso errato delle funzioni del Registro di sistema.

Nota

Non è possibile usare le funzioni del Registro di sistema se si scrivono app Windows OneCore. Usare invece funzioni Consumer PerfLib V2.

Le funzioni del Registro di sistema sono l'API di basso livello per la raccolta di dati dai provider V1. Le funzioni del Registro di sistema supportano anche la raccolta di dati dai provider V2 tramite un livello di traduzione che chiama le funzioni consumer V2.

Per ottenere dati sulle prestazioni dal sistema locale, chiamare la funzione RegQueryValueEx . Usare HKEY_PERFORMANCE_DATA come chiave. La prima chiamata apre la chiave. Non è necessario aprire in modo esplicito la chiave.

Per ottenere dati sulle prestazioni da un sistema remoto, chiamare la funzione RegConnectRegistry . Usare il nome del computer del sistema remoto e usare HKEY_PERFORMANCE_DATA come chiave. Questa chiamata recupera una chiave che rappresenta i dati sulle prestazioni per il sistema remoto. Usare questa chiave anziché HKEY_PERFORMANCE_DATA la chiave per recuperare i dati.

Assicurarsi di usare la funzione RegCloseKey per chiudere l'handle alla chiave al termine dell'acquisizione dei dati sulle prestazioni. Questo è importante sia per i casi locali che remoti:

  • RegCloseKey(HKEY_PERFORMANCE_DATA) non chiude effettivamente un handle del Registro di sistema, ma cancella tutti i dati memorizzati nella cache e libera le DLL delle prestazioni caricate.
  • RegCloseKey(hkeyRemotePerformanceData) chiude l'handle al Registro di sistema del computer remoto.

Importante

Non chiamare RegCloseKey(HKEY_PERFORMANCE_DATA) durante DLL_PROCESS_DETACH.

Usare il lpValueName parametro della funzione RegQueryValueEx per indicare le informazioni da recuperare. Nella tabella seguente sono elencati i valori che è possibile specificare per lpValueName. Si noti che le stringhe di valore non sono distinzione tra maiuscole e minuscole.

Valore Descrizione
Global Recupera i dati sulle prestazioni per tutti gli oggetti prestazioni registrati nel computer, ad eccezione di quelli inclusi nella Costly categoria.
OLD_Global Windows Vista e versioni successive: Recupera i dati sulle prestazioni per tutti gli oggetti prestazioni V1 registrati nel computer, ad eccezione di quelli inclusi nella Costly categoria. Usare questo anziché Global per evitare di raccogliere dati del provider V2 non necessari quando si conosce che i dati di interesse provengono da un provider V1.
n1 n2 ... Recupera i dati sulle prestazioni per uno o più oggetti prestazioni. Specificare l'indice decimale associato a ogni oggetto da recuperare in un elenco separato da spazio. Ad esempio, se si desidera recuperare gli oggetti System e Memory e si è determinato che gli indici delle stringhe di nome corrispondenti sono 2 e 4, specificare la stringa "2 4". Si noti che la query può restituire un numero diverso di oggetti richiesti. Ciò può verificarsi se l'oggetto specificato non è disponibile, se l'oggetto specificato dipende da un altro tipo di oggetto o se un provider restituisce in caso contrario dati non richiesti direttamente. Ad esempio, i thread dipendono dai processi, quindi, se si richiedono dati dall'oggetto, i risultati includono i dati dall'oggetto ThreadProcess .
Counter n Recupera le stringhe di nome per l'identificatore di lingua specificato, ad esempio l'inglese per Counter 9. Usare le stringhe di nome restituite per trovare l'indice corrispondente a un nome specificato o per trovare il nome corrispondente a un determinato indice. Per informazioni dettagliate, vedere Recupero dei nomi dei contatori e testo della Guida . Si noti che l'elenco restituito include entrambi i nomi di oggetto (contatore) e i nomi dei contatori, non esiste un modo semplice per determinare se un nome è un nome di oggetto o un nome di contatore.
Help n Recupera le stringhe della Guida per l'identificatore di lingua specificato, ad esempio l'inglese per Help 9. Usare le stringhe della Guida restituite per trovare descrizioni corrispondenti a oggetti (contatori) o indici della Guida contatore. Per informazioni dettagliate, vedere Recupero dei nomi dei contatori e testo della Guida .
Costly Deprecato: Recupera i dati sulle prestazioni per i tipi di oggetti i cui dati sono costosi da raccogliere in termini di tempo del processore o utilizzo della memoria. Questa raccolta può richiedere diversi minuti su un computer caricato pesantemente. È consigliabile eseguire la raccolta in un thread di lavoro se l'applicazione deve rispondere all'utente durante questa raccolta dati.
MetadataGlobal Windows 10 20H1 e versioni successive: recupera i metadati per tutti gli oggetti prestazioni registrati nel computer, ad eccezione di quelli inclusi nella Costly categoria.
OLD_MetadataGlobal Windows 10 20H1 e versioni successive: recupera i metadati per tutti gli oggetti prestazioni V1 registrati nel computer, ad eccezione di quelli inclusi nella Costly categoria.
MetadataCostly Windows 10 20H1 e versioni successive: recupera i metadati per gli oggetti prestazioni costosi.
OLD_MetadataCostly Windows 10 20H1 e versioni successive: recupera i metadati per gli oggetti prestazioni V1 costosi.

Per informazioni dettagliate sul formato dei dati sulle prestazioni restituiti dal Registro di sistema, vedere Formato dati prestazioni.

Per un esempio che ottiene i nomi e le descrizioni dei contatori registrati nel computer, vedere Recupero dei nomi dei contatori e testo della Guida.

Per un esempio che accede ai componenti dei dati delle prestazioni, vedere Visualizzazione di oggetti, istanza e nomi dei contatori.

Per un esempio che recupera, calcola e stampa i valori dei contatori, vedere Recupero dei dati dei contatori e calcolo dei valori dei contatori.

Raccolta di metadati

Windows 10 20H1 aggiunge il supporto per le operazioni di raccolta solo metadati. Queste operazioni sono destinate all'uso quando si effettua un elenco degli oggetti prestazioni e dei contatori disponibili in un computer.

  • La raccolta di soli metadati può essere più veloce rispetto alla raccolta di dati full-data corrispondente perché può ignorare la raccolta di dati dell'istanza da oggetti che supportano solo la raccolta dei metadati.
  • La raccolta di soli metadati usa meno memoria rispetto alla raccolta di dati full-data corrispondente perché non è necessario spazio per restituire i dati dell'istanza da oggetti che supportano la raccolta solo dei metadati.
  • La raccolta di soli metadati è più completa della raccolta di dati full-data corrispondente perché restituisce l'elenco di contatori disponibili anche se non sono presenti istanze di oggetti che supportano la raccolta solo dei metadati.

Suggerimento

L'uso appropriato della raccolta solo dei metadati è particolarmente importante quando si raccolgono dati da server con molti processi o thread. Una raccolta normale Global deve raccogliere e restituire informazioni su ogni processo e thread nel sistema, mentre MetadataGlobal la raccolta non deve raccogliere informazioni sui processi o sui thread.

Le funzioni Di Supporto dati prestazioni (PDH) usano automaticamente la raccolta dei metadati quando si determina il set di oggetti prestazioni disponibili in un computer.

Il supporto del sistema operativo per le operazioni di sola metadati è indicato da un valore diverso da zero nel valore del HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\Supports Metadata Registro di sistema. Se questo valore non è presente o è impostato su 0, usare una raccolta dati completa ( ad esempio ) anziché una raccolta di metadati (ad esempio GlobalMetadataGlobal).

Non tutti gli oggetti prestazioni supportano la raccolta di soli metadati. Quando si richiede una MetadataGlobal raccolta, Windows verificherà ogni oggetto prestazioni per il supporto solo dei metadati (indicato da un valore diverso da zero nel valore del HKLM\SYSTEM\CurrentControlSet\Services\<ServiceName>\Performance\Collect Supports Metadata Registro di sistema). Se l'oggetto prestazioni non supporta la raccolta solo dei metadati, Windows eseguirà una normale raccolta di dati dall'oggetto. Se l'oggetto prestazioni supporta la raccolta solo metadati, Windows eseguirà una raccolta di metadati solo dall'oggetto. I dati restituiti all'utente per una query di sola metadati conterranno quindi PERF_OBJECT_TYPE blocchi sia dalla raccolta full-data che dalla raccolta di metadati. I PERF_OBJECT_TYPE blocchi possono contenere o omettere informazioni sull'istanza, a seconda che il blocco sia stato raccolto da un provider che esegue o non supporta query di sola metadati.

I dati restituiti da una raccolta solo metadati sono uguali ai dati di una normale raccolta, ad eccezione di:

  • Il NumInstances campo dello PERF_OBJECT_TYPE struct sarà PERF_METADATA_MULTIPLE_INSTANCES (che indica che l'oggetto supporta 0 o più istanze denominate) o PERF_METADATA_NO_INSTANCES (che indica che l'oggetto ha sempre 1 istanza senza nome).
  • Non saranno PERF_INSTANCE_DEFINITION presenti blocchi dopo lo PERF_OBJECT_TYPE struct.

Perflib

La chiave del HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib Registro di sistema supporta diversi DWORD valori correlati alla raccolta dei contatori delle prestazioni. Questi devono in genere essere annullati per il comportamento predefinito, ma possono essere configurati da un amministratore in base alle esigenze per scenari specifici.

  • Configuration Flags: il valore predefinito è 0. Può essere impostato su una combinazione dei flag seguenti per abilitare un comportamento speciale:
    • 0x01: non testare i plug-in per gli errori di allineamento del buffer dei dati. Per impostazione predefinita, il sistema convalida l'allineamento del buffer dei plug-in.
    • 0x02: non disabilitare automaticamente i plug-in. Per impostazione predefinita, il sistema disabilita i plug-in che si arresta in modo anomalo o mostra un comportamento errato.
    • 0x04: non convalidare l'integrità del buffer del plug-in. Per impostazione predefinita, il sistema verifica l'overrun del buffer del plug-in.
    • 0x08: non controllare i timeout del plug-in. Per impostazione predefinita, il sistema controlla i blocchi del plug-in.
  • Disable Performance Counters: il valore predefinito è 0. Se impostato su 1, la raccolta di contatori delle prestazioni V1 verrà disabilitata per il sistema.
  • ExtCounterTestLevel: il valore predefinito è 4. Controlla la quantità di convalida eseguita dal sistema per proteggere il comportamento errato del plug-in. Per informazioni dettagliate, vedere PM_COLLECT_PROC.