Condividi tramite


Creazione di una query

Per creare una nuova query che raccoglie i dati sulle prestazioni da un'origine o da un file di log in tempo reale, chiamare la funzione PdhOpenQuery . La funzione restituisce un handle alla query usata nelle successive chiamate di funzione PDH.

Dopo aver creato la query, chiamare la funzione PdhAddCounter per ogni contatore da aggiungere alla query. È possibile utilizzare uno dei metodi seguenti per fornire il percorso del contatore completo.

  • Definire il percorso del contatore come stringa statica. Utilizzare questo metodo se si monitora sempre lo stesso contatore e se si ha familiarità con la sintassi corretta di un percorso del contatore. Per informazioni sulla sintassi corretta utilizzata per specificare un contatore, vedere Specifica di un percorso contatore.
  • Inizializzare una struttura PDH_COUNTER_PATH_ELEMENTS con i nomi del computer, dell'oggetto, del contatore e dell'istanza. Passare questa struttura a PdhMakeCounterPath che restituirà un percorso del contatore per gli elementi specificati.
  • Specificare un percorso del contatore contenente caratteri jolly e chiamare PdhExpandWildCardPath per ottenere un elenco di nomi di contatori che corrispondono ai caratteri jolly nel percorso. Analizzare l'elenco dei nomi dei contatori e aggiungere alla query i contatori desiderati da questo elenco.
  • Chiamare la funzione PdhBrowseCounters per visualizzare una finestra di dialogo che consente all'utente di esplorare e selezionare i contatori delle prestazioni. Per altre informazioni, vedere Esplora contatori.

Si noti che se viene specificata un'istanza del contatore che non esiste, PdhAddCounter non segnala una condizione di errore. Restituisce invece ERROR_SUCCESS. Il motivo di questo comportamento è che non è noto se è stata specificata un'istanza di contatore inesistente o una che esiste ma non è stata ancora creata.

L'istanza del contatore mancante verrà segnalata da PdhCollectQueryData, PdhGetRawCounterValue o PdhGetFormattedCounterValue. Quando si chiama PdhCollectQueryData solo per un'istanza del contatore e l'istanza del contatore non esiste, si presuppone che l'istanza del contatore non esista e che la funzione restituisca PDH_NO_DATA. Tuttavia, se viene eseguita una query su più contatori, PdhCollectQueryData potrebbe comunque restituire ERROR_SUCCESS anche se una delle istanze del contatore non esiste ancora. In questo caso, chiamare PdhGetRawCounterValue o PdhGetFormattedCounterValue per ognuna delle istanze del contatore di interesse. Se l'istanza non esiste quando si chiama PdhGetRawCounterValue, la funzione restituisce ERROR_SUCCESS e imposta il membro CStatus di PDH_RAW_COUNTER su PDH_STATUS_NO_INSTANCE. Se l'istanza non esiste quando si chiama PdhGetFormattedCounterValue, la funzione restituisce PDH_INVALID_DATA e imposta il membro CStatus del PDH_FMT_COUNTERVALUE su PDH_CSTATUS_NO_INSTANCE .

Si noti che il percorso del contatore specificato nella funzione PdhAddCounter deve essere localizzato. La funzione PdhAddEnglishCounter offre un modo indipendente dalle impostazioni locali per aggiungere contatori delle prestazioni alla query. Questa funzione è il modo consigliato per aggiungere contatori indipendenti dalle impostazioni locali a una query.

Per rimuovere un contatore da una query, chiamare la funzione PdhRemoveCounter .

Al termine della raccolta dei dati per una query, chiamare la funzione PdhCloseQuery per chiudere la query e rilasciare tutte le risorse di sistema allocate. PdhCloseQuery chiude tutti gli handle di contatore associati alla query.