DOS API - DOS API

DOS API является API , который произошел с 86-DOS и используется в MS-DOS / PC DOS и других DOS совместимых операционных систем. Большинство вызовов DOS API вызываются с использованием программного прерывания 21h ( INT 21h). Вызывая INT 21h с номером подфункции в регистре процессора AH и другими параметрами в других регистрах, можно вызывать различные службы DOS. К ним относятся обработка ввода с клавиатуры, вывода видео, доступ к файлам на диске, выполнение программы, выделение памяти и различные другие действия. В конце 1980-х расширители DOS вместе с интерфейсом защищенного режима DOS (DPMI) позволяли программам работать в 16-битном или 32-битном защищенном режиме и при этом иметь доступ к DOS API.

История DOS API

Оригинальный DOS API в 86-DOS и MS-DOS 1.0 был разработан , чтобы быть функционально совместимы с CP / M . Доступ к файлам осуществлялся с помощью блоков управления файлами (FCB). DOS API был значительно расширен в MS-DOS 2.0 за счет нескольких концепций Unix, включая доступ к файлам с использованием файловых дескрипторов , иерархических каталогов и управления вводом-выводом устройства. В DOS 3.1 была добавлена ​​поддержка сетевого перенаправителя . В MS-DOS 3.31 функции INT 25h / 26h были расширены для поддержки жестких дисков размером более 32 МБ. В MS-DOS 5 добавлена ​​поддержка использования блоков старшей памяти (UMB). После MS-DOS 5 API DOS не изменился для последующих автономных выпусков DOS.

DOS API и Windows

В Windows 9x DOS загружала систему с защищенным режимом и графическую оболочку. Доступ к DOS обычно осуществлялся с виртуальной машины DOS (VDM), но также можно было загрузить непосредственно в MS-DOS 7.0 в реальном режиме без загрузки Windows. DOS API был расширен за счет расширенной поддержки интернационализации и поддержки длинных имен файлов , хотя поддержка длинных имен файлов была доступна только в VDM. В Windows 95 OSR2 DOS была обновлена ​​до версии 7.1, в которой была добавлена поддержка FAT32 , а в DOS API были добавлены функции для поддержки этого. Windows 98 и Windows ME также реализуют API MS-DOS 7.1, хотя Windows ME сообщает о себе как MS-DOS 8.0.

Windows NT и система , основанная на нем (например , Windows XP и Windows Vista ), не основаны на MS-DOS, но и использовать виртуальную машину , NTVDM , для обработки API DOS. NTVDM работает путем запуска программы DOS в виртуальном режиме 8086 (эмуляция реального режима в защищенном режиме, доступная на процессорах 80386 и выше). NTVDM поддерживает DOS 5.0 API. DOSEMU для Linux использует аналогичный подход.

Векторы прерывания, используемые DOS

Ниже приводится список векторов прерываний, используемых программами для вызова функций API DOS.

Вектор прерывания Описание Версия Примечания
20h Завершить программу 1.0+ Реализовано в ядре DOS
21h Основной DOS API 1.0+ Реализовано в ядре DOS
22h Адрес завершения программы 1.0+ Обратный адрес в вызывающей программе
23h Адрес обработчика Control-C 1.0+ Обработчик по умолчанию находится в командной оболочке (обычно COMMAND.COM)
24h Адрес обработчика критических ошибок 1.0+ Обработчик по умолчанию находится в командной оболочке (обычно COMMAND.COM)
25h Абсолютное чтение с диска 1.0+ Реализовано в ядре DOS, улучшено в DOS 3.31 для поддержки разделов размером до 2 ГБ
26h Абсолютная запись на диск 1.0+ Реализовано в ядре DOS, улучшено в DOS 3.31 для поддержки разделов размером до 2 ГБ
27h Прекратить и остаться резидентом 1.0+ Реализовано в COMMAND.COM в DOS 1.0, ядро ​​DOS в DOS 2.0+
28h Вызов простоя 2.0+ Вызывается ядром DOS при ожидании ввода
29h Быстрый вывод на консоль 2.0+ Реализуется встроенным драйвером устройства консоли или заменяющим драйвером, например ANSI.SYS.
2Ah Сеть и критический раздел 3.0+ Вызывается ядром DOS для взаимодействия с сетевым программным обеспечением
2Bh Неиспользованный
2Ch Неиспользованный
2Dh Неиспользованный
2Eh Перезагрузка переходная 2.0+ Реализовано в COMMAND.COM
2Fh Мультиплекс 3.0+ Реализуется в ядре DOS и различных программах (PRINT, MSCDEX, DOSKEY, APPEND и др.) В зависимости от номера подфункции

DOS INT 21h сервисы

Ниже приведен список функций, предоставляемых через вектор прерывания основного программного обеспечения DOS API.

