# HG changeset patch # User Ivo Smits # Date 1380741428 -7200 # Node ID df5534af12e9c3503b79de09a16330cf513295f8 # Parent d4778c3232ada787e6f6aae3ff03de3e51263187 Small improvements in USB device identification extraction diff -r d4778c3232ad -r df5534af12e9 USBLib/Communication/WindowsUsbDeviceRegistry.cs --- a/USBLib/Communication/WindowsUsbDeviceRegistry.cs Tue Oct 01 00:24:39 2013 +0200 +++ b/USBLib/Communication/WindowsUsbDeviceRegistry.cs Wed Oct 02 21:17:08 2013 +0200 @@ -18,18 +18,20 @@ hwid = hwids[0]; } vendorID = productID = revision = interfaceID = -1; - foreach (String token in hwid.Split(new Char[] { '\\', '#', '&' }, StringSplitOptions.None)) { + String[] tokens = hwid.Split(new Char[] { '\\', '#', '&' }, StringSplitOptions.None); + Boolean isUSB = tokens.Length > 0 && tokens[0] == "USB"; + foreach (String token in tokens) { if (token.StartsWith("VID_", StringComparison.InvariantCultureIgnoreCase)) { - if (!Int32.TryParse(token.Substring(4), NumberStyles.HexNumber, null, out vendorID)) vendorID = -1; + if (vendorID == -1) if (!Int32.TryParse(token.Substring(4), NumberStyles.HexNumber, null, out vendorID)) vendorID = -1; } else if (token.StartsWith("PID_", StringComparison.InvariantCultureIgnoreCase)) { - if (!Int32.TryParse(token.Substring(4), NumberStyles.HexNumber, null, out productID)) productID = -1; + if (productID == -1) if (!Int32.TryParse(token.Substring(4), NumberStyles.HexNumber, null, out productID)) productID = -1; } else if (token.StartsWith("REV_", StringComparison.InvariantCultureIgnoreCase)) { - if (!Int32.TryParse(token.Substring(4), NumberStyles.Integer, null, out revision)) revision = -1; + if (revision == -1) if (!Int32.TryParse(token.Substring(4), NumberStyles.Integer, null, out revision)) revision = -1; } else if (token.StartsWith("MI_", StringComparison.InvariantCultureIgnoreCase)) { - if (!Int32.TryParse(token.Substring(3), NumberStyles.HexNumber, null, out interfaceID)) interfaceID = -1; + if (interfaceID == -1) if (!Int32.TryParse(token.Substring(3), NumberStyles.HexNumber, null, out interfaceID)) interfaceID = -1; } } - return vendorID != -1 && productID != -1; + return isUSB && vendorID != -1 && productID != -1; } // Parsed out of the device ID