locked
PdhConnectMachine で 戻り値 0x800007D0 RRS feed

  • 質問

  • お世話になります。

    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 );

    想定される不具合原因、また次回障害が発生した場合に確認すべき点など調査し、原因究明を行いたいと考えております。
    もし同様の障害事象を経験された方が居られましたら、情報をいただけないでしょうか。よろしくお願いいたします。

    2010年10月20日 2:51

回答

  • 自己レスです。

    解析を継続しましたところ、エラー発生時事象としてWMI Performance Adapterサービスの停止と共にsvchost.exeのハンドル数が増加している事がわかりました。 そのsvchost.exe(PID 800)が何を実施しているのか調査したところ以下のサービスを実行していることがわかります。(tasklist.exe /fi "imagename eq svchost.exe" /svc での出力)

    イメージ名               PID  サービス                                   
    ============ === =================================
    svchost.exe           800   AeLookupSvc, AudioSrv, BITS, Browser,      
                                         CryptSvc, dmserver, EventSystem, helpsvc,  
                                         lanmanserver, lanmanworkstation, Netman,   
                                         Nla, Schedule, seclogon, SENS,             
                                         ShellHWDetection, TrkWks, winmgmt,         
                                         wuauserv, WZCSVC                           

    そしてマイクロソフトのサイトから類似障害の有無を検索したところ、以下の問題が該当するのではないかと予想。

    Handle leaks may occur in the Application Experience Lookup Service on a computer that is running Windows Server 2003 with Service Pack 1
    http://support.microsoft.com/kb/922757

    現在、この修正モジュールの適用で問題が修復できることを期待しています。

    • 回答としてマーク kuri555 2010年12月16日 9:31
    2010年12月16日 9:30