AH Описание Версия
00h Завершить программу 1.0+
01h Ввод символов 1.0+
02h Вывод символов 1.0+
03h Дополнительный вход 1.0+
04h Вспомогательный выход 1.0+
05h Вывод на принтер 1.0+
06h Прямой ввод / вывод консоли 1.0+
07h Прямой консольный ввод без эха 1.0+
08h Консольный ввод без эха 1.0+
09h Показать строку 1.0+
0Ah Буферизованный ввод с клавиатуры 1.0+
0Bh Получить статус ввода 1.0+
0Ch Очистить входной буфер и вход 1.0+
0Dh Сброс диска 1.0+
0Eh Установить диск по умолчанию 1.0+
0Fh Открыть файл 1.0+
10h Закрыть файл 1.0+
11h Найти первый файл 1.0+
12h Найти следующий файл 1.0+
13h Удалить файл 1.0+
14h Последовательное чтение 1.0+
15h Последовательная запись 1.0+
16h Создать или обрезать файл 1.0+
17h Переименуйте файл 1.0+
18h Зарезервированный 1.0+
19h Получить диск по умолчанию 1.0+
1Ah Установить адрес передачи диска 1.0+
1Bh Получить информацию о выделении для диска по умолчанию 1.0+
1Ch Получить информацию о выделении для указанного диска 1.0+
1Dh Зарезервированный 1.0+
1Eh Зарезервированный 1.0+
1Fh Получить блок параметров диска для диска по умолчанию 1.0+
20h Зарезервированный 1.0+
21h Случайное чтение 1.0+
22h Случайная запись 1.0+
23h Получить размер файла в записях 1.0+
24h Установить случайный номер записи 1.0+
25h Установить вектор прерывания 1.0+
26h Создать PSP 1.0+
27h Случайное чтение блока 1.0+
28h Случайная запись блока 1.0+
29h Разобрать имя файла 1.0+
2Ah Получить дату 1.0+
2Bh Установить дату 1.0+
2Ch Получить время 1.0+
2Dh Установить время 1.0+
2Eh Установить флаг проверки 1.0+
2Fh Получить адрес переноса диска 2.0+
30h Получить версию для DOS 2.0+
31h Прекратить и остаться резидентом 2.0+
32h Получить блок параметров диска для указанного диска 2.0+
33h Получить или установить Ctrl-Break 2.0+
34h Получить указатель флага InDOS 2.0+
35h Получить вектор прерывания 2.0+
36h Получите свободное место на диске 2.0+
37h Получить или установить символ переключения 2.0+
38h Получить или установить информацию о стране 2.0+
39h Создать подкаталог 2.0+
3Ah Удалить подкаталог 2.0+
3Bh Изменить текущий каталог 2.0+
3Ch Создать или обрезать файл 2.0+
3Dh Открыть файл 2.0+
3Eh Закрыть файл 2.0+
3Fh Прочитать файл или устройство 2.0+
40h Записать файл или устройство 2.0+
41h Удалить файл 2.0+
42h Переместить указатель файла 2.0+
43h Получить или установить атрибуты файла 2.0+
44h Управление вводом / выводом для устройств 2.0+
45h Повторяющаяся ручка 2.0+
46h Дескриптор перенаправления 2.0+
47h Получить текущий каталог 2.0+
48h Выделить память 2.0+
49h Освободить память 2.0+
4Ah Перераспределить память 2.0+
4Bh Выполнить программу 2.0+
4Ch Завершить с кодом возврата 2.0+
4Dh Получить код возврата программы 2.0+
4Eh Найти первый файл 2.0+
4Fh Найти следующий файл 2.0+
50h Установить текущую PSP 2.0+
51h Получить текущую PSP 2.0+
52h Получить внутренние указатели DOS (SYSVARS) 2.0+
53h Создать блок параметров диска 2.0+
54h Получить флаг проверки 2.0+
55h Создать программу PSP 2.0+
56h Переименуйте файл 2.0+
57h Получить или установить дату и время файла 2.0+
58h Получить или установить стратегию распределения 2.11+
59h Получить расширенную информацию об ошибке 3.0+
5Ah Создать уникальный файл 3.0+
5Bh Создать новый файл 3.0+
5Ch Заблокировать или разблокировать файл 3.0+
5Dh Функции обмена файлами 3.0+
5Eh Сетевые функции 3.0+
5Fh Функции перенаправления сети 3.0+
60h Укажите имя файла 3.0+
61h Зарезервированный 3.0+
62h Получить текущую PSP 3.0+
63h Получить указатель таблицы старших байтов DBCS 3.0+
64h Установить флаг ожидания внешнего события 3.2+
65h Получить расширенную информацию о стране 3.3+
66h Получить или установить кодовую страницу 3.3+
67h Установить количество дескрипторов 3.3+
68h Зафиксировать файл 3.3+
69h Получить или установить идентификатор мультимедиа 4.0+
6Ah Зафиксировать файл 4.0+
6Bh Зарезервированный 4.0+
6Ch Расширенное открытие / создание файла 4.0+

Операционные системы с нативной поддержкой

Операционные системы со слоем эмуляции DOS

Другие эмуляторы

Смотрите также

Ссылки

