使用記錄檔

若要開啟要讀取的記錄檔,請呼叫 PdhOpenQuery 並指定記錄檔的路徑。 若要開啟要寫入的記錄檔,您必須呼叫 PdhOpenLog。 若要關閉記錄檔,請根據您用來開啟記錄檔的函式,呼叫 PdhCloseQueryPdhCloseLog

從記錄檔讀取

從記錄檔讀取效能資料與從即時來源讀取資料相同,您開啟查詢、將計數器新增至查詢,並呼叫 PdhCollectQueryData 從記錄檔收集範例。 當您到達記錄檔結尾時,PdhCollectQueryData會傳回PDH_NO_MORE_DATA。

記錄檔中的每個範例都包含最初收集並寫入記錄檔時的時間戳記。 若要擷取記錄檔中第一個和最後一個範例的時間戳記,請呼叫 PdhGetDataSourceTimeRange 函式。 如果您想要將您從記錄檔讀取的範例限制為特定時間範圍,請參閱 設定查詢的時間範圍

如果您不知道記錄檔中有哪些效能物件和計數器存在,您可以呼叫 PdhEnumObjects 來判斷物件清單。 指定物件時,您可以呼叫 PdhEnumObjectItemsPdhExpandWildCardPath 來擷取記錄檔中包含的物件實例和計數器清單。

如果您呼叫 PdhEnumObjectItems,請使用 實例和計數器清單,為每個可能的實例和計數器組合建立路徑。 當您呼叫 PdhAddCounter 以將計數器新增至查詢時,如果記錄檔未包含指定的組合,函式將會失敗。

如果您使用 PdhExpandWildCardPath,您可以建立路徑,其中包含實例名稱和計數器的萬用字元,例如 \object (*) \*。 如果物件不包含 實例,函式會傳回PDH_INVALID_PATH。 在此情況下,請只使用計數器的萬用字元呼叫 PdhExpandWildCardPath ,例如 \object\*。

較新的作業系統可以讀取在舊版作業系統上產生的記錄檔;不過,在 Windows Vista 和更新版本的作業系統上建立的記錄檔無法在舊版作業系統上讀取。

如需從記錄檔讀取資料的範例,請參閱 從記錄檔讀取效能資料

從多個記錄檔讀取

如果您需要建立從數個記錄檔讀取的查詢,請呼叫 PdhBindInputDataSource 將記錄檔系結在一起。 接著,您必須使用以 'H' 結尾的 PDH 函式,例如 PdhOpenQueryH

寫入記錄檔

寫入記錄檔之前,請先呼叫 PdhOpenQuery 來建立查詢,並指定效能資料的來源,不論是即時資料還是記錄檔。 然後,新增您要查詢的計數器。

若要開啟目的地檔案,請呼叫 PdhOpenLog。 當您開啟記錄檔時,請指定查詢。 若要收集效能資料並將它寫入記錄檔,請呼叫 PdhUpdateLog

如果將計數器資料寫入逗號分隔 (.csv) 或以 tab 分隔的 (.tsv) 記錄檔,且路徑包含萬用字元實例,則路徑會展開,而且只會在路徑展開時存在的實例包含在記錄檔中。 不過,對於 binary (.blg) 或 SQL 記錄檔,萬用字元不會展開,因此記錄檔包含記錄期間建立的實例。

如需將資料寫入記錄檔的範例,請參閱 將效能資料寫入記錄檔

壓縮記錄檔

您可以使用 PdhComputeCounterStatistics 函式來壓縮記錄檔。 例如,從記錄檔讀取十筆記錄,呼叫 PdhComputeCounterStatistics 來計算平均值,然後將平均值寫入輸出記錄檔。

下列主題提供使用記錄檔的其他資訊。