The following will listen for USB plug-in/turn-on un-plug/turn-off at a scan rate of 2seconds intervals
//turn on USB device event
WqlEventQuery q_creation = new WqlEventQuery();
q_creation.EventClassName = "__InstanceCreationEvent";
q_creation.WithinInterval = new TimeSpan(0, 0, 2);
q_creation.Condition = @"TargetInstance ISA 'Win32_USBControllerdevice'";
mwe_creation = new ManagementEventWatcher(q_creation);
mwe_creation.EventArrived += new EventArrivedEventHandler(USBEventArrived_Creation);
mwe_creation.Start();
//turn off USB device event
WqlEventQuery q_deletion = new WqlEventQuery();
q_deletion.EventClassName = "__InstanceDeletionEvent";
q_deletion.WithinInterval = new TimeSpan(0, 0, 2);
q_deletion.Condition = @"TargetInstance ISA 'Win32_USBControllerdevice' ";
mwe_deletion = new ManagementEventWatcher(q_deletion);
mwe_deletion.EventArrived += new EventArrivedEventHandler(USBEventArrived_Deletion);
mwe_deletion.Start();
private void USBEventArrived_Creation(object sender, EventArrivedEventArgs e)
{
}
private void USBEventArrived_Deletion(object sender, EventArrivedEventArgs e)
{
}