0

Hi i have tried the below code and it works.

using System;
using System.Management;

namespace UsbUtils
{
    class Program
    {
        public static void DeviceInsertedEvent(object sender, EventArrivedEventArgs e)
        {
            ManagementBaseObject instance = (ManagementBaseObject)e.NewEvent["TargetInstance"];
            foreach (var property in instance.Properties)
            {
                Console.WriteLine(property.Name + " = " + property.Value);
            }
            Console.WriteLine("---------------------------------------------------");
        }

        public static void DeviceRemovedEvent(object sender, EventArrivedEventArgs e)
        {
            ManagementBaseObject instance = (ManagementBaseObject)e.NewEvent["TargetInstance"];
            foreach (var property in instance.Properties)
            {
                Console.WriteLine(property.Name + " = " + property.Value);
            }
            Console.WriteLine("---------------------------------------------------");
        }

        public static void Main()
        {
            WqlEventQuery insertQuery = new WqlEventQuery("SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_DiskDrive'");

            ManagementEventWatcher insertWatcher = new ManagementEventWatcher(insertQuery);
            insertWatcher.EventArrived += new EventArrivedEventHandler(DeviceInsertedEvent);
            insertWatcher.Start();

            WqlEventQuery removeQuery = new WqlEventQuery("SELECT * FROM __InstanceDeletionEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_DiskDrive'");
            ManagementEventWatcher removeWatcher = new ManagementEventWatcher(removeQuery);
            removeWatcher.EventArrived += new EventArrivedEventHandler(DeviceRemovedEvent);
            removeWatcher.Start();

            // Do something while waiting for events
            System.Threading.Thread.Sleep(200000);
        }

    }
}

I am getting information about all of the usb devices that are inserted. But i do not want it to detect hard disks and other mass storage devices except pen drives. I wanted help with filtering out the devices and display only pendrives.

Garuda
  • 1
  • 1
  • Take a [look at the answer](https://stackoverflow.com/questions/32458339/how-do-i-detect-insertion-of-usb-devices-category-wise-in-c-sharp-winform) in this question. – jscarle May 03 '20 at 11:28
  • @jscarle i was looking for some changes in query level so that it gets filtered – Garuda May 03 '20 at 12:06

0 Answers0