WINUI USB设备监控

发布时间 2023-07-04 10:46:15作者: 盛沧海

C#

 

    // 创建设备选择器
    var select = DeviceClass.PortableStorageDevice;
    // 获取所有已连接的USB设备
    var devices = await DeviceInformation.FindAllAsync(select);

    // 创建设备监视器      USB\VID_090C&PID_1000,这条数据为U盘,用UsbDevice.GetDeviceSelector不能生成正常的Selector,
    // FindAllAsync查找时也不能找到相应设备,导致后续的watcher不能工作
    ushort vendorId = 0x045E;// 0x090C;//; // Microsoft VendorId
    ushort productId = 0x0661; //0x1000;//; // Hololens 2 ProductId
    var selector = UsbDevice.GetDeviceSelector(vendorId, productId);
    //var fs = await DeviceInformation.FindAllAsync(selector);
    DeviceWatcher deviceWatcher = DeviceInformation.CreateWatcher(selector);
    // 添加事件处理程序
    deviceWatcher.Added += DeviceAdded;
    deviceWatcher.Removed += DeviceRemoved;
    // 启动设备监视器
    deviceWatcher.Start();

    //下述为监控存储设备——可用
    //var dw = DeviceInformation.CreateWatcher(DeviceClass.PortableStorageDevice);
    //dw.Added += DeviceAdded;
    //dw.Removed += DeviceRemoved;
    //dw.Start();

 

   public event EventHandler<bool> DeviceUSBConnected;//检测到设备连接时触发
   public event EventHandler<bool> DeviceUSBRemoved;//设备拔出时触发
   private async void DeviceAdded(DeviceWatcher sender, DeviceInformation deviceInfo)
   {
       // 获取插入USB设备的信息
       string deviceId = deviceInfo.Id;
       string deviceName = deviceInfo.Name;
   }

   private async void DeviceRemoved(DeviceWatcher sender, DeviceInformationUpdate deviceInfo)
   {
       // 获取拔出USB设备的信息
       string deviceId = deviceInfo.Id;

   }

 

关于设备VID PID则通过设备管理器进行相应的查看: