パフォーマンス データ ヘルパーのエラー コード

すべてのパフォーマンス データ ヘルパー (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 データソース名に接続できません。
0xC0000BDE (PDH_INVALID_SQLDB) SQL Databaseには、Perfmon の有効なテーブル セットが含まれていません。
0xC0000BDF (PDH_NO_COUNTERS) この Perfmon SQL ログ セットのカウンターが見つかりませんでした。
0xC0000BE0 (PDH_SQL_ALLOC_FAILED) SQLAllocStmt の呼び出しが %1 で失敗しました。
0xC0000BE1 (PDH_SQL_ALLOCCON_FAILED) SQLAllocConnect の呼び出しが %1 で失敗しました。
0xC0000BE2 (PDH_SQL_EXEC_DIRECT_FAILED) SQLExecDirect の呼び出しが %1 で失敗しました。
0xC0000BE3 (PDH_SQL_FETCH_FAILED) %1 で SQLFetch の呼び出しに失敗しました。
0xC0000BE4 (PDH_SQL_ROWCOUNT_FAILED) %1 で SQLRowCount の呼び出しに失敗しました。
0xC0000BE5 (PDH_SQL_MORE_RESULTS_FAILED) SQLMoreResults の呼び出しが %1 で失敗しました。
0xC0000BE6 (PDH_SQL_CONNECT_FAILED) %1 で SQLConnect の呼び出しに失敗しました。
0xC0000BE7 (PDH_SQL_BIND_FAILED) %1 で SQLBindCol の呼び出しに失敗しました。
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) 少なくとも 1 つの入力バイナリ ログ ファイルに含まれるデータ サンプルが 2 つ未満です。
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 レジストリ値を増やしてください。