| Родной драйвер всегда лучше по тому, что его писали люди, которые проектировали устройство. Никто лучше их не знает, что может эта железка, а что не может. Windows может знать трехкнопочной мыши, о том, что на этой мыши кнопок, что на дикообразе может сообщить только драйвер - разработчикам операционной системы такое в голову не приходило, как и все многообразие современных устройств, так как сначала появляются операционные системы, и лишь потом устройства, которые в них могут работать. Устройство работает снаружи компьютера, драйвер - внутри.
>А что мешает тогда разработчикам операционной системы включить в стандартный драйвер
>поддержку всего этого?
Нам не удалось донести до вас идею драйвера, это ни в коем случае не обвинение, это просто констатация факта, чтобы вы тоже знали (и у вас не было ложного чувства, что понимаете). Операционная система просто не знает, что может устройство, а что нет. Давайте пример из практики возьмем... Вот есть такие твердотельные SSD-диски, в них нет ни головок, ни секторов - в них платы flash-памяти. Откуда создателям Windows или любой другой операционной системы было знать, что такие со временем появятся? Да ни откуда, никто не знал об них еще несколько лет назад. Однако, то, что новые устройства будут появляться они знали. Знали они также, что эти новые устройства, порты и т.п. будут выполнять схожие функции, нужно будет читать, писать в их память. Ведь Windows ничего сверхестественного не делает... Если рассуждать без деталей, то нужно в памяти разместить программу - пишем в платы оперативной памяти, нужно получить результаты - читаем оперативную память. Нужно отобразить картинку на мониторе - пишем в видео-память. Нужно прочитать символ с клавиатуры? Читаем участок памяти, ответственный за прием данных с клавиатуры. Проблема лишь в одном, нужно знать в какой участок писать, из какого участка читать и что писать и читать. Вот это и координирует драйвер. Драйвер: у меня есть клавиатура - вот участки памяти для чтения стандартных символов такие-то такие-то. Windows: отлично, я знаю что такое клавиатура - это устройство с 101 или 104 клавишами и тремя лампочками. Драйвер (про себя): Боже мой, что за древность... у меня тут еще колесо регулировки звука, 20 дополнительных программируемых клавиш, колесо скрола и небольшой экран... а эта древняя система талдычит о 101 клавиши... ну ладно, есть тут у меня под боком библиотечка, которая обеспечит доступ ко всему этому богатству, а производители я знаю на компакт диск положили тулузу, которая дернет все нужные функции и позволит задействовать доп.клавиши, колесики и экран.
>И ещё: после установки родного драйвера появляются новые функции Win 32 или системные
>вызовы в unix, позволяющие использовать новые функции устройства?
Примерно так, драйвер встраивается в ядро операционной системы и вы можете использовать его возможности, которые позволяют задействовать доп.оборудование устройства, о существовании которого Windows не подозревает. Т.е. в системе появляется библиотека, которая может содержать внутри себя новые функции и к которым вы можете обратиться (и к которым обращается ПО, сопровождающее устройство, т.е. есть допустим на уровне видео-карты возможность менять ориентацию экрана - у ПО, которое ставится вместе с драйвером есть теперь такая возможность и вы из другой программы можете обратиться к библиотеке драйвера, чтобы ей воспользоваться). На уровне операционной системы, Win32 API ничего нового не появляется - базовые возможности Windows остаются неизменными. | |