WINUI USB设备监控

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

 

下述代码中的DeviceUSBConnected添加到Added事件中,Removed添加到Removed事件中,然后在需要的地方进行相应的订阅即可;当然还可以进行其他的修改。

   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则通过设备管理器进行相应的查看:

 

posted @ 2023-07-04 10:41  盛沧海  阅读(72)  评论(0编辑  收藏  举报