Exemple #1
0
        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);
        }