После клавиатурного драйвера, драйвер «мыши», наверное, наименее похож на драйвер для среды Windows. Причина этого в том, что DOS-прерывание предоставляет все необходимые функции, требуемые для драйвера «мыши» в среде Windows.
Драйвер «мыши», поставляемый в Windows, будет использовать интерфейс прерывания 33h, если он не обнаружит аппаратной поддержки «мыши»; так что, если используется «мышь», не совместимая с «мышью» фирмы Microsoft, существующий Windows-драйвер будет работать нормально, если перед запуском Windows установлена DOS-версия драйвера «мыши».
В некоторых ситуациях может возникнуть необходимость изменить драйвер «мыши». Так, например, может понадобиться использование прямого интерфейса с «мышью». В стандартном режиме процессора 80286 это будет необходимо, чтобы избежать переключения процессора между реальным и стандартным режимом при каждом событии от «мыши», или во избежание конфликтов с существующим драйвером «мыши». Например, существующий драйвер «мыши», подключенной к последовательному порту, может не использовать коммуникационный драйвер, а работать с портом напрямую. Так может применяться нестандартный метод управления портом, который не подходит для работы в среде Windows. Если разрабатывается драйвер последовательного порта, возможно, понадобится модифицировать драйвер «мыши», для того чтобы последний использовал драйвер последовательного порта, если «мышь» подключена к такому порту. В любом случае архитектура драйвера «мыши» является простой.
Функция инициализации, не являющаяся экспортируемой, - это первая функция, которую ядро Windows вызывает в процессе инициализации. Стандартный драйвер «мыши», который поддерживает различные типы устройств, использует эту возможность для определения типа «мыши».
Функции Inquire и MouseGetlntVect возвращают информацию о конфигурации и характеристиках «мыши». Существуют поля, в которых указывается число кнопок, имеющихся у манипулятора, однако в настоящее время Windows использует только три кнопки.
Ядро Windows вызывает функцию Enable, когда оно готово получать информацию о перемещениях «мыши» и нажатии кнопок. Ядро Windows передает адрес процедуры обработки событий функции Enable. Драйвер «мыши» вызывает процедуру обработки событий каждый раз при перемещении «мыши» или при нажатии кнопок. Это означает, что ядро Windows получает информацию об изменениях положения и состояния манипулятора и само не должно запрашивать этой информации. Это объясняет то, что среди функций Windows нет функции запроса о состоянии «мыши».
Ядро Windows вызывает функцию Disable для временного запрещения вызовов процедуры обработки событий. Это позволяет запретить вызовы при создании DOS-окна, позволяя DOS-окну получать сообщения самому.
Функция WEP является стандартной функцией завершения работы DLL. Так как драйвер «мыши» всегда находится в памяти, ядро Windows вызывает эту функцию только при завершении своей работы.
© digitrode.ru