Диспетчер загрузки windows 10 что делать
Windows Boot Manager — что это такое, как найти
Любое взаимодействие с компьютером начинается с загрузки операционной системы. Для правильного запуска ОС и контроля за процессом ее инициации существует служба Windows Boot Manager, название которой в переводе значит «Менеджер загрузки виндовс».
Windows Boot Manager — что это такое
Пользователи зачастую пугаются, когда вместо привычного процесса загрузки ОС видят какое-либо сообщение от Windows Boot Manager, что это такое многим неизвестно, и кажется, что с компьютером случилось что-то непоправимое. На самом деле виндовс бут менеджер — это просто комплекс программ и команд, которые контролируют включение операционной системы, загрузку всех компонентов, необходимых для ее полноценного функционирования и инициализацию аппаратных составляющих компьютера.
BootManager отвечает за выбор текущей операционной системы, если их установлено несколько
На всех ОС семейства виндовс программное обеспечение Windows Boot Manager находится в БИОС (на более новых версиях в UEFI) и хранится в ПЗУ (энергонезависимой постоянной памяти, расположенной на материнской плате). При загрузке компьютера или ноутбука эта служба сохраняет в его оперативной памяти ядро системы, которое начинает контролировать всю оболочку Windows.
Обратите внимание! Boot Manager функционирует только на устройствах с Windows Vista и выше, загрузчик прежних версий операционных систем работает совсем по другому принципу.
При включении компьютера первым делом запускается БИОС, он инициализирует все необходимые для загрузки компоненты, в том числе и Windows Boot Manager, а также возможность машины воспринимать команды от пользователя. После этого в работу вступает сам виндовс бут менеджер, который запускает остальные системные утилиты, берущие на себя управление ОС. После этого менеджер загрузки уходит в режим ожидания и инициализируется только при следующем включении ПК.
Принцип загрузки ОС семейства виндовс
Действия Windows Boot Manager при загрузке операционной системы:
К сведению! Для продолжения процесса включения виндовс используется системный загрузчик winload.exe, который также вызывается при помощи Boot Manager.
Как найти Windows Boot Manager
Поскольку Boot Manager — это не одна конкретная утилита, а комплекс нескольких программ и процессов, то открыть его напрямую невозможно. Информация службы находится в BCD — хранилище данных конфигурации загрузки (аналоге файла boot.ini из прежних версий виндовс).
Файл bootmgr (скрытый и доступный только для чтения) хранится в корневом каталоге раздела, который в «Управлении дисками» отмечен как «Активный» (на большей части компьютеров под управлением виндовс он не имеет собственной буквы диска и обозначается как «Зарезервированный системой»).
Загрузочный раздел диска, зарезервированный системой
Обратите внимание! Если системный раздел не выделен, то искомый файл находится в основной директории диска С.
Как настроить Windows Boot Manager
Чтобы изменить настройки bootmgr (включить или, наоборот, отключить модули конфигуратора запуска) используется служба «Конфигурация системы». Вызвать приложение можно при помощи службы «Выполнить» (вызывается горячими клавишами «Win + R»), в окно которой вводится команда «msconfig». Искомая служба находится во вкладке «Загрузка».
Раздел «Загрузка» в меню «Конфигурация системы»
Иногда при установке ОС с флешки может возникнуть ошибка «Bootmgr is Missing», которая обозначает, что флешка не сделана загрузочной (не имеет пометки boot), либо в БИОС не выставлен приоритет загрузки USB HDD.
Обратите внимание! Чтобы исправить ошибку, первым делом следует поменять настройки BIOS/UEFI, а если это не поможет, то делать заново флешку с правильными значениями.
Почему Windows загружается с Windows Boot Manager, а не с диска с системой
Операционные системы семейства виндовс, начиная с висты, созданы так, что для их полноценной загрузки нужна служба виндовс бут менеджер. Если по каким-либо причинам принцип инициализации требуется изменить, следует отключить Windows Boot Manager в настройках конфигурации системы или выбрать другой загрузочный диск в BIOS (или на устройствах с более новыми материнскими платами UEFI).
Описание процесса удаления Windows Boot Manager
Полностью удалить Windows Boot Manager невозможно, реально только отключить. Это можно сделать двумя способами.
Через меню «Конфигурация системы»
Чтобы операционная система запускалась, минуя загрузчик, нужно выставить время, отведенное на инициацию ОС на минимум (в зависимости от версии это 0 или 3 сек.). Для этого:
Обратите внимание! Изменения вступят в силу при следующей загрузке компьютера или ноутбука.
При помощи настроек BIOS или UEFI
Windows Boot Manager не будет запускаться, если в настройках BIOS (или UEFI) поменять диск, с которого происходит загрузка ОС. Чтобы это сделать, нужно:
Выбор приоритета загрузки в меню БИОС
После следующей перезагрузки устройства изменения начнут действовать.
Важно! Менеджер загрузки в новых версиях Windows — достаточно стабильная и функциональная служба, поэтому отключать его без необходимости, равно как и вмешиваться в работу виндовс, не имея достаточной квалификации, не стоит.
При сбоях в работе менеджера загрузки во время включения компьютера возможно появление ошибки «Bootmgr is Missing». Для ее исправления нужно выбрать правильный загрузочный диск в БИОС либо запустить службу «Восстановление системы» Windows.
Windows 10 — управляем параметрами загрузки системы
Применение сторонних утилит для настройки Windows уже давно стало традицией среди пользователей, а стоило бы знать, что множество параметров операционной системы можно настроить ее же средствами, не прибегая к сторонним и подчас платным инструментам. Чего стоит только одна PowerShell вкупе с командной строкой. Впрочем, речь сегодня пойдет не о них, а о MSConfig — замечательной во многих отношениях штатной утилите, предназначенной для управления автоматически запускаемыми процессами и процедурой загрузки Windows.
В настоящее время утилита MSConfig используется в основном при проведении различного рода диагностических работ.
Сама тулза диагностическим инструментом не является, она позволяет последовательно отключать службы, второстепенные драйвера и элементы автозагрузки, исключая их потенциально негативное влияние на работу Windows и помогая таким образом установить виновника неполадки. Другой пример использования MSConfig — включение безопасного режима Windows, также служащего для проведения диагностических и ремонтных работ.
Реже утилита используется для тестирования работы операционной системы и программного обеспечения в условиях предоставления ограниченного объема ресурсов процессора и оперативной памяти. Кроме того, MSConfig может служить в качестве инструмента управления приоритетами загрузки нескольких операционных систем, если таковые установлены на одном компьютере. Наконец, MSConfig можно использовать как своего рода лаунчер для запуска некоторых средств администрирования.
Но обо всём по порядку.
Немного истории
MSConfig впервые появилась в Windows 98 как инструмент управления режимами загрузки и запускающимися при старте операционной системы службами и приложениями. В Windows 2000 разработчики Microsoft почему-то решили ее убрать, но в XP вернули на место, где она и остается по сей день. В Windows 98 MSConfig значительно отличалась от того инструмента конфигурации, который имеется сейчас в Windows 10. Поскольку в ранних версиях системы еще не было реестра, а настройки хранились в конфигурационных файлах, в MSConfig присутствовали одноименные вкладки, предоставляющие доступ к этим файлам.
MSConfig в Windows 10
Из адресной строки Проводника.
Через оснастку классической панели управления «Администрирование», а также через системный поиск.
Небольшое по размерам окошко утилиты содержит пять вкладок: Общие, Загрузка, Службы, Автозагрузка и Сервис. Четвертая вкладка Автозагрузка в Windows 10 не содержит никаких опций за исключением ссылки на Диспетчер задач.
Это своего рода рудимент и, скорее всего, в следующих версиях вкладка будет удалена.
Опции первой вкладки «Общие» определяют режим запуска операционной системы.
Пожалуй, самая интересная вкладка в оснастке MSConfig. Переключившись на нее, в верхней части окна вы увидите как минимум одну запись, содержащую название установленной системы. Если у вас установлено несколько версий Windows, количество записей будет соответствующим. Вы можете управлять записями загрузчика, выбирая одну из систем в качестве загружаемой по умолчанию. Помимо предоставления списка установленных на одном компьютере ОС Windows, ее инструменты позволяют управлять параметрами загрузки — загружать систему в безопасном режиме.
При этом предлагается на выбор использование четырех параметров.
• Параметр «Минимальная загрузка» обеспечивает работу безопасного режима с отключенными сетевыми драйверами и элементами автозагрузки, но с полноценным графическим интерфейсом.
• Если же вы выберите параметр «Другая оболочка», то единственным доступным инструментом управления в Windows 10 окажется командная строка. Интернет при этом так же работать не будет.
• Параметр «Восстановление Active Directory» загружает систему в обычном безопасном режиме с GUI и со службами активных каталогов. Используется в основном системными администраторами при решении проблем в сетевом окружении.
• Наконец, параметр «Сеть» загружает Windows 10 в безопасном режиме с GUI и с возможностью подключения к интернету.
Обратите также внимание на блок параметров «Без GUI», «Журнал загрузки», «Базовое видео» и «Информация об ОС». Непосредственного отношения к безопасному режиму они не имеют и используются в качестве дополнительных настроек.
А так, по большому счету эти функции вам не нужны, поскольку изменение объема выделяемых ресурсов никак не отразится на скорости загрузки, что же касается блокировки PCI и прочих опций, игры с ними могут привести к падению системы или ее зависанию.
Здесь всё намного проще. На этой вкладке вы можете отключить все или некоторые сторонние и системные службы. Последовательное отключение служб применяется в рамках диагностики, позволяя выявить виновника проблем в работе операционной системы. «Службы» частично дублируют функционал вкладки «Общие», в чём вы можете убедиться, отключив любую службу — вариант запуска на вкладке «Общие» автоматически переключиться на «Выборочный запуск».
Дополнительная вкладка, содержащая список команд для запуска наиболее часто используемых инструментов администрирования. Здесь вы найдете опции для запуска командной строки, редактора реестра, восстановления системы, разных мониторов и прочих плюшек.
Ничего руками вводить не нужно, просто выбираем необходимый элемент и жмем кнопку «Запуск».
Итог
По большому счету это всё, что следовало знать об этом полезном инструменте. Утилита MSConfig очень удобна, когда нужно загрузить Windows в безопасном режиме, быстро отключить загружающиеся вместе с операционной системой компоненты или запустить какую-нибудь системную оснастку. Что касается безопасности, навредить системе с ее «помощью» вряд ли получится, поэтому после ознакомления с основными функциями, на вооружение утилита может быть взята даже начинающими пользователями.
О работе ПК ч.3: От включения до полной загрузки Windows 10
Мы продолжаем разбираться как работает ПК на примере клавиатуры и Windows 10. В этой статье поговорим о том как происходит единение софта и железа.
Старт системы
Полностью компьютер выключен когда он отключен от питания и конденсаторы на материнской плате разрядились. До эры смартфонов мобильные телефоны часто глючили и если перезагрузка не лечила проблему, то приходилось доставать батарею и ждать 10 секунд, потому что сбрасывалось программное состояние ОС, в то время как чипы на материнской плате и контроллеры устройств оставались активными сохраняя состояние, драйвера ОС к ним просто реконнектились. 10 секунд — время на разрядку конденсаторов, состояние чипов сбрасывается только при полном отключении.
Если же ПК подключен к розетке или батарее, то он находится в режиме Stand-By, это значит что по шине питания подаётся маленькое напряжения (5В) от которого запитываются некоторые чипы на материнке. Как минимум это системный контроллер, по сути это мини-компьютер запускающий большой компьютер. Получив уведомление о нажатии кнопки Power он просит блок питания/батарею подать больше напряжения и после инициализирует весь чип-сет, в том числе и процессор. Инициализация включает в себя перекачку кода и данных прошивки материнки (BIOS/UEFI) в оперативную память и настройку CPU на её исполнение.
Думать что кнопка Power это рубильник который подаёт электричество на CPU и тот начинает исполнять с заранее известного адреса прошивку BIOS неправильно. Возможно старые компьютеры так и работали. Кнопка включения находится на своей плате, вместе со светодиодами состояний и к материнке она подключается через специальный разъём. На картинке ниже видны контакты для кнопки Power, Reset, а также светодиодов с состоянием Power и чтения жёсткого диска. Нажатие кнопки включения переводится в сигнал на контакты материнки, откуда он достигает системный контроллер.
Контакты на материнке для подключения кнопки включения, светодиодов состояния Power, жёсткого диска и динамиков.
Плата ноутбука с кнопкой включения и светодиодом состояния
Прикладная иллюстрация как блок питания получает сигнал от материнки на включение. Если вы задумаете установить мощную видеокарту (Nvidia 2070 S) на офисный ПК, то просто вставить её недостаточно, потому как она требует питание в 600W, в то время как такой ПК имеет блок на
500W. Первое что придёт в голову – купить новый блок питания на 650W с отдельной линией для видеокарты. Но и здесь будут разочарования, потому как разъёмы материнки будут не совпадать с разъёмами БП, а если его отдельно воткнуть в розетку и подключить к видюхе тоже ничего не будет – в блоке питания вентилятор не крутится и изображения нет. Так происходит, потому что БП должен получить сигнал от материнки на полное включение. Очевидное решение – новая материнка с совместимыми разъёмами, однако она стоит
$300. Есть решение проще, хоть оно и вызывает опасения пожаробезопасности. Берём скрепку, разгибаем и вставляем в зелёный (PS_ON) и один из чёрных пинов (COM). Теперь всё должно работать.
Поиск загрузчика ОС
Есть два вида прошивки материнки – BIOS (Basic Input Output System) на старых машинах и UEFI (Unified Extensible Firmware Interface) на новых. Windows 10 поддерживает обе и абстрагирует различия между ними. UEFI правильней называть ОС чем прошивкой, потому как он предлагает больше возможностей, к примеру богатый графический интерфейс вместо текстового, наличие мышки, больший объём доступной памяти, улучшенная модель безопасности и валидации файлов ОС, взаимодействие с железом через API, вместо прерываний как в BIOS.
Пример экрана монитора BIOS.
Программа BIOS хранится на отдельном чипе, подключенном к Южному мосту. Этот чип можно достать и перепрошить новой программой, по факту это просто носитель памяти, а не самостоятельный микрокомпьютер.
Настройки BIOS (системное время, например), хранятся на другом чипе который как правило находится возле круглой батарейки, которая на самом деле является литиевым аккумулятором, подзаряжающимся во время работы ПК. Называется он CMOS, что означает Complementary Metal Oxide Semiconductor, а по-русски просто — КМОП, что есть комплементарная структура металл-оксид-полупроводник.
Если всё прошло успешно, BIOS начинает процесс поиска загрузчика ОС. Для этого он начинает просматривать все подключенные к материнской плате жёсткие диски. Данные на физических дисках адресуются в единицах называемых сектор, обычно он 512 байт, однако современный стандарт – 4096 байт. Установщик Windows в самый первый сектор на диске записывает специальный программный код и данные о разделах. Этот сектор называется Master Boot Record. Диск разбивается на разделы (partitions), отформатированный своей файловой системой. Максимум 4 раздела, каждый из который может быть расширенным (extended partition), такой можно рекурсивно делить на 4 раздела и теоретически их число не ограничено. Как только BIOS находит Master Boot Record он считывает оттуда код и передаёт ему управление. Этот код поочередно просматривает данные о разделах и находит тот который помечен как активный, в нём находится код загрузчика Windows (Это не раздел с C:\Windows\System32!), этот раздел называется system partition. Как правило он занимает 100Мб и скрыт от пользователя. В первом секторе этого раздела хранится загрузочный код, которому передаётся управление. Это volume boot sector, код в нём ищет файл Bootmgr, с которого и начинается процесс загрузки Windows. Файл Bootmgr создан через соединение в один файлов Startup.com и Bootmgr.exe.
Запуск на UEFI
Пример экрана загрузки UEFI
BIOS существует больше 30 лет и в попытках исправить его недостатки компания Intel в 1998 году создала стандарт Intel Boot Initiative, позже переименованный в EFI и в 2005 году пожертвованный организации EFI Forum. Недостатки BIOS:
• Работает только в 16-битном режиме
• Может адресовать только 1Mb оперативной памяти
• Часто имеет проблемы совместимости
• MBR ограничен только четырьмя главными разделами диска
• Диск с ОС не может быть больше чем 2.2Tb.
• Имеет очень ограниченные возможности для валидации загрузчика ОС.
На смену BIOS пришёл UEFI, по сути это миниатюрная ОС которая может работать и в 32-bit и в 64-bit. Для совместимости есть опция Compatibility Support Module, которая включается в настройках и эмулирует работу BIOS.
Инициализация ядра
Запуск подсистем – SMSS, CSRSS, WinInit
SMSS.exe отличается от пользовательских процессов, это нативный процесс и это даёт ему дополнительные полномочия. SMSS.exe работает с ядром в обход Windows API, он использует то что называется Native API. Windows API – обёртка вокруг Native API. SMSS.exe первым делом запускает подсистему Windows (CSRSS.exe – Client Server Runtime Sub System) и заканчивает инициализацию реестра.
Процесс и потоки SMSS.exe помечены как критические, это значит что если они неожиданно завершаться, к примеру из-за ошибки, это приведёт к падению системы. Для общения с подсистемами, к примеру вызову API создающему новую сессию, SMSS создаёт ALPC-порт с именем SmApiPort. Загружаются из реестра переменные среды окружения, запускаются программы такие как Check Disk (autochk.exe, эти программы записаны в реестре HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute). SMSS.exe запускается для каждой пользовательской сессии. Глобальные переменные (очередь сообщений например) у каждой сессии своя за счёт механизма виртуальной памяти. В Windows есть контексты потока, процесса и сессии. Каждый SMSS.exe запускает свой экземпляр подсистемы, на данный момент это только CSRSS.exe (Windows), в прошлом поддерживались операционные системы OS/2 (os2ss.exe) и POSIX (psxss.exe), но эта идея была неудачной. Самый первый SMSS.exe засыпает в ожидании процесса WinInit.exe. Остальные экземпляры вместо этого создают процесс WinLogon который показывает UI для входа.
Дерево процессов выглядит следующим образом, на нём можно увидеть кто и кого создал (показаны не все процессы, может немного отличаться от последний версий Windows).
Где здесь клавиатура?
Во время запуска ядро Windows считывает из реестра информацию о контроллере системной шины, как правило это шина PCI (реже MSI), к ней подключены контроллеры портов ввода-вывода, в том числе и USB, PS/2. Информация о нём записывается во время установки Windows. Система загружает для него драйвер и рекурсивно обходит все порты так же загружая для каждого из них свой драйвер. Драйвера могут комбинироваться в узлы (driver node), к примеру драйвер клавиатуры, будет соединён с драйвером порта PS2. А вот порт USB сложнее — сначала драйвер порта, потом драйвер для работы с протоколом HID и только потом клавиатура.
Каждый порт контроллируется своим чипом, который мониторит подключение, принимает/отправляет сигналы между CPU и устройством. Если чип-сет Южный мост не встроен в CPU, как это часто делают в ноутбуках, а существует отдельным чипом на материнке, то правильней говорить: сигнал между Южным мостом и контроллером порта. Чип контроллирующий порт имеет выделенную линию с контроллером прерываний (PIC или APIC), по которой он может попросить обратить на себя внимание CPU, к примеру считать данные от клавиатуры (порт PS/2, с USB другая история). Поскольку ОС загрузила для порта драйвер, она может отдавать ему команды, читать и отправлять данные. В нашем примере был загружен драйвер из C:\Windows\System32\i8042prt.sys. Давайте вспомним предыдущую статью. В старых компьютерах с PIC на чипе Intel 8259 было 15 линий прерываний, где клавиатура была подключена к ножке IRQ1, таймер IRQ0, а мышка к IRQ12, который на самом деле был пятой ножкой второго чипа 8259, который мультиплексировал свои прерывания через ножку IRQ2 первого контроллера. В современных PIC могут быть 255 контактов для сигналов прерываний. Во время загрузки ОС программирует APIC/PIC возвращать определённое число когда скажем пришло прерывание от порта клавиатуры или USB и по этому номеру CPU находит в таблице векторов прерываний функцию которую надо выполнить. Номер прерываний определяют HAL и Plug’n’Play Manager. Контроллер прерываний ищет сигнал на своих ножках в определённом порядке, к примеру в бесконечном цикле проверяет напряжение на ножках от 1 до MAX_PIN. Этот порядок определяет приоритет, к примеру клавиатура будет замечена раньше мышки, а таймер раньше клавиатуры. Чтобы не зависеть от особенностей работы контроллеров прерываний Windows абстрагирует концепцию IRQ (Interrupt Request) в IRQL (Interrupt Request Level). Будь у контроллера прерываний хоть 15 хоть 255 линий они все будут отображены на 32 IRQL для x86 и 15 IRQL для x64 и IA64.
Механизм IRQL реализовывается на уровне софта в Hardware Abstraction Layer (HAL.dll), а не железа. В Windows системах есть драйвер шины (bus driver), который определяет наличие устройств подключенных к шинам – PCI, USB и др. и номера прерываний которые могут быть назначены каждому устройству. Драйвер шины сообщает эту информацию Plug and play manager, который уже решает какие номера прерываний назначить каждому устройству. Далее арбитр прерываний внутри PnP Mgr (PnP interrupt arbiter) устанавливает связи между IRQ и IRQL.
Так вот, драйвер клавиатуры (kbdclass.sys) получает данные от порта (USB, PS2) через прерывание и записывает их через WriteFile, компонент внутри ядра Windows просыпается, считывает их используя API ReadFile и добавляет в очередь сообщений с клавиатуры. API для работы с файлом могут использоваться для чтения данных с драйверов. С этого момента начинается обработка данных стеком ввода Windows, об этом в следующей статье.
Если у вас есть ПК с PS2 портом и вы умеете пользоваться WinDbg в режиме ядра, то можете легко найти обработчик прерываний клавиатуры напечатав команду !idt, которая выведет на экран всю таблицу векторов прерываний. Прерывание вклинивается в ход выполнения программы, слово вектор здесь подразумевает направление, направление исполнения программы. WinDbg был сделан специально для отладки Windows, самая последняя версия называется WinDbgX. Он имеет текстовый интерфейс, который отпугивает людей привыкших к Visual Studio, однако предоставляет гораздо больше возможностей, в частности исполнение скриптов. Прерывание фиолетового порта PS2 выделено красным. Функция которая его обрабатывает называется I8042KeyboardInterruptService, которая находится в файле i8042prt.sys.
Сейчас возникает вопрос, откуда у обработчика прерываний аргумент? Кто его передаёт? Ведь CPU ничего не знает о нём. Если поставите в неё breakpoint, то удивитесь ещё больше увидев несколько функций выше по стеку:
0: kd> kC
# Call Site
00 i8042prt!I8042KeyboardInterruptService
01 nt!KiCallInterruptServiceRoutine
02 nt!KiInterruptSubDispatch
03 nt!KiInterruptDispatch
04 nt!KiIdleLoop
Пару слов о USB
Ознакомление с работой порта USB потребовало бы отдельной статьи описывающей его работу и плюс описание обработки данных HID на Windows. Это очень сильно усложнило бы материал, к тому же уже есть хорошие статьи по теме, поэтому PS2 идеальный пример из-за своей простоты.
USB создавался как универсальный порт для всех устройств, будь то клавиатура, фотоаппарат, сканнер, игровой руль с педалями, принтер и пр. Вдобавок он поддерживает вложенность портов – USB материнки => монитор с USB => клавиатура с USB к которой подключена мышка, флешка и USB-hub к которому подключен жёсткий диск. Взглянув на контакты USB 2.0 вы увидите что они не заточены под передачу каких-то определённых данных, как у PS2. Их всего четыре – витая пара для передачи битов данных, плюс и минус питания.
Провода кабеля USB 2.0
USB 3.0 быстрее за счёт дополнительных пяти контактов. Как видите там нету линии CLOCK для синхронизации, поэтому логика передачи данных сложнее. Слева USB 2.0 и справа USB 3.0 для сравнения.
Все данные передаются через протокол HID (Human Interface Device), который описывает форматы, порядок взаимодействия и передачи данных и всё остальное. Стандарт USB 2.0 занимает 650 страниц, документ HID Class Specification, описывающий работу устройств (мыши, клавиатуры и пр) – 97 страниц, их рекомендуется изучить если вы работаете с USB.
Первым делом подключенное устройство должно рассказать о себе, для этого оно отправляет несколько структур данных, в которых указывается ID устройства и ID производителя по которым Plug’n’Play manager может найти в реестре информацию, загрузить и соединить драйвера. USB устройства пассивны, т.е. хост должен сам с определённым интервалом проверять наличие данных. Частота опроса и размер пакета данных задаются в одном из дескрипторов устройства USB. Максимальный размер пакета – 64 байта, что для информации о нажатых клавишах более чем достаточно.
В Windows есть встроенная поддержка HID, она не такая простая как связь драйвера порта PS2 с драйвером клавиатуры, потому что драйвер HID должен уметь обрабатывать все поддерживаемые протоколом сценарии. Вне зависимости от провайдера данных — порты PS2, USB или Remote Desktop или виртуальная машина – на самом верху driver node будет находится Kbdclass, от которого ядро ОС и будет получать информацию. Уведомление о подсоединении клавиатуры будет обрабатываться через Plug’n’Play Manager, так что для ядра Windows не имеет значение какой порт или источник данных от устройства используется.