Что отвечает за включение компьютера
Компьютер после выключения включается сам (без нажатия на кнопку Power)
Подскажите, почему у меня ПК иногда после выключения включается сам? Я уже теперь побаиваюсь и дополнительно отключаю сетевой фильтр (чтобы он уж точно не запустился).
Причины самостоятельного включения
Отправка компьютера в спящий режим (вместо выкл.)
Ряд пользователей «не обращают» внимание на один нюанс: вместо выключения они отправляют компьютер в спящий режим (т.е. в режим, при котором он не выкл., а переходит в пониженное энергопотребление).
Компьютер / ноутбук выходит из спящего режима САМ. Почему, как это исправить?
Важно!
Попробуйте завершить работу ПК/ноутбука, с помощью кнопки Power (зажав ее на 5-7 сек. — это приведет к принудительному откл. устройства).
Включится ли он после такого завершения. (это будет полезно хотя бы в плане диагностики. )
«Некорректные» настройки BIOS / UEFI
В BIOS /UEFI есть ряд настроек, которые отвечают за включение (пробуждение) компьютера. Находятся они (чаще всего) в разделе «Power».
Как войти в BIOS (UEFI) на компьютере или ноутбуке [инструкция]
Рекомендую проверить нет ли у вас в этом разделе следующих параметров:
Gigabyte — отключаем включение ПК с помощью мыши, клавиатуры
Кстати, обратите внимание что у некоторых производителей (у AsRock, например) есть несколько режимов «глубокого» сна (активируется при выключении ПК / нажатии на кнопку Power).
AsRock — разные режимы сна (выкл.)
👉 Важно!
Проблемная кнопка включения
На передней панели системного блока обычно всегда есть кнопка Power (кнопка для вкл. ПК). Ввиду ее частого использования, со временем, она может начать «западать», люфтить, и замыкать контакты от небольшой вибрации (например). Кстати, тоже самое относится и к кнопке Reset (принудительной перезагрузки ПК).
Разумеется, такое их «поведение» может приводить к самопроизвольному включению компьютера.
Как перепроверить кнопки на передней панели:
F_Panel — маркировка на мат. плате
Перепроверка блока питания
Неконтролируемое включение/отключение ПК может быть связано с серьезной неисправностью блока питания (БП). И это может привести даже к его воспламенению! Будьте аккуратны, и не оставляйте такой ПК без присмотра!
В качестве диагностики могу порекомендовать подключить системный блок к другому блоку, и сравнить «поведение» устройства (это самый простой и быстрый вариант 👀).
Новый блок питания (заведомо исправный)
Ошибки и определенные параметры ОС Windows: смотрим журналы
Стоит сразу сказать, что в Windows есть журнал, куда заносятся все ошибки и события, происходящие с ПК (в том числе и каждое включение / выключение).
Чтобы открыть этот журнал — нажмите сочетание Win+R, и в появившееся окно «Выполнить» вставьте команду eventvwr, нажмите Enter.
👉 Далее в журнале «Система» можно найти все события, связанные с вкл. устройства (ну или попыткой это сделать). События, кстати, все по умолчанию отсортированы по времени и дате — см. источники «. Power. «. 👇
👉 Например, в моем случае (см. скрин ниже 👇) компьютер включился в 5 утра, чтобы перейти в режим гибернации. Разумеется, после отключения гибернации — делать он так прекратил!
Просмотр журнала в Windows
Вообще, решение проблемы может сильно разница — многое зависит от того, что будет в описании события: это может как ничего не дать, так и указать прямо на причину.
Таймеры пробуждения откл., сон и гибернация в режиме никогда
После изменения настроек — перезагрузите компьютер и проверьте, как он будет себя вести.
👉 Временная мера: как «не дать» компьютеру включиться в ваше отсутствие
Самопроизвольное включения ПК это не только неудобно, но еще и опасно (особенно, если он будет работать, когда дома никого не будет. ).
Тем более, если ПК «так себя ведет» — значит у него (как уже говорил выше) может быть серьезная тех. неисправность (а те же блоки питания при неисправностях нередко и дымятся, и воспламеняются!).
👉 Чтобы ничего плохого не произошло — отключите питание проблемного компьютера от сети 220В, когда оставляете его без присмотра!
Лучший вариант решения — вынуть вилку из розетки (или откл. сетевой фильтр, нажав на кнопку переключателя).
Отключаем питание системного блока
Если ваш блок питания исправен (и был перепроверен) — отключать ПК можно и с помощью кнопки на его корпусе (обычно, располагается с задней стороны системного блока, рядом с кабелем питания).
Выключатель на блоке питания ПК
Как включить компьютер без кнопки
Что делать, если кнопка включения на компьютере вышла из строя, а компьютер необходимо срочно включить
Корпус системного блока – это важная составляющая всего компьютера. Именно в корпусе находится так сказать «производственный цех» всего компьютера. Именно в корпус устанавливается материнская плата, а на неё уже «вешается» оперативная память, видеокарта, процессор и всевозможные провода и шлейфы. Мало того, блок питания находится в отдельном месте внутри корпуса, впрочем, как и жёсткий диск и привод.
Современные корпуса смотрятся достаточно привлекательно, грозно, агрессивно, необычно… Фантазии у разработчиков хватает, а это значит, что обычные покупатели могут выбирать из огромного ассортимента. Но мало того, что нынешние корпуса имеют привлекательный внешний вид, они и имеют и «рабочие» плюсы. Такими плюсами являются разъемы USB, а так же разъёмы для микрофона, и наушников на передней части корпуса, а это в свою очередь значит то, что нам не нужно всякий раз, когда надо подключить флешку, лезть под стол и добираться до задней панели корпуса. Думаю любой согласиться, что это в принципе мелочи, но все, же приятнее просто вставить флешку спереди и начать работать.
Но, к сожалению, бывают такие случаи, когда некоторые части корпуса компьютера выходят из строя. Речь идёт о пресловутой кнопке POWER, которая есть абсолютно на каждом корпусе. В процессе долгой эксплуатации, данная кнопка может попросту выйти из строя, например, перестать нажиматься или наоборот, впадёт вглубь корпуса, и уже как не «колдуй», уже включить компьютер не получится. Что же делать в таких ситуациях? Если компьютер вам особо не нужен, то лучше вызвать мастера и со спокойной душой дождаться, пока он всё отремонтирует, заплатив ему за это некую сумму денег.
Если же компьютером надо воспользоваться достаточно срочно, тогда, пожалуй, стоит воспользоваться следующим советом.
Для начала вам необходимо найти ровную поверхность и аккуратно положить системный блок так, чтобы левая крышка смотрела на вас, при этом отключать все провода не стоит, дабы быстрее всё завершить, но стоит смотреть, чтобы эти провода не были натянуты. Помимо этого, обязательным условием должно быть то, чтоб компьютер был отключен от электропитания, как говориться, мало ли что. Далее, что необходимо сделать, это снять левую крышку корпуса. В современных корпусах, обычно для этого не нужно прилагать каких либо больших усилий, поэтому проблем с этим возникнуть не должно.
После снятия крышки, перед вами возникнет потрясающая картина. Вы увидите всё то, за что в своё время отдали круглую сумму, и что обычно мирно работает, издавая невинный шум, и то, что сейчас не хочет «заводиться». Наше внимание должно быть в первую очередь сосредоточенно на разноцветные проводки, которые идут от передней части корпуса, к материнской плате. Таких проводков может быть много, и не удивительно, ведь там подключены и кнопки POWER и кнопка RESET, и порты USB, вместе в аудио выходами. Итак, на следующем шаге, небольшие знания английского, которые многие получили ещё в школе, могут нам понадобиться, ведь на самих проводках, а так же на материнской плате, возле подключения этих проводков, должно быть написано, что они значат. Для примера можно взять порты USB. На самой материнской плате, около подключения, должна быть надпись USB1, USB2 и т.д. Это значит, что провода, подключённые к этим разъемам, это не что иное, как порты подключения USB.
Но не стоит забывать про нашу проблему, а это значит, что нам необходимо искать проводок POWER (обычно это два проводка, сплетенные между собой). Обычно коннекторы, к которым подключаются кнопки включения или перезагрузки, находятся в нижней правой части материнской платы:
На большинстве материнских платах эти разъемы одинаковые и состоят из 9 контактов, расположенных в два ряда. Два последних контакта в коротком ряду из 4 штекеров отвечают за включение/отключение компьютера.
Приведем схемы разъемов для наиболее популярных производителей материнских плат.
Не включается компьютер. Не идёт изображение.
Компьютер включился (слышна работа кулеров охлаждения процессора, видеокарты), но нет изображения.
Не загружается компьютер. Что делать?
Первоначальные действия
В случае, если имеется «Speaker» (специальный динамик), нужно оценить сигналы, которые он издаёт. Исходя из этого можно оценить неисправность «железа» компьютера. Если спикера нет, можно подключить внешний.
Выглядит он так:
Сигналы от «Speaker» зависят от версии BIOS (см. статью «Таблица звуковых сигналов BIOS«). Если нет и внешнего — можно обойтись без него, так как это не панацея, я сам им редко пользуюсь.
Рекомендую сделать следующее:
Проверить включен ли монитор
Проверить индикатор «вкл«. Светодиод на мониторе должен светиться или, как правило, в случае отсутствия сигнала, моргать. Если индикации нет — проверить питание 220В и не отошёл ли кабель питания. Если питание подходит, а индикации всё-таки нет — монитор неисправен. В этом случае можно подключить компьютер к телевизору через HDMI кабель, к примеру.
Соответственно, если монитор неисправен — меняем на другой.
Проверить подключение видеокабелей (VGA, DVI, HDMI) к видеокарте и монитору
Видеокабели могут немного «отойти» от разъёма монитора, если они плохо были затянуты.
Исправляем если так. Переподключаем видеокабель.
Выключаем компьютер
Нажимаем на кнопку «Power» и держим около 5-7 сек, ну или пока не выключится.
Открываем крышку системного блока
Как правило, для этого нужно отключить все подключенные провода к системному блоку:
Открутить 2 винта.
Осмотреть составные части системного блока (материнскую плату, видеокарту и др.). Возможно есть вздувшиеся конденсаторы. Определить есть ли посторонний запах (возможно есть запах «гари»). Если имеется, то лучше обратиться к специалисту. Если всё нормально и запаха нет, то идём дальше.
Оперативная память
Необходима профилактика.
Если не хочется заморачиваться, просто переподключите модули памяти и скорее всего всё заработает.
Бывают такие случаи, что у вас установлено несколько модулей памяти. Неисправности в этом случае могут быть такими:
1. Вышел из строя один из установленных модулей оперативной памяти
2. Неисправен слот DIMM под ОЗУ на материнской плате
В этом случае нужно отключить все модули оперативной памяти. Подключать их по одному и смотреть результат.
Если получилось выявить неисправный модуль памяти — меняем на новый или рабочий модуль.
Если удалось выявить неисправность слота DIMM на материнской плате, то этим слотом больше не пользуемся. Подключаем модули оперативной памяти в оставшиеся свободные слоты. При наличии экономической целесообразности, можно заменить материнскую плату.
Если всё заработало — собираем, подключаем всё обратно.
Небольшой совет по профилактике системного блока
Я обычно, раз уж открыл крышку системника, провожу профилактику. Удаляю пыль пылесосом. Но, если есть балончик со сжатым воздухом, то лучше им, так как пыль нужно выдувать, а не всасывать.
Снимаю модули памяти, видеокарту, отключаю Sata кабели.
При отключении видеокарты не забудьте открутить шуруп и нажать на защёлку
При помощи кисточки, тряпочки и технического спирта, провожу профилактику (чистку) указанных аппаратных частей компьютера.
После профилактики ставим всё на место.
Иногда приходится сначала:
Если так же комп не работает — идём дальше.
Видеокарта
Скорее всего вышла из строя дискретная видеокарта.
Если изображение идёт — значит неисправна дискретная видеокарта. Можно подключить обратно и проверить ещё раз. На всякий случай отдать эту видеокарту другу, пусть проверить у себя. Если дискретная видеокарта неисправна — соответственно заменить.
В случае, если в игрушки играть не будете и вы не используете САПР- программы (к примеру NX) — можно пользоваться интегрированным видеоадаптером.
Не помогло? Идём дальше.
Процессор и материнская плата
Про выход из строя процессора писать не буду. Это бывает крайне редко. 1 случай из 1000. Может быть процессор отошёл от сокета материнской платы.
Снимаем кулер охлаждения процессора.
Не забудьте нанести новую термопасту, удалив старую!
Если данные «шайтан манипуляции» не помогли, вероятнее всего неисправна материнская плата (вздулись конденсаторы, вышли из строя транзисторы и т.д)
Меняем материнку.
Только здесь нужно задуматься о целесообразности покупки и замены.
Надеюсь моя статья вам помогла.
Возможно вам помогут дополнительные статьи по ремонту компьютера:
О работе ПК ч.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 не имеет значение какой порт или источник данных от устройства используется.