|
|
|
|
MS-DOS - нереентерабельная система
В связи с тем, что обращения к драйверам осуществляет MS-DOS,
на них накладываются такие же ограничения, как и на резидентные в
памяти программы. Так, например, драйверы не могут пользоваться
функциями MS-DOS (за исключением некоторых функций, которые могут
использоваться при инициализации драйвера). Это серьезно ограничивает свободу драйверов виртуальных устройств, созданных для дополнительной
обработки информации, предназначенной для стандартных драйверов.
Так, например, драйвер виртуального принтера, предназначенный
для поддержки графических примитивов на игольчатом принтере не
может использовать стандартные функции MS-DOS для вывода символов. Драйвер виртуального принтера должен обеспечивать полную
программную поддержку для осуществления физического вывода на
принтер. Заметим, что драйвер, описанный в этом примере, именуется виртуальным, несмотря на то, что он работает с физическим устройством. Это
объясняется тем, что драйвер предоставляет возможности, не поддерживаемые реальным устройством, такие как
выполнение графических операций на простом принтере.
В связи с тем, что MS-DOS нереентерабельна, нельзя использовать программу DEBUG для отладки установленного драйвера. Для выполнения собственных
операций ввода/вывода DEBUG использует MS-DOS и если DEBUG использовать для отладки драйвера, он испортит переданную драйверу информацию,
делая невозможным возврат корректной информации в MS-DOS. Один из способов обхода этого
препятствия заключается в использовании любых имеющихся встроенных функций ввода/вывода (например, функций BIOS) для вывода отладочной информации.
Более предпочтительный способ заключается в создании небольшой тестовой программы для проверки работы драйвера, которая передает драйверу тестовые
данные и проверяет возвращаемую информацию. Такая программа запускается под управлением
отладчика обычным образом. Конечно, если устройство критично ко времени, необходимо принять соответствующие меры, чтобы избежать
какого-либо влияния на работу драйвера.
|
|