понедельник, 12 октября 2009 г.

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

Это перевод Why does Windows not recognize my USB device as the same device if I plug it into a different port? Автор: Реймонд Чен.

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

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

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

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

Но почему Windows считает устройство за другое, если на нём нет серийного номера и вы воткнули его в другой порт? Почему бы просто не сказать: "Ой, вот ты где: просто на другом порту"?

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

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

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.