Почему мой компьютер переходит в «новое USB-устройство» каждый раз, когда я подключаю его к другому порту?

47

Допустим, у меня есть мышь. Я подключаю эту мышь в слот 1 из 4 на компьютере. Он проходит через обнаруженное новое устройство и все, что хорошо. Но если я вернусь позже с той же мышью и подключу ее, скажем, к гнезду 3, он снова обнаружит! Почему это?

RCIX
источник
3
И что мы можем сделать, чтобы это исправить?
Полковник Паник

Ответы:

61

По словам Раймонда Чена :

Почему Windows не распознает мое USB-устройство как одно и то же устройство, если я подключаю его к другому порту?

Возможно, вы заметили, что если вы возьмете USB-устройство и подключите его к компьютеру, Windows распознает его и настроит. Затем, если вы отключите его и подключите его к другому USB-порту, Windows получит приступ амнезии и подумает, что это совершенно другое устройство, а не использует настройки, которые применялись, когда вы подключали его в прошлый раз. Почему это?

Люди с устройства USB объяснили, что это происходит, когда на устройстве отсутствует серийный номер USB.

Серийные номера являются дополнительными на устройствах USB. Если устройство есть, Windows распознает устройство независимо от того, к какому USB-порту вы его подключаете. Но если у него нет серийного номера, то Windows обрабатывает каждое появление на другом USB-порту, как если бы это было новое устройство.

(Я помню, что один крупный производитель USB-устройств не совсем понимал, как работают серийные номера. Они дали серийные номера всех своих устройств, это здорово, но все они получили один и тот же серийный номер. Захватывающие вещи произошли, если вы подключили два их устройства в компьютер одновременно.)

Но почему Windows рассматривает его как другое устройство, если ему не хватает серийного номера и он отображается на другом порту? Почему он не может просто сказать: «О, вот ты где, в другом порту».

Потому что это создает случайное поведение, когда вы подключаете два таких устройства. В зависимости от порядка, в котором устройства перечисляются с помощью Plug and Play, два набора настроек будут назначаться, по-видимому, случайным образом при каждой загрузке. Сегодня настройки совпадают в одном направлении, но завтра, когда устройства будут перечислены в другом порядке, настройки меняются местами. (Вы получаете аналогичное поведение, если подключаете устройства в другом порядке.)

Другими словами: вещи сосут, потому что (1) вещи уже были в плохом состоянии - это не было бы проблемой, если бы у устройства был правильный серийный номер - и (2), как только вы оказались в этом плохом состоянии, альтернатива сосет больше , USB-стек просто пытается вылечить плохую ситуацию, не ухудшая ее.

jasonh
источник
17
Одна вещь, которую я не могу понять, - это зачем переустанавливать драйверы устройств заново. Будет ли теперь поддерживать отдельные копии драйверов для одного и того же устройства на каждом порту?
Агнель Курьян
1
Я предполагаю, что это просто связывает существующие драйверы с новым обозначением порта.
Брайан Уайт
1
@BrianWhite проходит весь процесс загрузки и настройки. Вы можете посмотреть его, нажав на уведомление в панели задач
Cool Blue
1
О, я смотрел это много раз. Однако из этого диалога трудно понять, действительно ли он выбирает новые данные из Интернета или просто использует локальные файлы (но обычный текст диалога) или что-то среднее между ними.
Брайан Уайт
Можно ли вообще дать устройству USB серийный номер? Или это то, что можно сделать только на уровне производства?
TMH
2

Windows (поскольку вы не указываете свою ОС, я предполагаю, что это то, что вы используете) связывает устройство с портом, к которому оно подключено, поэтому она считала «USB-диск A в порту X» отличным от «USB-диска A в порт Y ", и он связывает драйверы и записи реестра соответственно.

Если вы используете опцию «показывать неподключенные устройства» при просмотре диспетчера устройств, вы увидите, что устройство подключено ко всем портам, к которым оно когда-либо было подключено, но серым, поскольку оно в данный момент отсутствует в них. Когда вы подключаете устройство к одному из этих портов, Windows просто активирует этот экземпляр драйвера, а когда вы подключаете его к другому порту, перед его активацией необходимо определить новый экземпляр драйвера для этого порта (это процесс, который вы видите как пользователь отображается как «добавление нового устройства».

Это позволяет подключать идентичные устройства к разным портам, работающим одновременно. Существуют и другие способы достижения этого, практически без разницы между конечным пользователем и тем, какой метод использует ОС, но именно так Windows решает это организовать.

Дэвид Спиллетт
источник
4
Близко, но не совсем. Окна распознают то же устройство через разные порты, до тех пор , как он может отслеживать , что точное устройство. Для этого устройство должно предоставить серийный номер.
Джейсон
4
Диски, как правило, имеют серийный номер на носителе и помещаются туда по формату. Из-за этого даже самые дешевые устройства с ключами-брелками являются одними из лучших на всех USB-устройствах. Мыши, клавиатуры, джойстики и другие дешевые устройства, как правило, являются худшими преступниками. Действительно раздражает последовательный адаптер USB-RS-232 без серийного номера. Он будет назначен новому имени COM-порта каждый раз, когда он случайно перемещается на новый порт. Не весело.
RBerteig