使用記錄檔

若要開啟記錄檔以供讀取,請呼叫 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) 記錄檔,且路徑包含萬用字元實例,則會展開路徑,而且只會在記錄檔中包含路徑時存在的實例。 不過,對於二進位 (.blg) 或 SQL 記錄檔,不會展開萬用字元,如此一來,記錄檔就會包含記錄期間建立的實例。

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

壓縮記錄檔

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

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