Что именно происходит, когда я вставляю USB в компьютер?
2 ответа
Я должен угадать «почему» вашего вопроса из тегов.
Ваш компьютер идентифицирует его с помощью простого рукопожатия по протоколу USB - такого, как этот, и решает, нужны ли для него драйверы. Если это так, он часто загружает его из Интернета, захватывает его с устройства (если оно разработано как таковое) или запрашивает его. Если нет, он монтирует его или иным образом инициализирует и начинает разговор с устройством.
Вот где начинается проблема. В старые добрые времена, когда дисковод для компакт-дисков был тем, что были у крутых ребят, было принято решение разрешить запуск программ автоматически, когда об этом говорится в файле autorun.inf.
Это продолжалось с USB-ключами. Хотя запуск программы установки облегчал жизнь, это также означало, что вы можете автоматически загружать вредоносные программы (а затем программу установки, если вы хотите быть хитрым). Современные ОС часто отключают эту опцию.
Теперь, когда система запускает произвольные программы, на основе доверия плохая основа для правительства - довольно плохая идея в наше время промышленного и правительственного шпионажа, хакеры просто «оставляют» USB-ключи для неутомимых и подобных вещей. ,
- Директории: Драйверы устанавливаются в 2 директории. Работающая часть (в большинстве случаев) устанавливается в% RootDir%\system32, информационная часть устройства устанавливается в% RootDir%\inf. В директории inf для установленного / зарегистрированного драйвера создается файл oem * .inf. (* это число). В Vista драйвер копируется в каталог% RootDir%\system32\driverstore в качестве справки при установке еще не обнаруженных устройств.
- Реестр: драйвер устанавливается как служба режима ядра. Для этого создаются определенные ключи реестра для службы драйверов. Под драйвером шины есть еще одно место, где соответствующие устройства получают индивидуальный ключ экземпляра устройства. В этом ключе устройство имеет ссылку на текущий используемый драйвер для этого устройства.
- «Прибытие» устройства: когда драйвер шины находит новое устройство в своей шине, он создает реестр ключей под своим собственным ключом, который соответствует уникальному идентификатору экземпляра устройства, который можно использовать для уникальной идентификации устройства в системе. Если этот ключ уже существует, драйвер шины пытается загрузить устройство, на которое ссылается этот узел. Если этот узел не существует или драйвер не загружается, система пытается найти совместимый драйвер для устройства путем сканирования зарегистрированных драйверов устройств в папке% RootDir%\inf. Драйверы, которые соответствуют данному устройству, перечисляются и сортируются. Лучший драйвер затем выбирается и загружается для устройства.
- Поиск драйверов : драйверы сначала ищутся в каталоге inf. Если драйвер не найден, Windows спрашивает пользователя, может ли он предоставить драйверы или он должен смотреться на сервере Microsoft. Производители драйверов могут представить свои драйверы для включения на сервер драйверов устройств Microsoft.
Это для Windows:
Когда USB-устройство подключено к системе, драйвер шины USB получает уведомление. Драйвер шины отправляет на устройство стандартный USB-запрос (USB_DEVICE_DESCRIPTOR). При этом устройство сообщает свое имя и тип. (BDeviceClass /bDeviceSubClass /bDeviceProtocol).
С этой информацией Windows создает запись устройства в системе. Это Hardware-ID. Теперь система пытается найти универсальный драйвер, который может обрабатывать устройство (HID/UVC), или драйвер, который специально зарегистрировался для поддержки этого Hardware-ID.
Чтобы зарегистрировать драйвер в качестве обработчика для определенного устройства, необходимо установить драйвер в систему или предоставить Microsoft такой драйвер, который они могут предоставить на своих серверах.