|
|
|
|
Команды драйверов устройств
Заголовок запроса, как правило, содержит не всю информацию,
которая требуется для большинства команд. Команд, которые не требуют дополнительной информации, довольно мало -- это команды
INPUN/OUTPUT STATUS , FLUSH OUTPUT, OPEN/CLOSE DEVICE и REMOVABLE
MEDIA. Все остальные команды требуют гораздо больше информации,
чем содержится в заголовке запроса. Для каждой из этих команд к
заголовку запроса добавляется дополнительная информация. Поле
request.length заголовка запроса содержит при этом общий размер
блока запроса (в байтах).
Для облегчения доступа к различным элементам блока запроса,
опять-таки, могут быть использованы структуры. В листинге 6-10
(листинге драйвера RDISK, приведенного в конце главы) показано
определение структур для тех команд, которые обрабатываются этим
драйвером. Заметьте, что нам не нужно определять все поля в каждом блоке, т.к. различные запросы часто используют похожие блоки
запросов. Это обстоятельство довольно удобно, т.к. MASM не позволяет использовать одно и тоже имя более одного раза, даже для
различных структур.
|
|