繁体   English   中英

触发新插入的USB-HDD或USB-Stick设备

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM