Я работаю над проектом, в котором я должен быть в состоянии определить, когда CD или USB-накопитель вставлен или удален. Я нашел некоторый исходный код, который должен был сделать именно это, однако, кажется, ничего не происходит, когда я вставляю или извлекаю компакт-диск.
Может ли кто-нибудь проверить, правильно ли указан источник, и указать, что я мог сделать здесь неправильно?
public class MyWindow
{
ManagementEventWatcher w;
private void MyWindow_Loaded(object sender, RoutedEventArgs e)
{
WqlEventQuery query = new WqlEventQuery("__InstanceCreationEvent", new TimeSpan(0, 0, 1), @"TargetInstance ISA 'Win32_LogicalDisk' and TargetInstance.DriveType = 2");
ConnectionOptions opt = new ConnectionOptions();
opt.EnablePrivileges = true;
ManagementScope ms = new ManagementScope("root\\CIMV2", opt);
w = new ManagementEventWatcher(ms, query);
w.EventArrived += new EventArrivedEventHandler(w_EventArrived);
w.Start();
}
private void w_EventArrived(object sender, EventArrivedEventArgs e)
{
PropertyData pd = e.NewEvent.Properties["TargetInstance"];
}
}
Когда я устанавливаю точку останова в строке «PropertyData pd = ...», она никогда не срабатывает при извлечении / вставке компакт-диска. Так как я совсем не ошибся, и все примеры, которые я видел в Интернете, просто приводят этот же исходный код (с небольшими изменениями)