连接或断开新USB音频设备时,是否在C#app中接收通知?

连接或断开新USB音频设备时,是否在C#app中接收通知?,c#,winapi,audio,notifications,usb,C#,Winapi,Audio,Notifications,Usb,我有一个运行在Windows8.1或更高版本上的C#WindowsForms应用程序,可以进行语音识别。当新的USB音频输入设备连接到系统时,我希望收到通知。我希望Windows API中有一个通知服务,可以告诉我音频设备何时连接到系统或何时断开与系统的连接 是否有此类通知可用,或者我是否经常重新扫描可用的音频输入设备,并在检测到更改时创建自己的通知?很明显,我不想重新发明方向盘。以下内容将以2秒的扫描频率侦听USB插件/打开/取消插件/关闭 //turn on USB devi

我有一个运行在Windows8.1或更高版本上的C#WindowsForms应用程序,可以进行语音识别。当新的USB音频输入设备连接到系统时,我希望收到通知。我希望Windows API中有一个通知服务,可以告诉我音频设备何时连接到系统或何时断开与系统的连接


是否有此类通知可用,或者我是否经常重新扫描可用的音频输入设备,并在检测到更改时创建自己的通知?很明显,我不想重新发明方向盘。

以下内容将以2秒的扫描频率侦听USB插件/打开/取消插件/关闭

        //turn on USB device event
        WqlEventQuery q_creation = new WqlEventQuery();
        q_creation.EventClassName = "__InstanceCreationEvent";
        q_creation.WithinInterval = new TimeSpan(0, 0, 2);
        q_creation.Condition = @"TargetInstance ISA 'Win32_USBControllerdevice'";
        mwe_creation = new ManagementEventWatcher(q_creation);
        mwe_creation.EventArrived += new EventArrivedEventHandler(USBEventArrived_Creation);
        mwe_creation.Start();

        //turn off USB device event
        WqlEventQuery q_deletion = new WqlEventQuery();
        q_deletion.EventClassName = "__InstanceDeletionEvent";
        q_deletion.WithinInterval = new TimeSpan(0, 0, 2);
        q_deletion.Condition = @"TargetInstance ISA 'Win32_USBControllerdevice'  ";
        mwe_deletion = new ManagementEventWatcher(q_deletion);
        mwe_deletion.EventArrived += new EventArrivedEventHandler(USBEventArrived_Deletion);
        mwe_deletion.Start();    

        private void USBEventArrived_Creation(object sender, EventArrivedEventArgs e)
        {
        }

        private void USBEventArrived_Deletion(object sender, EventArrivedEventArgs e)
        {
        }
. 示例代码:。演示如何侦听USB设备的插入或删除。然后你需要扫描看看它是否是USB音频设备。