效能資料協助程式錯誤碼
所有效能資料協助程式 (PDH) 函式都會傳回類型 為 PDH_STATUS 的值。 如果函式成功,傳回值為 ERROR_SUCCESS
。 否則,函式會傳 回系統錯誤碼 或 PDH 錯誤碼。 若要擷取應用程式中錯誤的描述文字,請使用 FormatMessage 函式,如下列範例所示。
#include <windows.h>
#include <stdio.h>
#include <pdhmsg.h>
void main(void)
{
HANDLE hPdhLibrary = NULL;
LPWSTR pMessage = NULL;
DWORD dwErrorCode = PDH_PLA_ERROR_ALREADY_EXISTS;
hPdhLibrary = LoadLibrary(L"pdh.dll");
if (NULL == hPdhLibrary)
{
wprintf(L"LoadLibrary failed with %lu\n", GetLastError());
return;
}
if (!FormatMessage(FORMAT_MESSAGE_FROM_HMODULE |
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_IGNORE_INSERTS,
hPdhLibrary,
dwErrorCode,
0,
(LPWSTR)&pMessage,
0,
NULL))
{
wprintf(L"Format message failed with 0x%x\n", GetLastError());
return;
}
wprintf(L"Formatted message: %ls\n", pMessage);
LocalFree(pMessage);
}
對於數據收集和格式化函式,請務必記住,函式的傳回值表示函式呼叫的成功或錯誤,而不一定是計數器數據。 請務必檢查 傳回之計數器值的 CStatus 成員,以確保傳回的數據在您使用它之前有效。 如果 CStatus 成員的值未指出成功,請勿使用數據。
下表提供 PDH 特有的錯誤碼清單。 這些值定義於 pdhmsg.h
頭檔中。
錯誤碼 | 描述 |
---|---|
0x00000000 (PDH_CSTATUS_VALID_DATA) | 傳回的數據有效。 |
0x00000001 (PDH_CSTATUS_NEW_DATA) | 傳回數據值有效,與上一個範例不同。 |
0x800007D0(PDH_CSTATUS_NO_MACHINE) | 無法連線到指定的電腦,或計算機已離線。 |
0x800007D1 (PDH_CSTATUS_NO_INSTANCE) | 指定的實例不存在。 |
0x800007D2 (PDH_MORE_DATA) | 傳回的數據比所提供緩衝區中容納的數據還多。 配置較大的緩衝區,然後再次呼叫 函式。 |
0x800007D3 (PDH_CSTATUS_ITEM_NOT_VALIDATED) | 數據項已新增至查詢,但尚未驗證或存取。 此數據項上沒有其他狀態資訊可供使用。 |
0x800007D4 (PDH_RETRY) | 應重試選取的作業。 |
0x800007D5(PDH_NO_DATA) | 不傳回任何數據。 |
0x800007D6 (PDH_CALC_NEGATIVE_DENOMINATOR) | 偵測到具有負分母值的計數器。 |
0x800007D7 (PDH_CALC_NEGATIVE_TIMEBASE) | 偵測到具有負時間基底值的計數器。 |
0x800007D8 (PDH_CALC_NEGATIVE_VALUE) | 偵測到具有負值的計數器。 |
0x800007D9 (PDH_DIALOG_CANCELLED) | 使用者已取消對話框。 |
0x800007DA (PDH_END_OF_LOG_FILE) | 已到達記錄檔的結尾。 |
0x800007DB (PDH_ASYNC_QUERY_TIMEOUT) | 等候異步計數器收集線程結束時發生逾時。 |
0x800007DC (PDH_CANNOT_SET_DEFAULT_REALTIME_DATASOURCE) | 無法變更設定預設即時數據源。 有即時查詢會話會收集計數器數據。 |
0xC0000BB8 (PDH_CSTATUS_NO_OBJECT) | 在系統上找不到指定的物件。 |
0xC0000BB9 (PDH_CSTATUS_NO_COUNTER) | 找不到指定的計數器。 |
0xC0000BBA (PDH_CSTATUS_INVALID_DATA) | 傳回的數據無效。 |
0xC0000BBB (PDH_MEMORY_ALLOCATION_FAILURE) | PDH 函式無法配置足夠的暫存記憶體來完成作業。 關閉某些應用程式或擴充頁面檔案,然後重試函式。 |
0xC0000BBC (PDH_INVALID_HANDLE) | 句柄不是有效的 PDH 物件。 |
0xC0000BBD (PDH_INVALID_ARGUMENT) | 必要的自變數遺失或不正確。 |
0xC0000BBE (PDH_FUNCTION_NOT_FOUND) | 找不到指定的函式。 |
0xC0000BBF (PDH_CSTATUS_NO_COUNTERNAME) | 未指定計數器。 |
0xC0000BC0 (PDH_CSTATUS_BAD_COUNTERNAME) | 無法剖析計數器路徑。 檢查指定路徑的格式和語法。 |
0xC0000BC1(PDH_INVALID_BUFFER) | 呼叫端傳遞的緩衝區無效。 |
0xC0000BC2 (PDH_INSUFFICIENT_BUFFER) | 要求的數據大於提供的緩衝區。 無法傳回要求的數據。 |
0xC0000BC3(PDH_CANNOT_CONNECT_MACHINE) | 無法連線到要求的電腦。 |
0xC0000BC4 (PDH_INVALID_PATH) | 無法解譯指定的計數器路徑。 |
0xC0000BC5(PDH_INVALID_INSTANCE) | 無法從指定的計數器路徑讀取實例名稱。 |
0xC0000BC6 (PDH_INVALID_DATA) | 資料無效。 |
0xC0000BC7(PDH_NO_DIALOG_DATA) | 對話框數據區塊遺失或無效。 |
0xC0000BC8 (PDH_CANNOT_READ_NAME_STRINGS) | 無法從指定的電腦讀取計數器和/或說明文字。 |
0xC0000BC9(PDH_LOG_FILE_CREATE_ERROR) | 無法建立指定的記錄檔。 |
0xC0000BCA (PDH_LOG_FILE_OPEN_ERROR) | 無法開啟指定的記錄檔。 |
0xC0000BCB (PDH_LOG_TYPE_NOT_FOUND) | 這個系統上尚未安裝指定的記錄檔類型。 |
0xC0000BCC (PDH_NO_MORE_DATA) | 沒有其他可用的資料。 |
0xC0000BCD (PDH_ENTRY_NOT_IN_LOG_FILE) | 記錄檔中找不到指定的記錄。 |
0xC0000BCE (PDH_DATA_SOURCE_IS_LOG_FILE) | 指定的數據源是記錄檔。 |
0xC0000BCF (PDH_DATA_SOURCE_IS_REAL_TIME) | 指定的數據源是目前的活動。 |
0xC0000BD0(PDH_UNABLE_READ_LOG_HEADER) | 無法讀取記錄檔標頭。 |
0xC0000BD1 (PDH_FILE_NOT_FOUND) | 找不到指定的檔案。 |
0xC0000BD2 (PDH_FILE_ALREADY_EXISTS) | 已經有具有指定檔名的檔案。 |
0xC0000BD3 (PDH_NOT_IMPLEMENTED) | 未實作參考的函式。 |
0xC0000BD4 (PDH_STRING_NOT_FOUND) | 在效能名稱和說明文字字串清單中找不到指定的字串。 |
0x80000BD5 (PDH_UNABLE_MAP_NAME_FILES) | 無法對應至性能計數器名稱數據檔。 數據將會從登錄讀取,並儲存在本機。 |
0xC0000BD6(PDH_UNKNOWN_LOG_FORMAT) | PDH DLL 無法辨識指定記錄檔的格式。 |
0xC0000BD7(PDH_UNKNOWN_LOGSVC_COMMAND) | 無法辨識指定的 Log Service 命令值。 |
0xC0000BD8(PDH_LOGSVC_QUERY_NOT_FOUND) | 找不到來自記錄服務的指定查詢,或無法開啟。 |
0xC0000BD9 (PDH_LOGSVC_NOT_OPENED) | 無法開啟效能資料記錄服務金鑰。 這可能是因為許可權不足,或因為尚未安裝服務。 |
0xC0000BDA (PDH_WBEM_ERROR) | 存取 WBEM 資料存放區時發生錯誤。 |
0xC0000BDB(PDH_ACCESS_DENIED) | 無法存取所需的電腦或服務。 檢查記錄服務的許可權和驗證,或針對受監視的計算機或服務上的使用者會話進行驗證。 |
0xC0000BDC (PDH_LOG_FILE_TOO_SMALL) | 指定的記錄檔大小上限太小,無法記錄選取的計數器。 此記錄檔中不會記錄任何數據。 指定一組較小的計數器來記錄或較大的檔案大小,然後重試此呼叫。 |
0xC0000BDD (PDH_INVALID_DATASOURCE) | 無法連線到 ODBC DataSource 名稱。 |
0xC0000BDE (PDH_INVALID_SQLDB) | SQL 資料庫 不包含 Perfmon 的有效數據表集。 |
0xC0000BDF (PDH_NO_COUNTERS) | 找不到此 Perfmon SQL 記錄集的計數器。 |
0xC0000BE0(PDH_SQL_ALLOC_FAILED) | 呼叫 SQLAllocStmt 失敗,但 %1。 |
0xC0000BE1 (PDH_SQL_ALLOCCON_FAILED) | 呼叫 SQLAlloc 連線 失敗,但 %1。 |
0xC0000BE2 (PDH_SQL_EXEC_DIRECT_FAILED) | 呼叫 SQLExecDirect 失敗,但 %1。 |
0xC0000BE3 (PDH_SQL_FETCH_FAILED) | 呼叫 SQLFetch 失敗,但 %1。 |
0xC0000BE4 (PDH_SQL_ROWCOUNT_FAILED) | 呼叫 SQLRowCount 失敗,但 %1。 |
0xC0000BE5 (PDH_SQL_MORE_RESULTS_FAILED) | 呼叫 SQLMoreResults 失敗,但 %1。 |
0xC0000BE6 (PDH_SQL_CONNECT_FAILED) | 呼叫 SQL 連線 失敗,但 %1。 |
0xC0000BE7 (PDH_SQL_BIND_FAILED) | 呼叫 SQLBindCol 失敗,但 %1。 |
0xC0000BE8 (PDH_CANNOT_CONNECT_WMI_SERVER) | 無法在要求的電腦上連線到 WMI 伺服器。 |
0xC0000BE9 (PDH_PLA_COLLECTION_ALREADY_RUNNING) | 集合 %1!s!“ 已在執行中。 |
0xC0000BEA (PDH_PLA_ERROR_SCHEDULE_OVERLAP) | 指定的開始時間是在結束時間之後。 |
0xC0000BEB (PDH_PLA_COLLECTION_NOT_FOUND) | 集合 %1!s!“ 不存在。 |
0xC0000BEC (PDH_PLA_ERROR_SCHEDULE_ELAPSED) | 指定的結束時間已經過去。 |
0xC0000BED(PDH_PLA_ERROR_NOSTART) | 集合 %1!s!“ 未啟動;檢查應用程式事件記錄檔中是否有任何錯誤。 |
0xC0000BEE (PDH_PLA_ERROR_ALREADY_EXISTS) | 集合 %1!s!“ 已經存在。 |
0xC0000BEF (PDH_PLA_ERROR_TYPE_MISMATCH) | 設定類型不符。 |
0xC0000BF0(PDH_PLA_ERROR_FILEPATH) | 指定的資訊不會解析為有效的路徑名稱。 |
0xC0000BF1 (PDH_PLA_SERVICE_ERROR) | 「效能記錄和警示」服務沒有回應。 |
0xC0000BF2 (PDH_PLA_VALIDATION_ERROR) | 傳遞的信息無效。 |
0x80000BF3 (PDH_PLA_VALIDATION_WARNING) | 傳遞的信息無效。 |
0xC0000BF4 (PDH_PLA_ERROR_NAME_TOO_LONG) | 提供的名稱太長。 |
0xC0000BF5 (PDH_INVALID_SQL_LOG_FORMAT) | SQL 記錄格式不正確。 正確的格式為 SQL:<DSN-name>!<LogSet-Name> 。 |
0xC0000BF6 (PDH_COUNTER_ALREADY_IN_QUERY) | PdhAddCounter 呼叫中的性能計數器已在效能查詢中新增。 忽略此計數器。 |
0xC0000BF7 (PDH_BINARY_LOG_CORRUPT) | 無法從輸入二進位記錄檔讀取計數器資訊和數據。 |
0xC0000BF8(PDH_LOG_SAMPLE_TOO_SMALL) | 至少有一個輸入二進位記錄檔包含少於兩個數據樣本。 |
0xC0000BF9 (PDH_OS_LATER_VERSION) | 計算機上名為 %1 的作業系統版本晚於本機電腦上的版本。 本機電腦無法使用這項作業。 |
0xC0000BFA (PDH_OS_EARLIER_VERSION) | %1 支援 %2 或更新版本。 檢查電腦上名為 %3 的作業系統版本。 |
0xC0000BFB (PDH_INCORRECT_APPEND_TIME) | 輸出檔案必須包含比要附加的檔案更早的數據。 |
0xC0000BFC (PDH_UNMATCHED_APPEND_COUNTER) | 這兩個檔案必須有相同的計數器才能附加。 |
0xC0000BFD (PDH_SQL_ALTER_DETAIL_FAILED) | 無法改變 SQL 資料庫中的 CounterDetail 數據表配置。 |
0xC0000BFE (PDH_QUERY_PERF_DATA_TIMEOUT) | 系統忙碌中。 收集計數器數據時發生逾時。 請稍後重試或增加 CollectTime 登錄值。 |