private DeviceInterface FindDevice()
 {
     Guid hidGuid = DeviceInformationSet.GetHidGuid();
     using (var deviceInformationSet = new DeviceInformationSet(hidGuid, DiGetClassFlags.Present | DiGetClassFlags.DeviceInterface))
     {
         DeviceInterface deviceInterface = deviceInformationSet.GetDeviceInterfaces(hidGuid)
             .Where(d => d.IsValidUsbDevice)
             .FirstOrDefault(dis => dis.Details.DevicePath.Contains(VendorId) && dis.Details.DevicePath.Contains(ProductId));
         if (deviceInterface == null)
         {
             _log.Debug("device not found");
         }
         else
         {
             _log.Debug("device found: " + deviceInterface.Details.DevicePath);
         }
         return deviceInterface;
     }
 }
Пример #2
0
        private bool TryOpen(int blockSize)
        {
            Dispose();

            DeviceInterface deviceInterface;
            Guid hidGuid = DeviceInformationSet.GetHidGuid();
            using (var deviceInformationSet = new DeviceInformationSet(hidGuid, DiGetClassFlags.Present | DiGetClassFlags.DeviceInterface))
            {
                deviceInterface = deviceInformationSet.GetDeviceInterfaces(hidGuid)
                    .Where(d => d.IsValidUsbDevice)
                    .FirstOrDefault(dis => (dis.Details.DevicePath.Contains("16c0") && dis.Details.DevicePath.Contains("0478"))
                        || (dis.Details.DevicePath.Contains("03eb") && dis.Details.DevicePath.Contains("2067")));
                if (deviceInterface != null)
                {
                    _handle = deviceInterface.OpenFile(blockSize + 3);
                    return true;
                }

                return false;
            }
        }