Скажімо, у мене є миша. Я підключаю цю мишу до слота 1 з 4 на комп'ютері. Він проходить через новий виявлений пристрій і все це, що добре. Але якщо я повернусь пізніше з тією ж мишкою і підключу її до слота 3, він виявить все знову! Чому це?
Скажімо, у мене є миша. Я підключаю цю мишу до слота 1 з 4 на комп'ютері. Він проходить через новий виявлений пристрій і все це, що добре. Але якщо я повернусь пізніше з тією ж мишкою і підключу її до слота 3, він виявить все знову! Чому це?
Відповіді:
За словами Реймонда Чена :
Чому Windows не розпізнає мій USB-пристрій як той самий пристрій, якщо я підключаю його до іншого порту?
Можливо, ви помітили, що якщо ви берете USB-пристрій і підключаєте його до комп'ютера, Windows розпізнає його та налаштовує. Потім, якщо ви відключите його від мережі та повторно підключите його до іншого порту USB, Windows отримає безліч амнезії і вважає, що це зовсім інший пристрій замість того, щоб використовувати налаштування, застосовані, коли ви підключали його в останній раз. Чому так?
Люди з USB-пристроїв пояснили, що це відбувається, коли в пристрої відсутній серійний номер USB.
Серійні номери не є обов'язковими для пристроїв USB. Якщо пристрій має такий, Windows розпізнає пристрій незалежно від того, до якого порту USB ви підключите його. Але якщо він не має серійного номера, то Windows розглядає кожну появу на іншому USB-порту так, ніби це новий пристрій.
(Я пам’ятаю, що один великий виробник USB-пристроїв не зовсім розумів, як працюють серійні номери. Вони дали серійні номери всіх своїх пристроїв, це чудово, але всі вони отримали однаковий серійний номер. Захоплюючі речі трапилися, якщо ви підключили два їхніх пристрої в комп'ютер одночасно.)
Але чому Windows трактує це як інший пристрій, якщо йому не вистачає серійний номер і відображається на іншому порту? Чому не можна просто сказати: "О, ви там, на іншому порту".
Тому що це створює випадкову поведінку, коли ви підключаєте два таких пристрої. Залежно від порядку, в якому пристрої перераховуються за допомогою функції Plug and Play, два набори параметрів призначаються, здавалося б, випадковим чином при кожному завантаженні. Сьогодні налаштування відповідають одному напрямку, але завтра, коли пристрої перераховуються в іншому порядку, налаштування змінюються. (Аналогічну поведінку ви отримуєте з глузду, якщо ви підключаєте пристрої в іншому порядку.)
Іншими словами: речі смокчуть, оскільки (1) речі вже були в поганому стані - це не було б проблемою, якби пристрій мав належний серійний номер, і (2) коли ви перебуваєте в такому поганому стані, альтернатива смокче більше . Стек USB просто намагається якнайкраще використати погану ситуацію, не погіршуючи її.
Windows (як ви не заявляєте, що ОС ви припускаю, що це те, що ви використовуєте) пов'язує пристрій з портом, до якого він підключений, тому вважав, що "USB DISK A в порту X" відрізняється від "USB DISK A в порт Y ", і він відповідно пов'язує драйвери та записи реєстру.
Якщо під час перегляду диспетчера пристроїв ви користуєтесь опцією "показати неприєднані пристрої", ви побачите пристрій, приєднаний до всіх портів, до яких він коли-небудь був підключений, але затьмарений, оскільки його зараз немає. Коли ви підключите пристрій до одного з цих портів, Windows просто активує цей екземпляр драйвера, коли ви підключите його до іншого порту, перед активацією його потрібно буде визначити новий екземпляр драйвера для цього порту (який процес ви бачите як користувача відображається як "додавання нового пристрою".
Це дозволяє мати однакові пристрої, підключені до різних портів, що працюють одночасно. Є й інші способи досягти цього, з невеликою практичною різницею для кінцевого користувача, яку техніку використовує ОС, але саме так Windows вирішує її влаштувати.