why not look here Важное для путешествуещих

Внутренняя организация MSDOS


1 Внутренняя организация MSDOS
1. Внутренняя организация MS-DOS1.1. Основные компоненты операционной системы1.2. Процесс загрузки операционной системы1.3. Общая схема работы DOS1.4. Обзор прерываний BIOS1.5. Обзор прерываний DO...
1 1 Основные компоненты операционной системы
1.1. Основные компоненты операционной системы Дистрибутив операционной системы MS-DOS состоит, в зависимости от версии, из одной или нескольких дискет. На них расположены файлы собственно операцио...
1 2 Процесс загрузки операционной системы
1.2. Процесс загрузки операционной системы При включении питания компьютера управление передается базовой системе ввода/вывода, BIOS.Она выполняет проверку аппаратных узлов компьютера, формирует н...
1 3 Общая схема работы DOS
1.3. Общая схема работы DOSДля того чтобы правильно работать с системным программным и аппаратным обеспечением, нужно четко представлять себе механизм взаимодействия прикладной программы с компьют...
Файловая система
Файловая система является одной из важнейших подсистем DOS. Она используется как в процессе загрузки операционной системы, так и в процессе ее работы. Сама операционная система записана на системн...
Система управления памятью
Эта подсистема DOS используется для распределения памяти запускаемым программам. DOS управляет памятью с помощью блоков MCB (Memory Control Block). Память разбивается на блоки; каждому блоку предш...
Система управления программами
При запуске программы DOS выполняет несколько операций. Сначала она обращается к системе управления памятью, чтобы подготовить блоки памяти для запускаемой программы. С помощью файловой системы фа...
Система связи с драйверами устройств
Эта система скрыта от прикладных программ - программы не могут обращаться непосредственно к драйверам устройств ввода/вывода. Программа вызывает DOS, а DOS обращается при необходимости к драйверам...
Система обработки ошибок
Система обработки ошибок DOS проста и удобна. Для кодирования ошибок как правило используется флаг переноса (CARRY, CF). Если после обращения к прерыванию DOS флаг переноса установлен в 1, произош...
Служба времени
Компьютер обычно оборудуется системными часами. Это могут быть КМОП-часы с питанием от аккумулятора, содержимое которых не сбрасывается при выключении питания компьютера, или таймер, регулярно выр...
Ввод/вывод на консоль оператора
Консоль оператора состоит из двух устройств - клавиатуры и дисплея. Эти два устройства обслуживаются одним драйвером - драйвером консоли CON. Т.е. можно считать, что в компьютере имеется устройств...
Другие подсистемы DOS
DOS имеет набор драйверов для работы с печатающими устройствами и последовательными портами, которые обеспечивают прием/передачу символов и управление режимами работы устройств. Кроме того, для пе...
1 4 Обзор прерываний BIOS
1.4. Обзор прерываний BIOSКак правило, любая программа работает с тем или иным устройством ввода/вывода. Программы для первых ЭВМ работали непосредственно с портами и регистрами этих устройств. Мо...
Получение информации об оборудовании
INT 11h - Получить список оборудования.Прежде чем пытаться работать с каким-либо устройством ввода/вывода, следует убедиться в том, что оно есть в составе оборудования компьютера. В процессе...
Работа с дисплейным адаптером
Прерывание INT10h выполняет все многочисленные операции по обслуживанию дисплейного адаптера. При вызове прерывания INT 10h, как и при вызове многих других прерываний, регистр AH содержит ном...
Обслуживание клавиатуры
Обработчик прерывания INT 16h выполняет несколько функций, связанных с обслуживанием клавиатуры. Мы не будем сейчас перечислять эти функции, они будут подробно описаны в главе, посвященной кл...
Обслуживание дисковой подсистемы
Прерывание INT13h предназначено для обслуживания жестких и флоппи-дисков. Многочисленные функции прерывания INT 13h выполняют все операции по вводу/выводу на диски. Мы сделаем обзор только са...
Вывод на принтер (параллельный порт)
BIOS содержит простейшую поддержку принтера - три функции прерывания INT 17h. Это функция 01h - инициализация принтера, 02h - опрос состояния принтера и 00h - вывод символа на принтер. Поскол...
Обслуживание последовательного порта связи
Функции прерывания INT14h обслуживают порт последовательной передачи данных RS232. С помощью этих функций можно задавать формат и скорость передачи данных, определять состояние портов и, конечно,...
Работа с системными часами
Функции прерывания INT 1Ah обслуживают часы, имеющиеся в каждом компьютере. С их помощью вы можете установить время и дату, опросить текущее состояние часов. Вы можете работать с часами реаль...
Перезагрузка операционной системы
Вызов прикладной программой прерывания INT19h приведет к перезагрузке операционной системы....
Системный сервис для машин класса AT
Прерывание INT 15h использовалось в компьютерах IBM PC и IBM PC Jr для управления кассетным накопителем на магнитной ленте (функции 0-3). Для машин класса AT и более высокого к...
1 5 Обзор прерываний DOS
1.5. Обзор прерываний DOSDOS предоставляет программе набор системных вызовов, реализованных с использованием механизма программных прерываний. Эти вызовы открывают прикладной программе доступ к си...
Получение системной информации
Функция 30h возвращает в регистре AX номер версии DOS. Например, для версии MS-DOS 5.00 содержимое регистра AH равно 00, регистра AL - 05. Дополнительно через регистр BH функция возвращает програм...
Символьный ввод/вывод
Эти функции применяются для работы со всеми символьными устройствами, такими как консоль, принтер, последовательный порт, и называются функциями стандартного ввода/вывода. Ввод/вывод программы, ис...
Таблица 1
Таблица 1Код НазначениеОписание 01hВвод с клавиатуры Выполняется ввод символа со стандартного ввода и эхо-вывод символа на стандартное устройство вывода. Выполняется проверка на нажатие комбинации...
Работа с файловой системой
DOS предоставляет программам обширный сервис для работы с файлами и дисками. Практически все файловые операции можно выполнять с помощью специально предназначенных для этого функций, только в неко...
Управление программами
DOS предоставляет программам возможность организовать запуск других программ или загрузку и выполнение программных оверлеев. Для этого служит функция 4Bh. Для завершения работы программа должна та...
Управление памятью
DOS управляет распределением памяти с помощью блоков управления памятью MCB (Memory Control Block). Вся память разбивается на блоки различного размера, которым предшествует блок MCB, содержащий ха...
Связь с драйверами устройств
Мы уже обращали Ваше внимание на то, что программы не могут обращаться непосредственно к драйверам устройств ввода/вывода. Все обращения к драйверам имеют либо неявный характер (ввод/вывод с помощ...
Другие функции
Существуют функции, позволяющие переопределять прерывания, работать с системными часами и календарем, функции для работы в сети и некоторые другие. Эти функции будут описаны позже в соответствующи...
1 6 Обработка ошибок
1.6. Обработка ошибокКогда программа обращается к DOS для выполнения какой-либо операции, она должна вызвать соответствующее прерывание, загрузив перед вызовом прерывания все необходимые операнды...
Таблица 2
Таблица 21Неправильный код функции 2Файл не найден3Путь не найден4Слишком много открытых файлов 5Доступ запрещен6Неправильный идентификатор файла 7Разрушен блок управления памятью 8Недостаточно па...
Таблица 3
Таблица 319Запись на защищенный от записи диск 20Задан неизвестный идентификатор устройства 21Дисковод не готов22Неизвестная команда23Ошибка циклического кода проверки 24Неправильная длина структу...
Таблица 4
Таблица 41Недостаточно ресурсов: блоков FCB, памяти и т.д. 2Временная ситуация3Нет прав доступа4Внутренняя ошибка DOS5Ошибка аппаратуры6Системная ошибка DOS (нет CONFIG.SYS и т.п.) 7Ошибка в прикл...
Таблица 5
Таблица 51Повторить операцию позже. Можно спросить пользователя, желает он повторить операцию или завершить работу программы. 2Повторить предыдущую операцию после небольшой паузы. Если ошибка не и...
Таблица 6
Таблица 61Локализация ошибки не может быть определена (система не знает, где произошла ошибка). 2Ошибка произошла в блочном устройстве (диск или магнитная лента). 3Ошибка связана с сетью. 4Ошибка...
Таблица 7
Таблица 7ECHILDНет порожденных процессов. Задача, не имеющая подзадач, выдала команду ожидания, или была выдана команда ожидания для подзадачи, имеющей признак NO-WAIT. EAGAINБольше нет процессов....
2 Векторная таблица связи MSDOS
2. Векторная таблица связи MS-DOS2.1. Таблица связи управляющих блоков MS-DOS2.2. Блоки управления памятью в MS-DOS2.3. Список управляющих блоков устройств2.4. Таблица файлов MS-DOS2.5. Список заг...
2 1 Таблица связи управляющих блоков MSDOS
2.1. Таблица связи управляющих блоков MS-DOS Операционная система MS-DOS, подобно операционным системам для больших ЭВМ серии ЕС, содержит векторную таблицу связи основных управляющих блоков. К со...
Таблица 1
Таблица 1(-2) 2mcb_seg сегмент первого управляющего блока памяти (MCB) (0) 4 dev_cb указатель на первый блок управления устройствами DOS (DOS Device Control Block) (+4) 4 file_tab указатель на таб...
2 2 Блоки управления памятью в MSDOS
2.2. Блоки управления памятью в MS-DOS Первое поле векторной таблицы связи mcb_seg содержит сегментный адрес первого блока управления памятью (MCB). Блок MCB всегда начинается на границе параграфа...
Таблица 2
Таблица 2Диапазон адресовСодержимое 0000:0000Векторы прерываний 0000:0400Область данных BIOS 0000:0500 Область данных DOS xxxx:0000 Область программ DOS (расширение BIOS, обработчики прерываний DO...
Таблица 3
Таблица 3(0) 1 type тип блока MCB (M или Z)(+1) 2owner параграф владельца блока (если 0, то блок описывает сам себя) (+3) 2size число параграфов в этом блоке (один параграф имеет размер 16 байт) (...
Таблица 4
Таблица 4(0) 2 int20h двоичный код команды int 20h (программы могут использовать эту команду для завершения своей работы) (+2) 2mem_top нижняя граница доступной памяти в системе в параграфах (+4)...
2 3 Список управляющих блоков устройств
2.3. Список управляющих блоков устройств Поле dev_cb векторной таблицы связи содержит FAR-адрес цепочки блоков управления устройствами DOS (DOS Device Control Block) - DDCB. Блок DDCB строится опе...
Таблица 5
Таблица 5(0) 1 drv_num номер устройства (0 соответствует устройству А:, 1 - В: и т.д.) (+1) 1drv_numd дополнительный номер устройства внутри драйвера (+2) 2sec_size размер сектора в байтах(+4) 1cl...
Таблица 6
Таблица 6(0) 1 drv_num номер устройства (0 соответствует устройству А:, 1 - В: и т.д.) (+1) 1drv_numd дополнительный номер устройства внутри драйвера (+2) 2sec_size размер сектора в байтах(+4) 1cl...
2 4 Таблица файлов MSDOS
2.4. Таблица файлов MS-DOSDOS создает таблицу открытых файлов и помещает ее адрес в поле file_tab векторной таблицы связи. В этой таблице для каждого открытого файла хранится такая информация, как...
Таблица 7
Таблица 7(0) 4next указатель на следующую таблицу файлов (+4) 2file_count количество файлов в этой таблице --- Дальше идут блоки DFCB в количестве file_count штук ---- (0) 2handl_num количество фа...
2 5 Список загружаемых драйверов устройств
2.5. Список загружаемых драйверов устройств Все драйверы, резидентные или подключенные к операционной системе во время обработки файла CONFIG.SYS, связаны в список. Первый драйвер - это так называ...
Таблица 8
Таблица 8(0) 4next указатель на заголовок следующего драйвера. Если смещение адреса следующего драйвера равно FFFF, это последний драйвер в цепочке (+4) 2attrib атрибуты драйвера (+6) 2strateg сме...
2 6 Другие поля векторной таблицы связи
2.6. Другие поля векторной таблицы связи Как мы только что увидели, все драйверы связаны в цепочку, которую нетрудно проследить. Для драйверов часов CLOCK$ и консоли CON векторная таблица связи со...
Таблица 9
Таблица 9(0) 64path текущий путь доступа для диска (+64) 2reserv1 зарезервировано(+66) 2reserv2 зарезервировано(+68) 1reserv3 зарезервировано(+69) 4ddcb адрес соответствующего DDCB(+73) 2cdir_clu...
3 Управление программами
3. Управление программами3.1. Форматы программных файлов3.2. Процесс загрузки программ в память3.3. Префикс программного сегмента3.4. Запуск программ из программ3.5. Завершение работы программ...
3 1 Форматы программных файлов
3.1. Форматы программных файловТеперь, когда мы знаем структуру памяти на момент завершения загрузки операционной системы, можно посмотреть, а что же происходит дальше, когда оператор запускает ка...
Таблица 1
Таблица 1(0) 2 signature два байта 'MZ' (4Dh, 5Ah), индентифицирующие файл в формате EXE (+2) 2part_pag длина последней страницы программы в байтах (страница содержит 512 байт) (+4) 2file_size раз...
3 2 Процесс загрузки программ в память
3.2. Процесс загрузки программ в память Загрузка COM- и EXE-программ происходит по-разному, однако есть некоторые действия, которые операционная система выполняет в обоих случаях одинаково. Опреде...
3 3 Префикс программного сегмента
3.3. Префикс программного сегментаТеперь займемся вплотную префиксом программного сегмента PSP. Формат PSP уже был описан ранее, для удобства приведем его еще раз вместе со структурой из файла sys...
Таблица 2
Таблица 2(0) 2 int20h двоичный код команды int 20h (программы могут использовать эту команду для завершения своей работы) (+2) 2mem_top нижняя граница доступной памяти в системе в параграфах...
3 4 Запуск программ из программ
3.4. Запуск программ из программВаша программа может при необходимости запустить другую программу формата EXE или COM. Для ассемблерных программ существует функция 4Bh прерывания INT 21h, для...
Таблица 3
Таблица 31неверный код подфункции; 2файл запускаемой программы не найден; 3путь не найден;4слишком много открытых файлов; 5нет доступа;8нет памяти для загрузки программы; 10длина блока среды больш...
Таблица 4
Таблица 40загрузить и выполнить программу; 1загрузить, но не выполнять программу (внутренняя подфункция для DOS 3.х); 2загрузить, но не выполнять программу (внутренняя подфункция для DOS 2.х); 3за...
Таблица 5
Таблица 5(0) 2seg_env сегментный адрес среды, которая создается родительской программой для запускаемой программы. Если в этом поле находится 0, то для запускаемой программы копируется среда родит...
Таблица 6
Таблица 6(0) 2seg_env сегментный адрес среды, которая создается родительской программой для запускаемой программы. Если в этом поле находится 0, то для запускаемой программы копируется среда родит...
Таблица 7
Таблица 7(0) 2seg_env сегментный адрес среды, которая создается родительской программой для запускаемой программы. Если в этом поле находится 0, то для запускаемой программы копируется среда родит...
Таблица 8
Таблица 8(0) 2seg_env сегментный адрес, по которому загружается программа (+2) 4reloc фактор перемещения, аналогичен элементу таблицы перемещений в заголовке EXE-файла Следующая демонстрационная п...
Таблица 9
Таблица 9P_WAITвыполнение родительской программы задерживается до завершения дочерней программы. P_NOWAITродительская программа продолжает выполнение сразу после запуска дочерней. Этот параметр им...
3 5 Завершение работы программы
3.5. Завершение работы программыСтарые версии DOS (до 2.0) требовали выполнения достаточно сложной процедуры для завершения программы. В начале работы программы необходимо было сохранить адрес PSP...
4 Прерывания
4. Прерывания4.1. Механизм прерываний4.2. Таблица векторов прерываний4.3. Маскирование прерываний4.4. Изменение таблицы векторов прерываний4.5. Особенности обработки аппаратных прерываний...
4 1 Механизм прерываний
4.1. Механизм прерыванийДля обработки событий, происходящих асинхронно по отношению к выполнению программы, лучше всего подходит механизм прерываний. Прерывание можно рассматривать как некоторое о...
4 2 Таблица векторов прерываний
4.2. Таблица векторов прерыванийДля того чтобы связать адрес обработчика прерывания с номером прерывания, используется таблица векторов прерываний, занимающая первый килобайт оперативной памяти -...
Таблица 1
Таблица 1Номер Описание 0Ошибка деления. Вызывается автоматически после выполнения команд DIV или IDIV, если в результате деления происходит переполнение (например, при делении на 0). DOS обычно п...
4 3 Маскирование прерываний
4.3. Маскирование прерыванийЧасто при выполнении критических участков программ, для того чтобы гарантировать выполнение определенной последовательности команд целиком, приходится запрещать прерыва...
4 4 Изменение таблицы векторов прерываний
4.4. Изменение таблицы векторов прерываний Вашей программе может потребоваться организовать обработку некоторых прерываний. Для этого программа должна переназначить вектор на свой обработчик. Это...
4 5 Особенности обработки аппаратных прерываний
4.5. Особенности обработки аппаратных прерываний Аппаратные прерывания вырабатываются устройствами компьютера, когда возникает необходимость их обслуживания. Например, по прерыванию таймера соотве...
Таблица 2
Таблица 2НомерОписание 8IRQ0 - прерывание интервального таймера, возникает 18,2 раза в секунду. 9IRQ1 - прерывание от клавиатуры. Генерируется при нажатии и при отжатии клавиши. Используется для ч...
6 Драйверы
6. Драйверы6.1. Интерфейс между программным обеспечением и аппаратурой6.2. Структура загружаемого драйвера6.3. Процесс загрузки драйверов6.4. Связь драйвера с операционной системой6.5. Функции заг...
6 1 Интерфейс между программным обеспечением и аппаратурой
6.1. Интерфейс между программным обеспечением и аппаратуройФирмы-разработчики аппаратного обеспечения постоянно совершенствуют внешние устройства и другие узлы персонального компьютера. Постоянно...
6 2 Структура загружаемого драйвера
6.2. Структура загружаемого драйвераДрайвер - это еще одна разновидность программ в дополнение к уже изученным нами программам формата COM и EXE. Иногда говорят, что драйверы - это разновидность C...
Таблица 1
Таблица 1(0) 4next указатель на заголовок следующего драйвера. Если смещение адреса следующего драйвера равно FFFF, это последний драйвер в цепочке (+4) 2attrib атрибуты драйвера(+6) 2strateg смещ...
Таблица 2
Таблица 2БитНазначение 01 - драйвер обслуживает стандартное устройство ввода; 0 - этот драйвер не обслуживает стандартное устройство ввода 11 - драйвер обслуживает стандартное устройство вывода; 0...
Таблица 3
Таблица 3БитНазначение0Зарезервировано, бит должен быть равен 0 11 - драйвер поддерживает 32-битовую адресацию сектора (для версий DOS, начиная с 4.00 и более поздних); если установлен этот бит, п...
6 3 Процесс загрузки драйверов
6.3. Процесс загрузки драйверовСистемный файл DOS IO.SYS содержит некоторые драйверы устройств, составляющие базовую систему ввода/вывода. Эти драйверы появляются в памяти при загрузке операционно...
6 4 Связь драйвера с операционной системой
6.4. Связь драйвера с операционной системой Рассмотрим теперь более подробно механизм взаимодействия драйвера и операционной системы. После загрузки драйвер становится как бы частью операционной с...
Таблица 4
Таблица 4(0) 1sizeДлина запроса в байтах (длина заголовка запроса плюс длина переменной части запроса) (+1) 1unitНомер устройства (используется для блочных устройств, указывает, с каким именно уст...
Таблица 5
Таблица 5БитНазначение0-7Код ошибки устройства (если команда выполнена с ошибкой и драйвер установил признак ошибки (бит 15) в единицу, в это поле он должен записать код ошибки). 8Команда выполнен...
Таблица 6
Таблица 6КодОписание0Нарушение защиты от записи. Была предпринята попытка записи информации на защищенное от записи устройство. 1Неизвестное устройство.2Устройство не готово.3Этим примером мы заве...
6 Драйверы
6. Драйверы6.1. Интерфейс между программным обеспечением и аппаратурой6.2. Структура загружаемого драйвера6.3. Процесс загрузки драйверов6.4. Связь драйвера с операционной системой6.5. Функции заг...
6 1 Интерфейс между программным обеспечением и аппаратурой
6.1. Интерфейс между программным обеспечением и аппаратуройФирмы-разработчики аппаратного обеспечения постоянно совершенствуют внешние устройства и другие узлы персонального компьютера. Постоянно...
6 2 Структура загружаемого драйвера
6.2. Структура загружаемого драйвераДрайвер - это еще одна разновидность программ в дополнение к уже изученным нами программам формата COM и EXE. Иногда говорят, что драйверы - это разновидность C...
Таблица 1
Таблица 1(0) 4next указатель на заголовок следующего драйвера. Если смещение адреса следующего драйвера равно FFFF, это последний драйвер в цепочке (+4) 2attrib атрибуты драйвера(+6) 2strateg смещ...
Таблица 2
Таблица 2БитНазначение 01 - драйвер обслуживает стандартное устройство ввода; 0 - этот драйвер не обслуживает стандартное устройство ввода 11 - драйвер обслуживает стандартное устройство вывода; 0...
Таблица 3
Таблица 3БитНазначение0Зарезервировано, бит должен быть равен 0 11 - драйвер поддерживает 32-битовую адресацию сектора (для версий DOS, начиная с 4.00 и более поздних); если установлен этот бит, п...
6 3 Процесс загрузки драйверов
6.3. Процесс загрузки драйверовСистемный файл DOS IO.SYS содержит некоторые драйверы устройств, составляющие базовую систему ввода/вывода. Эти драйверы появляются в памяти при загрузке операционно...
6 4 Связь драйвера с операционной системой
6.4. Связь драйвера с операционной системой Рассмотрим теперь более подробно механизм взаимодействия драйвера и операционной системы. После загрузки драйвер становится как бы частью операционной с...
Таблица 4
Таблица 4(0) 1sizeДлина запроса в байтах (длина заголовка запроса плюс длина переменной части запроса) (+1) 1unitНомер устройства (используется для блочных устройств, указывает, с каким именно уст...
Таблица 5
Таблица 5БитНазначение0-7Код ошибки устройства (если команда выполнена с ошибкой и драйвер установил признак ошибки (бит 15) в единицу, в это поле он должен записать код ошибки). 8Команда выполнен...
Таблица 6
Таблица 6КодОписание0Нарушение защиты от записи. Была предпринята попытка записи информации на защищенное от записи устройство. 1Неизвестное устройство.2Устройство не готово.3Неизвестная команда....
6 5 Функции загружаемого драйвера
6.5. Функции загружаемого драйвераКак уже было сказано, номер функции, которую должен выполнить драйвер, передается операционной системой через поле cmd заголовка запроса. Рассмотрим отдельные фун...
# 0 Инициализация драйвера
Эта функция выполняется только один раз при загрузке драйвера и подключении его к операционной системе. Функция инициализации должна поддерживаться любым драйвером, так как она сообщает операционн...
Таблица 7
Таблица 7(0) 13headerЗаголовок запроса. (+13) 1n_unitsКоличество устройств, обслуживаемых драйвером. Это поле заполняется только блочным драйвером. (+14) 4end_addrКонечный FAR-адрес резидентной ча...
Таблица 8
Таблица 8(0) 2sect_sizКоличество байтов в одном секторе диска. (+2) 1clustsizКоличество секторов в одном кластере. (+3) 2res_sectКоличество зарезервированных секторов. (+5) 1fat_cntКоличество табл...
# 1 Проверка замены носителя данных
Эту команду DOS выдает драйверу, когда она хочет проверить, не произошла ли замена носителя данных, например, замена дискеты. Вообще говоря, довольно трудно определить, заменил ли оператор дискету...
Таблица 9
Таблица 9(0) 13headerЗаголовок запроса. (+13) 1mediaВ этом поле драйверу передается байт-описатель среды носителя данных, с которым DOS работала раньше. (+14) 1replyВ это поле драйвер должен помес...
Таблица 10
Таблица 100FFh2 стороны, 8 секторов на дорожку; 0FEh1 сторона, 8 секторов на дорожку; 0FDh2 стороны, 8 секторов на дорожку; 0FCh1 сторона, 9 секторов на дорожку; 0F9h2 стороны, 15 секторов на доро...
# 2 Построить блок BPB
Эта команда имеет смысл только для блочных устройств и вызывается после предыдущей команды, если произошла смена носителя данных. Драйвер должен возвратить адрес нового блока BPB. Формат запроса д...
Таблица 11
Таблица 11(0) 13headerЗаголовок запроса. (+13) 1mediaВ этом поле драйверу передается байт-описатель среды носителя данных, с которым DOS работала раньше. (+14) 4buf_adrАдрес буфера обмена. Содержи...
12 IOCTL запись 16 Вывод пока не занято
Все эти команды используются для чтения/записи информации из устройства или в устройство соответственно. Они имеют практически одинаковый формат запроса, поэтому мы их будем рассматривать вместе....
Таблица 12
Таблица 12(0) 13headerЗаголовок запроса. (+13) 1mediaВ этом поле драйверу передается байт-описатель среды носителя данных. (+14) 4buf_adrАдрес буфера для передачи данных. (+18) 2countКоличество пе...
# 5 Неразрушающее чтение без ожидания
Эта команда предназначена для выборки одного байта из буфера символьного устройства. Для блочных устройств эта команда не используется. Если в буфере символьного устройства есть байты, которые мог...
Таблица 13
Таблица 13(0) 13headerЗаголовок запроса. (+13) 1byteВ это поле драйвер записывает извлеченный из буфера байт, который будет считан по следующей команде ввода....
10 Проверить состояние устройства вывода
Эти команды проверяют состояние устройства ввода и устройства вывода соответственно (только символьные устройства). Для устройства ввода бит занятости слова состояния (бит 9) сбрасывается в ноль,...
11 Сброс буфера устройства вывода
Эти функции заставляют драйвер сбросить все текущие запросы на ввод/вывод. Сброс буфера входного устройства используется, например, для удаления всех символов из буфера клавиатуры. После выполнени...
14 Закрыть устройство
Для того чтобы драйвер мог использовать эти команды, бит 11 в слове атрибутов устройства в заголовке драйвера должен быть установлен в 1. Драйверы символьных устройств по этой команде могут посыла...
# 15 Проверка сменяемости диска
Эта команда используется только для тех драйверов, в слове атрибутов которых бит 11 установлен в 1. Драйвер должен сообщить DOS, возможна ли замена носителя данных. Например, замена жесткого диска...
# 19 Функции управления вводом/выводом (IOCTL)
Команда с кодом 19 предназначена для выполнения нескольких функций и поддерживается только теми драйверами, у которых в слове атрибутов устройства установлен в 1 бит поддержки IOCTL (бит 14). Эта...
Таблица 14
Таблица 14(0) 13headerЗаголовок запроса. (+13) 1functЭто поле содержит код функции команды общего IOCTL. (+14) 1subfuncКод подфункции для функции funct. (+15) 2si_regЗначение регистра SI при вызов...
24 Установить активное логическое устройство
Эти команды обрабатываются только теми драйверами, у которых в слове атрибутов установлен бит 6 - поддержка логических устройств. Команды используются в DOS версии 3.2 и в более поздних версиях. К...
Таблица 15
Таблица 15(0) 13headerЗаголовок запроса. (+13) 1unitКод логического устройства, которое должно стать активным при использовании команды 24, или код активного устройства, помещаемый драйвером по ко...
6 6 Функции управления устройствами ввода/вывода IOCTL
6.6. Функции управления устройствами ввода/вывода IOCTLВ этом разделе мы рассмотрим средства управления устройствами ввода/вывода IOCTL (сокращение от Input/Output Control). Использование IOCTL -...
Таблица 16
Таблица 16РегистрСодержаниеAH44hAL00hBXИндекс устройства (handle). Значение, которое операционная система возвращает при открытии файла или устройства и которое она затем использует для доступа к...
Таблица 17
Таблица 17РегистрСодержаниеCF0DXИнформация об устройстве Возврат с ошибкой:...
Таблица 18
Таблица 18РегистрСодержаниеCF1AX01h - запрошена несуществующая функция;06h - BX содержит несуществующий или неоткрытый handle. Функция возвращает в регистре DX информацию об устройстве, которая им...
Таблица 19
Таблица 19БитЗначение0Это устройство является стандартным устройством ввода. 1Стандартное устройство вывода. 2NUL-устройство.3Часы.4Специальное устройство.51 - двоичный режим работы; 0 - режим ASC...
Таблица 20
Таблица 20БитЗначение0-5Номер дисковода (0-А:, 1-В: и т.д.). 60 - Была запись в выходной файл. 71 - это слово информации относится к устройству (данный handle относится к устройству); 0 - слово ин...
Таблица 21
Таблица 21РегистрСодержаниеAH44hAL01hBXИндекс файла (handle)DH0DLУстанавливаемая информация (биты 0-7 слова информации об устройстве, описанного выше) Возврат без ошибки:...
Таблица 22
Таблица 22РегистрСодержаниеCF0Возврат с ошибкой:...
Таблица 23
Таблица 23РегистрСодержаниеCF1AX01h - запрошена несуществующая функция; 06h - BX содержит несуществующий handle. Эта подфункция позволяет устанавливать некоторые биты в слове информации об устройс...
Таблица 24
Таблица 24РегистрСодержаниеAH44hAL02h/03hBXИндекс (только для устройства, а не для файла) CXКоличество читаемых/записываемых байтов DS:DXУказатель на буфер, в который надо прочитать управляющую ин...
Таблица 25
Таблица 25РегистрСодержаниеCF0AXКоличество действительно прочитанных/записанных байтов Возврат с ошибкой:...
Таблица 26
Таблица 26РегистрСодержаниеCF1AX01h - запрошена несуществующая функция; 06h - BX содержит несуществующий индекс (handle). Эти подфункции позволяют прикладной программе обмениваться произвольной уп...
Таблица 27
Таблица 27РегистрСодержаниеAH44hAL04h/05hBLНомер дисковода (0 - текущий дисковод, 1 - дисковод А: и т.д.) CXКоличество читаемых/записываемых байтов DS:DXУказатель на буфер, в который надо прочитат...
Таблица 28
Таблица 28РегистрСодержаниеCF0AXКоличество действительно прочитанных/записанных байтов Возврат с ошибкой:...
Таблица 29
Таблица 29РегистрСодержаниеCF1AX01h - запрошена несуществующая функция; 05h - доступ к дисководу запрещен. Для использования этих подфункций драйвер должен поддерживать интерфейс IOCTL. Для провер...
Таблица 30
Таблица 30РегистрСодержаниеAH44hAL06h/07hBXИндекс (устройства или файла) Возврат без ошибки:...
Таблица 31
Таблица 31РегистрСодержаниеCF0ALДля устройства: 00h - устройство не готово к приему/передаче;0FFh - устройство готово к приему/передаче.Для файла:00h - достигнут конец файла;0FFh - конец файла не...
Таблица 32
Таблица 32РегистрСодержаниеCF1AX01h - запрошена несуществующая функция; 05h - доступ к дисководу запрещен;06h - BX содержит несуществующий индекс;0Dh - неправильные данные. Эти подфункции предназн...
Таблица 33
Таблица 33РегистрСодержаниеAH44hAL08hBLНомер дисковода (0 - текущий дисковод, 1 - дисковод А: и т.д.) Возврат без ошибки:...
Таблица 34
Таблица 34РегистрСодержаниеCF0AX00h - замена носителя возможна; 01h - носитель данных несменный Возврат с ошибкой:...
Таблица 35
Таблица 35РегистрСодержаниеCF1AX01h - запрошена несуществующая функция; 0Fh - неправильный идентификатор дисковода Эта подфункция проверяет возможность замены носителя данных. Дискета - заменяемый...
Таблица 36
Таблица 36РегистрСодержаниеAH44hAL09hBLНомер дисковода (0 - текущий дисковод, 1 - дисковод А: и т.д.) Возврат без ошибки:...
Таблица 37
Таблица 37РегистрСодержаниеCF0DXБиты атрибута устройства. Если блочное устройство является локальным (расположено на рабочей станции сети Microsoft Networks), бит 12 установлен в 0, остальные биты...
Таблица 38
Таблица 38РегистрСодержаниеCF1AX01h - запрошена несуществующая функция; 0Fh - неправильный идентификатор дисковода; Ошибка 01h может возникнуть, если не загружена команда SHARE. Используя эту подф...
Таблица 39
Таблица 39РегистрСодержаниеAH44hAL0AhBXИндекс (только для устройства, а не для файла) Возврат без ошибки:...
Таблица 40
Таблица 40РегистрСодержаниеCF0DXСлово атрибутов устройства, если бит 15 установлен в 1, это удаленное устройство, в противном случае устройство является локальным Возврат с ошибкой:...
Таблица 41
Таблица 41РегистрСодержаниеCF1AX01h - запрошена несуществующая функция; 06h - BX содержит несуществующий индекс. Ошибка 01h может возникнуть, если не загружена команда SHARE. Данная подфункция поз...
Таблица 42
Таблица 42РегистрСодержаниеAH44hAL0BhCXПродолжительность паузы (по умолчанию используется значение 1) DXЧисло повторов (по умолчанию равно 3) до вызова программы обработки прерывания 24h - прерыва...
Таблица 43
Таблица 43РегистрСодержаниеCF0Возврат с ошибкой:...
Таблица 44
Таблица 44РегистрСодержаниеCF1AX01h - запрошена несуществующая функция; Код ошибки 01h появляется, если задан недопустимый номер подфункции или не загружена команда SHARE. Операции, которые могут...


- Начало -