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则通过设备管理器进行相应的查看:
*****有道无术,术尚可求;有术无道,止于术。*****