Программирование драйверов Windows



Тестовое приспособление CheckIt Loopback Device - часть 3


Бит передается нормально.

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

В упомянутом тесте, описанном Артом Бейкером и Джерри Лозано, распознавание поступившего прерывания в ISR процедуре производится по значению бита SR.2 (PIRQ, внутренний бит 2 регистра состояния SR). В некоторых реализация параллельного порта этот бит действительно хранит флаг прерывания. Он имеет нулевое значение, если прерывание имело место (напряжение на выводе Ack#, SR.6, контакт 10, выполнило отрицательный перепад &#8212 переход из высокого в низкое значения при условии CR.4=1). Единичное значение бита SR.2 устанавливается по аппаратному с6росу или при чтении регистра состояния. Однако на всех компьютерах, доступных автору, параллельный порт в конфигурации SPP вел себя, точно следуя первоисточникам (например, ]an Axelson, Parallel Port Complete), где указывается, что бит SR.2 не используется. Соответственно, тест Арта Бейкера и Джерри Лозано не работает без отключения строки кода, выполняющего эту проверку. Строго говоря, такому обстоятельству может быть и несколько иное объяснение. В Windows XP, где разрабатывались приведенные ниже примеры, тяжело отказаться от услуг всех системных компонентов, потенциально касающихся параллельного порта. Поэтому при тестах представляемых драйверов сам стандартный системный драйвер параллельного порта было решено не отключать, а именно он (его процедура обслуживания прерывания) и считывает регистр состояния SR перед тем как получит управление Isr процедура собственно испытываемых драйверов. Даже если сам порт и позволил бы использовать бит SR, то все равно Isr процедура собственно испытываемых драйверов могла бы считать только единичное значение бита SR.2 (что говорило бы об отсутствии прерывания).




Содержание  Назад  Вперед