This article includes a list of general references, but it lacks sufficient corresponding inline citations. (May 2015) |
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.
Первоначальный API DOS в 86-DOS и MS-DOS 1.0 был разработан для функциональной совместимости с CP/M . Доступ к файлам осуществлялся с помощью блоков управления файлами (FCB). API DOS был значительно расширен в MS-DOS 2.0 несколькими концепциями Unix , включая доступ к файлам с помощью дескрипторов файлов , иерархические каталоги и управление вводом-выводом устройств. [1] В DOS 3.1 была добавлена поддержка сетевого редиректора . В MS-DOS 3.31 функции INT 25h/26h были улучшены для поддержки жестких дисков объемом более 32 МБ. В MS-DOS 5 была добавлена поддержка использования верхних блоков памяти (UMB). После MS-DOS 5 API DOS оставался неизменным для последующих автономных выпусков DOS.
В Windows 9x DOS загружала систему защищенного режима и графическую оболочку. Обычно доступ к DOS осуществлялся с виртуальной машины DOS (VDM), но также можно было напрямую загрузиться в реальный режим MS-DOS 7.0 без загрузки Windows. API DOS был расширен за счет улучшенной поддержки интернационализации и поддержки длинных имен файлов , хотя поддержка длинных имен файлов была доступна только в VDM. С Windows 95 OSR2 DOS был обновлен до 7.1, что добавило поддержку FAT32 , и в API DOS были добавлены функции для ее поддержки. Windows 98 и Windows ME также реализуют API MS-DOS 7.1, хотя Windows ME сообщает о себе как о MS-DOS 8.0.
Windows NT и основанные на ней системы (например, Windows XP и Windows Vista ) не основаны на MS-DOS, а используют виртуальную машину NTVDM для обработки DOS API. NTVDM работает, запуская программу DOS в виртуальном режиме 8086 (эмуляция реального режима в защищенном режиме, доступная на процессорах 80386 и выше). NTVDM поддерживает DOS 5.0 API. DOSEMU для Linux использует аналогичный подход.
Ниже приведен список векторов прерываний, используемых программами для вызова функций API DOS.
Вектор прерывания | Описание | Версия | Примечания |
---|---|---|---|
20h | Завершить программу | 1.0+ | Реализовано в ядре DOS |
21h | Основной API DOS | 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 и т. д.) в зависимости от номера подфункции |
Ниже приведен список функций, предоставляемых через первичный вектор программного прерывания API DOS.
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+ |