public bool OpenDevice()
 {
     if (this.CheckIfPresentAndGetUSBDevicePath())
     {
         this.WriteHandleToUSBDevice = USBM.CreateFile(this.DevicePath, 1073741824U, 3U, IntPtr.Zero, 3U, 0U, IntPtr.Zero);
         uint lastWin32Error1 = (uint)Marshal.GetLastWin32Error();
         this.ReadHandleToUSBDevice = USBM.CreateFile(this.DevicePath, 2147483648U, 3U, IntPtr.Zero, 3U, 0U, IntPtr.Zero);
         uint lastWin32Error2 = (uint)Marshal.GetLastWin32Error();
         if (lastWin32Error1 == 0U && lastWin32Error2 == 0U)
         {
             this.AttachedState = true;
         }
         else
         {
             this.AttachedState = false;
             if (lastWin32Error1 == 0U)
             {
                 this.WriteHandleToUSBDevice.Close();
             }
             if (lastWin32Error2 == 0U)
             {
                 this.ReadHandleToUSBDevice.Close();
             }
         }
     }
     else
     {
         this.AttachedState = false;
     }
     this.InfoDevice = this.GetInfoForDevice();
     return(this.AttachedState);
 }
        internal USBM.MyDeviceInfo GetInfoForDevice()
        {
            byte[] lpBuffer = new byte[65];
            byte[] INBuffer = new byte[65];
            uint   lpNumberOfBytesWritten = 0;
            uint   lpNumberOfBytesRead    = 0;
            uint   num1 = 0;
            uint   num2 = 0;
            uint   num3 = 0;
            uint   num4 = 0;
            uint   num5 = 0;

            USBM.MyDeviceInfo myDeviceInfo = new USBM.MyDeviceInfo();
            try
            {
                if (this.AttachedState)
                {
                    lpBuffer[0] = (byte)0;
                    lpBuffer[1] = byte.MaxValue;
                    lpBuffer[2] = (byte)55;
                    for (uint index = 3; index < 65U; ++index)
                    {
                        lpBuffer[index] = byte.MaxValue;
                    }
                    if (USBM.WriteFile(this.WriteHandleToUSBDevice, lpBuffer, 65U, ref lpNumberOfBytesWritten, IntPtr.Zero))
                    {
                        INBuffer[0] = (byte)0;
                        if (this.ReadFileManagedBuffer(this.ReadHandleToUSBDevice, INBuffer, 65U, ref lpNumberOfBytesRead, IntPtr.Zero))
                        {
                            num1 = ((uint)INBuffer[9] << 8) + (uint)INBuffer[8];
                            num2 = ((uint)INBuffer[9] << 8) + (uint)INBuffer[8];
                            num3 = ((uint)INBuffer[17] << 8) + (uint)INBuffer[16];
                            num4 = ((uint)INBuffer[19] << 8) + (uint)INBuffer[18];
                            num5 = ((uint)INBuffer[21] << 8) + (uint)INBuffer[20];
                        }
                    }
                    myDeviceInfo.CalibValue  = (double)num1 / 10000.0;
                    myDeviceInfo.CalibValue1 = 1.0 + ((double)num2 - 30000.0) * 1E-05;
                    myDeviceInfo.CalibValue2 = 1.0 + ((double)num3 - 30000.0) * 1E-05;
                    myDeviceInfo.CalibValue3 = 1.0 + ((double)num4 - 30000.0) * 1E-05;
                    myDeviceInfo.CalibValue4 = 1.0 + ((double)num5 - 30000.0) * 1E-05;
                    myDeviceInfo.Subtype     = (int)INBuffer[7];
                    myDeviceInfo.UnitVersion = (int)INBuffer[6];
                }
            }
            catch (Exception ex)
            {
            }
            return(myDeviceInfo);
        }