2016-02-12 12 views
0

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

Чтобы вызвать его подпрограммы, Я предполагаю, что нужно знать, какие подпрограммы предоставляются драйверами устройства (знаете, его интерфейс/API, я думаю). Итак, я также предполагаю, что мы знаем об этом интерфейсе тоже (исправьте меня, если я ошибаюсь).

Теперь вопрос заключается в том, как мы должны найти точку входа этих подпрограмм, чтобы называть их; или лучше сказать, какая именно процедура вызова подпрограмм драйвера устройства.

Я предполагаю, что это должно быть что-то вроде загрузки динамической библиотеки, в которой компоновщик, наконец, помещает адреса подпрограмм в адресное пространство вызывающих программ.

ПРИМЕЧАНИЕ

Я новичок в этой области, поэтому любая информация/ссылки/иллюстрации действительно ценится.

ответ

0

Детали этого являются специфичными для платформы.

Для настоящих драйверов устройств, то есть где драйвер является программным интерфейсом для физического устройства, драйвер обычно соответствует определенному стандарту, который O/S вызывает, когда необходимо, чтобы отображать что-либо на экране, записывать сектор на диск и т. д.

В Windows, если ваш драйвер существует для предоставления программного обеспечения, которое может выполняться только в режиме ядра, вы можете определить свой собственный интерфейс вызова в своем драйвере, который затем может быть доступен из пользовательского режима с помощью функции DeviceIOControl.

+0

Давайте поговорим о нестандартном драйвере устройства для нестандартного устройства, такого как, например, роботизированная рука или что-то в этом роде. В этом случае у вас может быть несколько программ, каждый из которых должен общаться с физическим устройством через свой драйвер. Как найти и вызвать подпрограммы драйвера устройства? –

+0

Как правило, производители драйверов предоставляют документацию для - и иногда кода образцов - как вызвать драйвер, например. через DeviceIOControl. Очевидно, что не может быть стандарта для взаимодействия с нестандартным устройством. –