Creazione di una DLL dell'estensione per le prestazioni
Importante
A causa di limitazioni significative di prestazioni e affidabilità, il metodo per fornire i dati del contatore delle prestazioni descritti in questo argomento potrebbe essere modificato o non disponibile in futuro. Microsoft consiglia invece di usare il metodo descritto in Fornire dati contatori usando la versione 2.0 per creare nuovi contatori delle prestazioni e di eseguire la migrazione dei contatori delle prestazioni esistenti per l'uso di tale metodo.
Un provider V1 usa una DLL delle prestazioni che fornisce dati contatori ai consumer. La DLL delle prestazioni deve esportare le funzioni OpenPerformanceData, CollectPerformanceData e ClosePerformanceData . In genere, si usa un file di definizione del modulo (con estensione def) per esportare le funzioni dalla DLL. Il sistema chiama queste funzioni quando un consumer esegue query sui dati sulle prestazioni.
La prima volta che un consumer chiama RegQueryValueEx o se il consumer utilizza la funzione RegOpenKey o RegConnectRegistry per aprire HKEY_PERFORMANCE_DATA
, il sistema chiama la funzione OpenPerformanceData per ogni provider registrato nel computer. L'eccezione è se il provider specifica l'elenco di oggetti supportati nella [objects]
sezione del file .INI. In questo caso, il sistema chiama il provider solo se uno degli oggetti sottoposti a query corrisponde a un oggetto dall'elenco.
La funzione OpenPerformanceData offre a ogni provider l'opportunità di inizializzare le relative strutture di dati sulle prestazioni. Se quindi la funzione OpenPerformanceData viene restituita correttamente, il sistema chiama la funzione CollectPerformanceData del provider. Le chiamate successive a RegQueryValueEx determinano che il sistema chiami la funzione CollectPerformanceData .
Al termine della raccolta dei dati sulle prestazioni, il consumer specifica HKEY_PERFORMANCE_DATA
in una chiamata alla funzione RegCloseKey . In questo modo il sistema chiama la funzione ClosePerformanceData per ogni provider. I provider vengono quindi scaricati.
È possibile che più consumer raccolgono contemporaneamente i dati sulle prestazioni. Il sistema chiama le funzioni OpenPerformanceData e ClosePerformanceData una sola volta ogni volta che la DLL viene caricata o scaricata.
Nota
Assicurarsi di includere "C" extern nel codice C++ per impedire al compilatore di aggiungere decorazioni ai nomi di funzione; in caso contrario, il sistema potrebbe non riuscire a trovare le funzioni.
Nota
Se si verifica un errore durante il caricamento della DLL delle prestazioni, la ricerca delle funzioni o la chiamata delle funzioni, il sistema disabiliterà il provider per le raccolte successive all'interno dello stesso processo. Inoltre, se ciò si verifica durante l'esecuzione in un processo con privilegi, il sistema aggiunge un valore Disable Performance Counters alla chiave prestazioni per impedire che il provider venga caricato in futuro.
Per altre informazioni sulla scrittura di una DLL delle prestazioni, vedere gli argomenti seguenti: