Thursday, January 1, 2015

WMI USB Play and Play Device Add, Remove and Modify Event Watcher


        private ManagementEventWatcher watcherAttach;
        private ManagementEventWatcher watcherRemove;
        private ManagementEventWatcher watcherMod;

            watcherAttach = new ManagementEventWatcher();

              //object sender, EventArrivedEventArgs e
            watcherAttach.EventArrived += (s,e) =>
                {
                    var propData = e.NewEvent.Properties["TargetInstance"];
                    var mbObj = propData.Value as ManagementBaseObject;
                    if (mbObj.Properties["DeviceID"].Value.ToString().Contains(@"HID\VID_053A&PID_0B01"))
                    {

                     // Instance Id can be passed into various API  instId = queryObj.GetPropertyValue("PNPDeviceID").ToString();
                        Debug.WriteLine("Preh device added");
                    }
                };
            watcherAttach.Query = new WqlEventQuery("SELECT * FROM __InstanceCreationEvent " +
               "WITHIN 2 "+
              "WHERE TargetInstance ISA 'Win32_PnPEntity'");
            watcherAttach.Start();


            watcherRemove.Query =  new WqlEventQuery("SELECT * FROM __InstanceModificationEvent " +
               "WITHIN 2 " +
              "WHERE TargetInstance ISA 'Win32_PnPEntity'");

            watcherMod.Query =  new WqlEventQuery("SELECT * FROM __InstanceDeletionEvent " +
               "WITHIN 2 " +
              "WHERE TargetInstance ISA 'Win32_PnPEntity'");


            watcherAttach.Stop();
            watcherRemove.Stop();
            watcherAttach.Dispose();
            watcherRemove.Dispose();

No comments: