为了账号安全,请及时绑定邮箱和手机立即绑定

从 DeviceNotifyEventArgs 获取 usb 字母

从 DeviceNotifyEventArgs 获取 usb 字母

C#
拉莫斯之舞 2022-11-21 21:37:08

我找不到如何提取插入的 USB 盘符。

我有监听插入的 usb 的事件,但我需要插入的字母,因为我有多个 usb 端口。

void OnDeviceNotifyEvent(object sender, DeviceNotifyEventArgs e){
  MessageBox.Show(e.ToString());
}

印刷:

[DeviceType:DeviceInterface] [EventType:DeviceArrival] FullName:USB#VID_2CE3&PID_6487#0000000000000000#{a5dcbf10-6530-11d2-901f-00c04fb951ed} Vid:0x2CE3 Pid:0x6487 SerialNumber:0000000000000000 ClassGuid:a5dcbf10-6530-11d2-901f-00c04fb951ed

我正在使用LibUsbDotNet.DeviceNotify dll

例如:E:\插入


查看完整描述

1 回答

?
白猪掌柜的

TA贡献1599条经验 获得超1个赞

由于DeviceNotifyEventArgs包含序列号,您可以在 WMI 的帮助下使用它来查找设备号。

这是这个答案的改编版本:

// enumerate usb drives

foreach (var drive in new ManagementObjectSearcher("select * from Win32_DiskDrive where InterfaceType='USB'").Get())

    // find driver with known serial number

    if ((string)drive.Properties["SerialNumber"].Value == serialNumber)

        // associate partitions with drive

        foreach (var partition in new ManagementObjectSearcher("ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" + drive["DeviceID"] + "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition").Get())

            // associate logical disk with partition

            foreach (var disk in new ManagementObjectSearcher("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" + partition["DeviceID"] + "'} WHERE AssocClass = Win32_LogicalDiskToPartition").Get())

                Console.WriteLine("Disk=" + disk["Name"]);

确保将所有内容包装到:需要处理using返回的所有搜索器和集合。Get()


查看完整回答
反对 回复 2022-11-21
  • 1 回答
  • 0 关注
  • 6 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信