WMI のメタデータ
値の意味の文字列はどっかから取れないのかなぁ。コピペして Ctrl+H で VS の正規表現の練習大会になってしまいました。疲れた。
Qualifier 経由でとれたはず.この辺はメタデータリッチな Common Information Model (CIM) ならでは.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Management; static class Program { static void Main(string[] args) { // ms_409 子ネームスペースを付けたときの振る舞いについては以下参照 // http://www.microsoft.com/japan/technet/prodtechnol/windows2000serv/maintain/featusability/wmigloba.mspx // http://msdn2.microsoft.com/en-us/library/aa392748.aspx var mgmtScope = new ManagementScope(@"root\cimv2"); var mgmtPath = new ManagementPath("Win32_CacheMemory"); var mgmtClass = new ManagementClass(mgmtScope, mgmtPath, null); mgmtClass.Options.UseAmendedQualifiers = true; foreach (PropertyData prop in mgmtClass.Properties) { Console.WriteLine("{0} {1}", prop.Type, prop.Name); foreach (QualifierData qualifier in prop.Qualifiers) { string valuestr = qualifier.Value.GetType().IsArray ? string.Join(", ", (from object o in qualifier.Value as Array select o.ToString()).ToArray()) : qualifier.Value.ToString(); Console.WriteLine(" {0}: {1}", qualifier.Name, valuestr); } Console.WriteLine(); } } }
以下の 2 つを適当に解釈してあげれば,値とその意味を埋め込まなくて済むかと.
- Values
- ValueMap (省略されている場合がある)
このように,Qualifier を取るまでは簡単なのですが,その意味解釈は結局自分でコードを書かないといけません.コードジェネレータ系も結構大変と.
意味を確認するだけなら CIM Studio を使うのが簡単です.