2009-05-29 1 views
2

パフォーマンスモニタリングAPIを使用してVistaで奇妙な問題が発生しています。私は現在、PdhGetFormattedCounterValue()をベースにXP/2kでうまく動作するコードを使用しています。私はカウンターを展開するPdhExpandWildCardPathを使用して起動する(私はネットワーク全体の統計情報に興味がある)、私が探していますカウンターは以下のとおりです。Vistaのパフォーマンスカウンタの問題

 
\\Network Interface(*)\\Bytes Received/sec 
\\Network Interface(*)\\Bytes Sent/sec 
\\Processor(_Total)\\% Processor Time 

問題は彼らの最初の呼び出しで、彼らはPDH_INVALID_DATAを返すということですが、私はドンこれが問題だと思っています。なぜなら私は再びそれを照会すると、エラーなしでデータを取得し始めるからです。これは問題です。プロセッサ時間はまさに予想どおりに機能しますが、ネットワークインターフェイスカウンタは何も返さず、常に0になっています。私はPerfmonを使用して通常のデータを報告していることを確認したので、何が問題になるのか迷っています。私はMSでこれをキャッチ:

http://support.microsoft.com/?scid=kb%3Ben-us%3B287159&x=11&y=9

しかし、私は私の仕事のための多言語に興味を持っていないので、私はこれが関連しているとは思いません。私が何をやっているのかを正確に示す基本的なコードを思いつくことができるかどうかは分かりますが、何も変わったことはありません。XP/2kでもうまくいきました。ありがとう!

答えて

1

ネットワークインターフェイスが両方ともワイルドカードであるのに対し、プロセッサー1は実際にはパフォーマンス監視によってロールアップされていたということが判明しました。私が気付かなかったのは、PdhExpandWildCardPathがPdhAddCounterによって直接使用可能なものを返さなかったということでした。これは、ExpandWildCardが3つの拡張されたマッチを返す場合、それらがヌルで区切られた文字列として戻って来ることを意味します - 私はこれを理解しましたが、AddCounterが効果的に3つすべてを含むカウンタを作成すると仮定しました。いいえ、現実には、各パスを分割して個別にAddCounterから要求し、結果を手動で取得する必要があります。

これは、他の人が私があまり欲求不満で行ったのと同じミスを避けるのに役立ちます。 ;)

関連する問題