お世話になります。
Windows Server 2003 R2 で実行しているプログラムから PDH関数を利用して リモートPCのパフォーマンスカウンターを定期的に参照しているのですが、突然 PdhConnectMachine や PdhEnumObjects の戻り値が 0x800007D0 となり失敗するようになります。ここでリモートPCをリブートするとエラーは回復いたします。
また上記エラーが発生した際、リモートPC側のWMI Performance Adapterサービスが停止(正常時は5分毎に起動と停止を繰り返す)していることがわかっております。
現在、上記 症状が複数台で発生しているのですが、障害の発生頻度が3~4ヶ月に1回と少ない為に解析に苦慮しております。
以前、リモート サーバー上のパフォーマンス カウンター情報を収集する際、メモリ リークが発生するといった不具合(http://support.microsoft.com/kb/307830)がありましたが、今回はPDH関数を発行するクライアント側の不具合は確認されず、異なる問題と思われます。
プログラム内で定期的に実行しているPDH関数の順序を抜き出すと以下の通りです。(手順1、手順2はそれぞれ平行して実行されます。)
(手順1)
PdhGetDllVersion(&dwVersion);
PdhConnectMachine( host );
PdhOpenQuery(NULL, 0, &hQueryData);
PdhAddCounter(hQueryData, szPath, 0, &hCounterData);
PdhCollectQueryData(hQueryData);
PdhGetFormattedCounterValue(hCounterData, PDH_FMT_LONG, NULL, &FmtValue);
PdhCloseQuery(hQueryData);
(手順2)
PdhGetDllVersion(&dwVersion);
PdhEnumObjects( NULL, szTarget, ObjNames, &ObjSize, PERF_DETAIL_WIZARD, TRUE );
PdhEnumObjectItems ( NULL, szTarget, obj_cmd, szCounterListBuffer, &dwCounterListSize, szInstanceListBuffer, &dwInstanceListSize, PERF_DETAIL_WIZARD, 0 );
想定される不具合原因、また次回障害が発生した場合に確認すべき点など調査し、原因究明を行いたいと考えております。
もし同様の障害事象を経験された方が居られましたら、情報をいただけないでしょうか。よろしくお願いいたします。