Драйверы устройств и Windows

Я пытаюсь завершить изображение того, как ПК и ОС взаимодействуют вместе. И я в точке, где я мало вне предположения когда дело доходит до драйверов устройств.

Не пишите вещи как его слишком сложный, или Вы не должны знать при использовании высокого программирования laguage и функций winapi. Я хочу знать, это в целях исследования.

Так, очень простая структура того, как ОС и ПК (ПК я имею в виду, конечно, HW) - то, как я вижу его, - то, что все кроме прямых команд ЦП, которые могут ЦП делать на себе (арифметическая операция, ее доступ регистров и доступ к памяти) должны пройти через ОС. Главным образом, потому что от кольцевого уровня 3 Вы не можете использовать в и инструкции, которые используются для acesing другой HW. Я знаю, что существует MMIO, но он должен быть установлен коммуникацией порта сначала.

Это не было похоже на это все время. Даже я - разрядная молодежь для запоминания MS-DOS, я знаю, что Вы могли получить доступ к HW непосредственно, потому что там ws никакое ограничение, никакой кольцевой режим. Таким образом, Вы могли, чтобы записать строку в погоду использования diplay функция DOS или непосредственно память видеокарты доступа и записать это собой.

Но как разработанная ОС, больше нет этой возможности. Но это прекрасно, так как ОС теперь обрабатывает всю коммуникацию HW и откровенно это более удобный и намного более безопасный (я сказал бы что единственная опция) в многозадачной среде. Таким образом, в наше время Вы вместо того, чтобы использовать международные инструкции использовать BIOS, отображенная функция или DOS функционируют, Вы называете dll, о котором внутренне, чем дескрипторы все Вы не должны знать.

Я понимаю это. Я также undrstand, что драйверы устройств являются частью кода, который работает на кольцевом уровне 0, таким образом, это может сделать все взаимодействия HW. Но то, что я не понимаю, является соединением между ОС и драйвером устройства. Давайте возьмем пример - я хочу заставить звуковую карту сделать звук. Так я окна вызова API для получения доступ к звуковой карте, но что происходит, чем? Окна называют драйверы устройств, чтобы сделать так?

Но если это действительно называет драйвер устройства, это означает, что всем драйверам устройств, которые может назвать функция winAPI, нужно было назвать стандартные программы в некотором особенном методе? Я имею в виду, когда у меня есть новая звуковая карта, ее драйверы должны иметь функции, названные тем же как старое? Таким образом, Windows может на самом деле вызвать ту же функцию со своей точки зрения? Но если Windows предопределил наборы функций requored драйверами устройств, что он не может использовать новые драйверы, что doesent существовал, прежде чем последняя версия ОС вышла.

Помогите мне понять эту путаницу. Я действительно рассердился.Спасибо.

6
задан B.Gen.Jack.O.Neill 31 May 2010 в 19:01
поделиться

1 ответ

Драйвер устройства Windows немного похож на DLL: за исключением того, что вместо того, чтобы приложение динамически связывало/загружало его, это O/S динамически связывает/загружает его.

Записи в реестре сообщают операционной системе, какие драйверы устройств существуют (чтобы операционная система знала, какие драйверы устройств нужно динамически связывать/загружать).

Драйверы устройств работают в кольце 0. В нулевом кольце они (драйверы устройств) не имеют доступа (не могут связываться или использовать) API Windows: вместо этого они имеют доступ к различным API ядра NT.

Но если он вызывает драйвер устройства, значит ли это, что все драйверы устройств, которые могут быть вызваны функцией winAPI, должны иметь подпрограммы, названные определенным образом? То есть, если у меня новая звуковая карта, должны ли ее драйверы иметь те же функции, что и старая? Чтобы Windows могла вызвать ту же функцию с ее точки зрения?

В принципе, да. Все драйверы устройств определенного типа или класса (например, все видеодрайверы или все дисковые драйверы) имеют схожий API, который вызывается операционной системой (и/или вызывается драйверами более высокого уровня, например, дисковые драйверы используются/вызываются драйверами файловой системы).

Комплект драйверов устройств Windows определяет различные API и включает примеры драйверов для различных типов устройств.

Но если Windows имеет предопределенные наборы функций, требуемых драйверами устройств, то она не может использовать новые драйверы, которые не существовали до выхода последней версии ОС.

ОС динамически привязана к функциям драйверов устройств: поскольку API драйверов устройств предопределены, драйверы устройств взаимозаменяемы, насколько это касается ОС; можно писать новые драйверы устройств, если они поддерживают (обратно совместимы со стандартным API драйверов устройств).

Механизм динамического связывания очень похож на то, как COM объекты или классы C++ реализуют любой предопределенный чисто абстрактный интерфейс: заголовочный файл в DDK объявляет чисто абстрактный интерфейс (как виртуальные функции), драйверы устройств реализуют эти функции, а O/S загружает драйверы и вызывает эти функции.

8
ответ дан 10 December 2019 в 02:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: