プロが教えるわが家の防犯対策術!

判りにくい質問で悪いのですが、
Windowsのパフォーマンスカウンタの
インスタンス名には何か決まった変換規則があるのでしょうか?
(/ や # などが _ に一律変換されるなど)

XPではコントロールパネルの管理ツール→パフォーマンスで
現在のパフォーマンスのグラフが表示されます。
そのグラフ上を右クリックしてカウンタの追加を選ぶと
カウンタを追加するウィンドウが表示されます。

このウィンドウにおいて、
パフォーマンスオブジェクトとしてNetwork Interfaceを指定すると
インスタンスとしてアダプタを
表示されているアダプタの一覧から指定することになります。
この名前がipconfigや
Platform SDKのGetAdaptersAddresses()関数でDescriptionとして
返されるアダプタ名とは微妙に違うことがあり、
/ や # が名前に入っているものはそれらが_となっていました。

このことについて質問した理由は、
PDH(Performance Data Helper)を利用して
C++によるプログラムの中で
各ネット回線のパフォーマンスを取得したいのですが、
各アダプタ名は文字列で指定される必要があり
このアダプタ名が正確に一致しないと
パフォーマンス情報を取得できないようであるからです。
実際にプログラムを書いたところ、
/ や # のままでは取得できませんでした。
そして直接 _ に変えた文字列を指定すると取得できました。

以下は一致していなかった文字列です。
・ipconfigやGetAdaptersAddresses()関数で取得されるアダプタ名
I-O DATA WN-AG/CB Wireless LAN Adapter #2 - パケット スケジューラ ミニポート
・インスタンスとして指定すべきアダプタ名
I-O DATA WN-AG_CB Wireless LAN Adapter _2 - パケット スケジューラ ミニポート

非常に判りにくいでしょうがよろしくお願いします。

A 回答 (1件)

Pdh.dll は使ったこと無いので自信ナシですが、以下のヘルプを見た範囲内では



 Specifying a Counter Path
  http://windowssdk.msdn.microsoft.com/en-us/libra …

 PdhParseInstanceName()
  http://windowssdk.msdn.microsoft.com/en-us/libra …

'\'、'('、')'、'/'、'#'、'*' の6文字が予約文字となっているようです。
が、インスタンス名がこれらの文字を含む場合に「_」を使えとは書いてないですね。

あんまり役に立たない情報かも、スミマセン。
    • good
    • 0
この回答へのお礼

z64423様、情報ありがとうございます。
判りにくい説明ですみませんでした・・・

1つ目のリンク先に仰られる通り予約語についての情報はありましたが
_については触れられていませんでしたね・・・
しかし使っていい文字でないことは確かなので、
とりあえず元のアダプタ名から上記6文字を検索して
_に置換するようにしてみます。
実験しようにもアダプタ名を変える方法が判らないので
正しく動作するかどうかは調べられませんが・・・

お礼日時:2006/08/28 04:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!