2014-09-16 10 views
3

je jouer à propos WqlEventQuery en vue d'identifier un appareil branché USBdétecter les périphériques USB connectés à l'aide WqlEventQuery et retrive leurs informations descriptives

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

alors j'ai essayé de rechercher des biens de l'appareil dans le gestionnaire d'événements veilleur

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 
      } 
     } 
    } 

mais je n'ai pas trouvé d'endroit où je pourrais extraire des informations sur le périphérique branché. Donc, quand je branche un téléphone sur le port USB. Je veux extraire l'information qui indique que c'est un téléphone d'un modèle particulier du producteur particulier et ainsi de suite. Est-ce que je vais dans le bon sens pour obtenir cette information? devrais-je essayer quelque chose de différent ou de plus efficace à cet égard?

Merci!

Répondre

2

Essayez de regarder Win32_PnPEntity. Je crois que le Win32_USBControllerdevice est un élément "meta level".

Questions connexes