дальнейшее чтение

  • Аллен, Пол ; Гейтс, Билл ; Король, Адриан; Ларсон, Крис; Летвин, Гордон ; О'Рир, Боб ; Патерсон, Тим ; Питерс, Крис; Филлипс, Брюс; Рейнольдс, Аарон ; Стиллмейкер, Бетти; Збиковски, Марк (1986). «Технические советники». MS-DOS (версии 1.0–3.2) Техническая справочная энциклопедия . Борнштейн, Ховард; Бредехофт, Лоуренс; Дункан, Рэй; Моррис, Кэрол; Роза, Дэвид; Соха, Джон ; Томлин, Джим; Виан, Кэтлин; Волвертон, Ван. Бели, Джим; Преппернау, Барри; Бисон, Пэм; Льюис, Андреа; Rygmyr, Дэвид (ред.). Справочная библиотека Microsoft. 1 (Оригинал изъят под ред.). Редмонд, Вашингтон, США: Microsoft Press . ISBN 0-914845-69-1. LCCN  86-8640 . OCLC  635600205 .(xvii + 1053 страницы; 29 см) (NB. Это оригинальное издание содержит блок-схемы внутренней работы системы. Оно было отозвано Microsoft до массового распространения в 1986 году, поскольку оно содержало множество фактических ошибок, а также некоторую секретную информацию, которая должна не были опубликованы. Сохранилось несколько печатных экземпляров. В 1988 г. он был заменен полностью переработанным изданием [1] ).
  • Збиковски, Марк ; Аллен, Пол ; Баллмер, Стив ; Борман, Рувим; Борман, Роб; Батлер, Джон; Кэрролл, Чак; Чемберлен, Марк; Челл, Дэвид; Коли, Майк; Кортни, Майк; Драйфус, Майк; Дункан, Рэйчел; Экхардт, Курт; Эванс, Эрик; Фермер, Рик; Гейтс, Билл ; Гири, Майкл; Гриффин, Боб; Хогарт, Дуг; Джонсон, Джеймс У .; Кермаани, Камель; Король, Адриан; Кох, Рид; Ландовски, Джеймс; Ларсон, Крис; Леннон, Томас; Липки, Дэн; Макдональд, Марк ; МакКинни, Брюс; Мартин, Паскаль; Мазерс, Эстель; Мэтьюз, Боб; Мелин, Дэвид; Mergentime, Чарльз; Невин, Рэнди; Ньюэлл, Дэн; Ньюэлл, Тани; Норрис, Дэвид; О'Лири, Майк; О'Рир, Боб ; Олссон, Майк; Остерман, Ларри; Остлинг, Ридж; Пай, Сунил; Патерсон, Тим ; Перес, Гэри; Питерс, Крис; Петцольд, Чарльз ; Поллок, Джон; Рейнольдс, Аарон ; Рубин, Дэррил; Райан, Ральф; Шульмейстер, Карл; Шах, Раджен; Шоу, Барри; Коротко, Энтони; Сливка, Бен; Смирл, Джон; Стиллмейкер, Бетти; Стоддард, Джон; Тиллман, Деннис; Уиттен, Грег; Юнт, Натали; Зек, Стив (1988). «Технические советники». Энциклопедия MS-DOS: версии с 1.0 по 3.2 . Дункан, Рэй; Боствик, Стив; Бургойн, Кейт; Байерс, Роберт А.; Хоган, Том; Кайл, Джим; Летвин, Гордон ; Петцольд, Чарльз ; Рабинович, Чип; Томлин, Джим; Уилтон, Ричард; Волвертон, Ван; Вонг, Уильям; Вудкок, Джоанна (Полностью переработанная ред.). Редмонд, Вашингтон, США: Microsoft Press . ISBN 1-55615-049-0. LCCN  87-21452 . OCLC  16581341 .(xix + 1570 страниц; 26 см) (NB. Это издание было опубликовано в 1988 году после обширной переработки отозванного первого издания 1986 года другой группой авторов. [2] )
  • Новое руководство программиста Питера Нортона по IBM PC & PS / 2 Питера Нортона и Ричарда Уилтона, Microsoft Press, 1987 ISBN  1-55615-131-4 .
  • Рэй Дункан (1988). Расширенный MS-DOS Программирование: Руководство Microsoft для ассемблере и C Программисты . Microsoft Press. ISBN 0914845772.
  • Справочник программиста для ПК Тома Хогана, Microsoft Press, 1991 ISBN  155615321X
  • Справочник программиста Microsoft MS-DOS - Официальный технический справочник по MS-DOS , Microsoft Press, 1993 ISBN  1556155468
  • Техническое обновление IBM PC DOS 7
  • Серия справочников разработчика OpenDOS - Руководство программиста OpenDOS - Руководство по системе и программисту . Caldera, Inc., август 1997 г. Деталь Caldera № 200-DOPG-003. Архивировано из оригинала на 2017-10-07 . Проверено 28 июня 2012 . (Отпечатано в Великобритании.)

внешние ссылки