[英]Trigger new plugged USB-HDD or USB-Stick device
我想从新插入的USB介质(例如,硬盘,USBSticks,CD卡等)获取驱动器信函。
请注意:我只希望插入新电源。 不是现有的。
例如:用户插入USB棒。 该方法应返回:“ F:”
例如Example2:用户插入具有两个分区的外部HDD。 该方法应返回:“ G:”和“ H:”
我有以下代码:但是它只是触发插入。 不是驱动器字母。
public void TrigerUSBInsert()
{
try
{
WqlEventQuery w = new WqlEventQuery
{
EventClassName = "__InstanceCreationEvent",
Condition = "TargetInstance ISA 'Win32_USBControllerDevice'",
WithinInterval = new TimeSpan(0, 0, 2)
};
ManagementEventWatcher watch = new ManagementEventWatcher(w);
watch.EventArrived += new EventArrivedEventHandler(this.usbDetectionHandler);
watch.Start();
}
catch (Exception exception)
{
}
}
谢谢。
尝试使用Win32_LogicalDisk而不是Win32_USBControllerDevice。
这将在创建Win32_LogicalDisk后立即触发,这会在您插入USB驱动器时发生。 当您安装任何其他磁盘驱动器(例如S-ATA HDD)时,也会发生这种情况,但是大多数时间在运行时都不会安装(当然,是热插拔系统)。
编辑:
哦,我忘记了:您需要通过以下方式获取ManagementObject:
ManagementBaseObject o = (ManagementBaseObject) args.NewEvent.Properties["TargetInstance"].Value;
这样,您可以遍历其属性:
foreach (PropertyData pd in o.Properties)
{
Console.WriteLine("{0}: \t {1}", pd.Name, pd.Value);
}
它的属性之一是驱动器号。
(有关其属性和可用Win32_类的列表,请参见此处: http : //msdn.microsoft.com/zh-cn/library/aa394173( v=vs.85) .aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.