Assembler - язык неограниченных возможностей


Символьные устройства - часть 4


приведет к тому, что текст из encrypt.txt будет выведен на экран, зашифрованный или расшифрованный ROT 13, в зависимости от того, был ли он зашифрован до этого.

Рассмотрим все команды, которые может поддерживать символьное устройство, и буфера запросов, которые им передаются.

    00h: Инициализация (уже рассмотрена)

    03h: IOCTL-чтение (если установлен бит 14 атрибута)

    +0Eh: 4 байта — адрес буфера

    +12h: 2 байта

    на входе — запрашиваемое число байт

    на выходе — реально записанное в буфер число байт

04h: Чтение из устройства

    Структура буфера для символьных устройств совпадает с 03h

05h: Чтение без удаления символа из буфера

    +0Dh: на выходе — прочитанный символ, если символа нет — установить бит 9 слова состояния

06h: Определить состояние буфера чтения

    Если в буфере нет символов для чтения — установить бит 9 слова состояния.

07h: Сбросить буфер ввода

08h: Запись в устройство

    +0Eh: 4 байта — адрес буфера

    +12h: 2 байта

    на входе — число байт для записи

    на выходе — число байт, которые были записаны

09h: Запись в устройство с проверкой

    аналогично 08h

0Ah: Определите состояние буфера записи

    Если в устройствоиельзя писать — установить бит 9 слова состояния.

0Bh: Сбросить буфер записи

0Ch: IOCTL-запись (если установлен бит 14 атрибута)

    Аналогично 08h

0Dh: Открыть устройство (если установлен бит 11 атрибута)

0Eh: Закрыть устройство (если установлен бит 11 атрибута)

11h: Вывод, пока не занято (если установлен бит 13 атрибута)

    Аналогично 08h, в отличие от функций записи здесь не считается ошибкой записать не все байты

13h: Обобщенный IOCTL (если установлен бит 6 атрибута)

    +0Dh: байт — категория устройства (01, 03, 05 = COM, CON, LPT) 00h — неизвестная категория

    +0Eh: байт — код подфункции:




Начало  Назад  Вперед