/// <summary>
        /// Specifies the list of adapters connected to a Host.
        /// </summary>
        /// <returns>Adapaters list.</returns>
        public static List <CanAdapterItem> GetAdapters()
        {
            USBDeviceInfo[]       dies     = USBDevice.GetDevices("{AA40624D-0F4B-4F4F-8E23-BA4209EE3AF2}");
            List <CanAdapterItem> adapters = new List <CanAdapterItem>();

            foreach (USBDeviceInfo info in dies)
            {
                var adapter = new CanAdapterItem();
                adapter.DevicePath = info.DevicePath;

                adapter.SerialNumber      = info.DevicePath.ToUpper().Split('#')[2];
                adapter.DeviceDescription = info.DeviceDescription;
                try
                {
                    Mutex mut = Mutex.OpenExisting(adapter.DeviceDescription + " " + adapter.SerialNumber);
                    adapter.InUse = true;
                    mut.Close();
                    mut = null;
                }
                catch (WaitHandleCannotBeOpenedException)
                {
                    adapter.InUse = false;
                }
                adapters.Add(adapter);
            }

            return(adapters);
        }
        /// <summary>
        /// Connecting to a specific adapter.
        /// </summary>
        /// <param name="adapter">The adapter.</param>
        /// <exception cref="Konvolucio.MCAN120803.MCanAdatpterException->Already Connected.">Thrown when...</exception>
        /// <exception cref="Konvolucio.MCAN120803.MCanAdatpterException->Adapter already in use.">Thrown when...</exception>
        public void ConnectTo(CanAdapterItem adapter)
        {
            if (_isConnected)
            {
                throw new CanAdapterException("Already Connected. Code:-8600."); //Doc.
            }
            bool createdNewMutex = false;

            _mutex = new Mutex(false, adapter.DeviceDescription + " " + adapter.SerialNumber, out createdNewMutex);

            if (!createdNewMutex)
            {
                //ha nem hozott létre új mutexet, akkor már valaki létrehozta és használja
                _mutex.Close();
                _mutex = null;
                throw new CanAdapterException("Adapter already in use. Code:-8601.");//Doc.
            }

            Usb      = new USBDevice(adapter.DevicePath);
            FrameCnt = 0;

            _isConnected    = false;
            _isOpen         = false;
            RxCanMsgAbsTime = 0;

            Usb.ControlPipeTimeout = 1000;

            UsbAttrInEpSzie  = Usb.Pipes[USB_ATTR_IN_ADDR].MaximumPacketSize;
            UsbAttrOutEpSize = Usb.Pipes[USB_ATTR_OUT_ADDR].MaximumPacketSize;
            UsbMsgInEpSize   = Usb.Pipes[USB_MSG_IN_ADDR].MaximumPacketSize;
            UsbMsgOutEpSize  = Usb.Pipes[USB_MSG_OUT_ADDR].MaximumPacketSize;

            Usb.Pipes[USB_MSG_OUT_ADDR].Policy.PipeTransferTimeout = 7000;
            Usb.Pipes[USB_ATTR_IN_ADDR].Policy.AutoClearStall      = true;
            if (Usb != null)
            {
                _isConnected = true;
            }
        }