3

USBに接続されたデバイスを識別するために、WqlEventQueryについていじってみました

var query = new WqlEventQuery();
query.EventClassName = "__InstanceOperationEvent";
query.WithinInterval = new TimeSpan(0, 0, 2);
query.Condition = @"TargetInstance ISA 'Win32_USBControllerdevice'";

using (var watcher = new ManagementEventWatcher(query))
{
   watcher.EventArrived += WatcherEvent;
   watcher.Start();

   ... Wait condition ...

   watcher.Stop();
}

次に、ウォッチャーイベントハンドラーでデバイスプロパティを探してみました

    foreach (var mbo in e.NewEvent.Properties.Cast<PropertyData>().Where(i => i.Value != null && i.Value is ManagementBaseObject).Select(pdData => (ManagementBaseObject)pdData.Value).Where(mbo => mbo != null))
    {
       if (mbo.ClassPath.ClassName == "Win32_USBControllerDevice")
       {
           foreach (var prop in mbo.SystemProperties)
           {
               ... look for the property content
           }
       }
    }

接続されたデバイスに関する情報を抽出できる場所が見つかりませんでした。そのため、USBポートを介して電話を接続しているとき。特定のメーカーなどから特定のモデルの電話であるという情報を抽出したいと考えています。

この情報を取得する目的で正しいことを行っていますか? この点で、何か別の、またはより効果的なものを試す必要がありますか?

ありがとう!

4

3 に答える 3