private void FileSystemWatcherOnCreated(object sender, FileSystemEventArgs fileSystemEventArgs) { _logger.Debug($"Detected new audio source folder `{fileSystemEventArgs.FullPath}"); foreach (var directoryCatalog in _directoryCatalogs) { directoryCatalog.Refresh(); } AudioSources = _container.GetExportedValues <IAudioSource>(); AudioSourcesChanged?.Invoke(this, EventArgs.Empty); }
bool IWndMessageProcessor.ProcessMessage(Message m) { bool result = false; switch ((uint)m.Msg) { case WM.DEVICECHANGE: { uint eventCode = (uint)m.WParam; if (eventCode == DBT.DEVICEARRIVAL || eventCode == DBT.DEVICEREMOVECOMPLETE) { if (UsbDeviceManager.TryPtrToDeviceInfo(m.LParam, out UsbDeviceInfo di)) { // получили информацию о подключенном устройстве в виде: // \\?\USB#VID_0A89&PID_000C#6&2c24ce2e&0&4#{a5dcbf10-6530-11d2-901f-00c04fb951ed} bool deviceArraval = (eventCode == DBT.DEVICEARRIVAL); if (di.ClassGuid == UsbCategory.Audio || di.ClassGuid == UsbCategory.AudioDevice) { // update audio sources... logger.Debug("Audio USB " + (deviceArraval ? "arrival: " : "moved: ") + di.FriendlyName + " {" + di.Name + "}"); VideoSourcesChanged?.Invoke(di.Name); } else if (di.ClassGuid == UsbCategory.VideoCamera || di.ClassGuid == UsbCategory.Video) { // update video sources... logger.Debug("Video USB " + (deviceArraval ? "arrival: " : "moved: ") + di.FriendlyName + " {" + di.Name + "}"); AudioSourcesChanged?.Invoke(di.Name); } else { } result = true; } else { //TODO: //... } } //logger.Debug("WM_DEVICECHANGE"); break; } } return(result); }