Низкоуровневое програмирование Главная - Реальный режим - Прерывания DOS - INT 21h: Сервис DOS. - Функция 59h: Получить информацию о последней ошибке

Функция 59h: Получить информацию об последней ошибке.


Вход:
AH = 59h
BX = 0000h

Выход:
AX - Расширенный код ошибки
BH - Класс ошибка
BL - Рекомендуемое действие
CH - Источник ошибки
ES:DI указатель, для тех кодов ошибки, для которых необходимо

Примечание:
CL, DX, SI, BP, и DS могут быть изменены
Коды ошибок с номерами 01 - 12h унаследованны от класической схемы обработки ошибок, используемой в ранних версиях DOS
Возможные значения расширенного кода ошибки:
(это, безусловно, далеко не все возможные коды, однако здесь перечисленно, пожалуй, большая часть, и уж все частовстречаемые коды)
(Для програмного получения строки для ккода ошибки воспользуйтесь соответствующим сервисом прерывания 2Fh)
КодЗначение
00Нет ошибки
01Невеврный номер функции
02Файл не найден
03Путь не найден
04Нет доступного HANDLE (слишком много открытых файлов)
05Отказанно в доступе
06Неверный HANDLE
07MCB повреждён
08Недостаточно памяти
Применительно к печати может обозночать, что очередь печать заполнена
09Неверный адрес блока памяти
0AhНеверное окружение
0BhНеверный формат
0ChНеверный код доступа
Применительно к файлам означает, что строка с полным именем фала слишком длинная
0DhНеверная дата или невереные данные - хрен поймёт этих англоязычных
0Ehрезерв
0FhНеверный диск
10hНельзя удалить текущую директорию
11hНе то же самое устройство
12hФайлов больше нет
13hДиск защищён от записи
14hЗадан неизвестный идентификатор устройства
15hУстройство не готово
16hНеизвестная команда
17hОшибка данных (Ошибка CRC)
18hНеверный размер структуры
19hОшибка поиска
1AhНеизвестный тип диска
1BhСектор не найден
1ChНет бумаги в принтере
1DhОшибка записи
1EhОшибка чтения
1FhСбой
20hОшибка общего доступа
21hОшибка блокировки
22hНеправильная замена диска
23hFCB не доступен (слишком много FCB уже выделенно)
24hОбщий буфер (sharing buffer) переполнен
25hНеподходящая кодовая страница
26hНемогу завершить операцию с файлом
27hНедостаточно места на диске
28h - 31hРезерв
32hСетевой запрос не поддерживается
33hУдалённый (remote) компьютер нас не слушает
34hТакое сетевое имя уже существует
35hНе найдено сетевое имя
36hСеть занята
37hСетеве устройство больше не существует
38hnetwork BIOS command limit exceeded
39hАппаратная ошибка сетевого адаптера
3AhНеверный ответ из сети
3BhНеожиданная ошибка сети
3ChНа том конце провода несовместимый адаптер
3DhОчередь печать полная
3EhОчередь печать не полная
3FhНедостаточно места для печати
40hСетевое имя было удалено
41hСетевая ошибка доступа
42hНеверный тип сетевого адаптера/устройства
43hСетевое не найдено
44hnetwork name limit exceeded
45hnetwork BIOS session limit exceeded
46hВременно приостановленно
47hСетевой запрос отвергнут
48hСетевая печать или переадресация диска приостановленна
49hСетевое ПО не установленно
4AhНеожиданное закрытие адаптера
4Bh - 4FhРезерв
50hФайл уже существует
51hДубликат FCB
52hНемогу создать директорию
53hОшибка в INT 14h
54hСлишком много перенаправлений/нехватка структур
55hПеренаправление на этот адрес уже было
56hНеверный пароль
57hНеверный параметр
58hОшибка записи по сети
59hСеть не поддерживает эту функци./Нехватает процессорных слотов.
5AhНеобходимый компонент системы не установлен.
5BhОшибка тайм-сервера.
5СhДубликат в таблице сервиса таймера.
5DhНет элементов для обработки.
5EhНеизветно.
5FhПрервано/Неверный вызов системы.
60h - 63hНеивестно.
64hДостигнут лимит открытых Семафоров.
A0hНеверные аргументы.

Возможные значения класса ошибки:
КодЗначение
01Недостаточно ресурсов.
К примеру, места на диске.
02Временная ситуация.
К примеру, файл занят другим процессом
03Проблема прав доступа.
04Внутренняя ошибка системы.
05Ошибка обородования.
06Системный сбой.
07Ошибка приложения.
08Что-то не найдено.
09Неверный формат.
0AhЗаблокированно.
0BhОшибка носителя.
0ChКоллизия.
К примеру, такой файл уже существует
0DhИное.
0EhНе получается.
0FhВремя.

Возможные значения реккомендуемого действия:
КодЗначение
01hПопробовать заново.
02hПодождать и попробовать заново.
03hПопросить пользователя повторить ввод.
04hОтменить действие с откатом внесённых изменений.
05hНемедленно отменить действие.
06hИгнорировать.
07hПопробовать заново после того, как пользователь произведёт требуемые действия.
К примеру, вставит дискету.

Возможные значения Источника ошибки:
КодЗначение
01hНеизвестно.
02hБлочное устройство.
К примеру, ошибка диска
03hСетевая ошибка.
04hСимвольное устройство.
К примеру, принтер.
05hОперативная память.