Определите номер COM-порта по заданному PnpDeviceID: всегда ли DeviceID устройства COM-порта является COMx?

Мне нужно определить COM-порт Plug-And-Play-устройства. У меня есть PnPDeviceID. Это USB-адаптер Bluetooth.

Итак, я получаю информацию об устройстве с помощью WMI, как в первом примере на этом сайте. Результат WMI-запроса содержит свойство DeviceID, которое представляет собой строку. Значение в моем случае "COM3".

Я получаю то же значение, когда я это делаю (вместо использования WMI)

string[] names = System.IO.Ports.SerialPort.GetPortNames();

Теперь мне интересно, всегда ли DeviceId COM-устройств имеет формат «COMx»? На самом деле мне нужно свойство под названием «Порт» с целым числом в качестве значения.

Есть и другой подход, пройтись по реестру, но не знаю, предлагается ли такой.


person OneWorld    schedule 25.01.2013    source источник
comment
Это деталь реализации драйвера. Они могут назвать его как угодно, но, конечно, обычно они называют его COMx. Число не имеет значения, поэтому лучше позволить пользователю выбирать из списка.   -  person Hans Passant    schedule 25.01.2013
comment
Может быть полезно msdn.microsoft.com/en-us /библиотека/aa394413%28VS.85%29.aspx   -  person Soner Gönül    schedule 25.01.2013
comment
@SonerGönül Я в значительной степени получаю эту информацию через WMI. Но нет int Port   -  person OneWorld    schedule 25.01.2013


Ответы (1)


См. комментарий Ганса Пассанта. Их обычно называют COMx. И вы должны позволить пользователю выбирать.

Для меня важнее: в большинстве случаев нет необходимости получать номер COM-порта в виде целого числа, поскольку имя Com-порта (строка) широко используется в качестве идентификатора, например. с System.io... Они берут строку "COM3" или конкретное имя драйвера.

person OneWorld    schedule 28.01.2013