Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
54
Добавлен:
03.06.2014
Размер:
2.63 Mб
Скачать

Получить информацию об идентификаторе блока emb

Регистры на входе:

AH = 0Eh

DX = идентификатор блока EMB

Регистры на выходе:

AX = 0001h - если функция выполнена успешно, 0000h - если произошла ошибка;

BH = содержимое счетчика блокировок EMB;

BL = количество свободных идентификаторов блоков EMB в системе;

DX = размер блока, Кбайт

Ошибки:

BL = 80h, 81h, A2h

Эта функция используется для получения различной информации об используемых блоках EMB. Линейный адрес блока может быть получен с помощью фунции 0Ch.

Изменить размер emb

Регистры на входе:

AH = 0Fh

DX = идентификатор блока EMB;

BX = новый размер EMB, Кбайт

Регистры на выходе:

AX = 0001h - если функция выполнена успешно, 0000h - если произошла ошибка

Ошибки:

BL = 80h, 81h, A0h, A1h, A2h, ABh

Функция изменяет размер незаблокированного EMB. Если размер блока уменьшается, данные в старших адресах блока будут потеряны.

Запросить область umb

Регистры на входе:

AH = 10h

DX = размер запрашиваемого блока UMB в параграфах

Регистры на выходе:

AX = 0001h - если функция выполнена успешно, 0000h - если произошла ошибка;

BX = сегмент полученного UMB;

DX = размер полученного блока или размер максимального свободного блока UMB (если невозможно выделить блок требуемого размера)

Ошибки:

BL = 80h, B0h, B1h

Эта функция позволяет программе получить дступ к блокам UMB, лежащих в пределах первого мегабайта адресного пространства. Для использования этих блоков не требуется управлять линией A20.

Если вам надо определить размер доступной области UMB, задайте при вызове этой функции DX=0FFFFh.

Освободить область umb

Регистры на входе:

AH = 11h

DX = сегмент освобождаемого UMB

Регистры на выходе:

AX = 0001h - если функция выполнена успешно, 0000h - если произошла ошибка

Ошибки:

BL = 80h, B2h

После освобождения блока EMB данные, которые там находились, будут потеряны.

Коды ошибок

Приведем таблицу кодов ошибок, возвращаемых функциями в регистре BL:

Код

Ошибка

00h

Нет ошибки, нормальное завершение

80h

Функция не реализована в текущей версии драйвера

81h

Обнаружен драйвер VDISK.SYS, с этим драйвером драйвер HIMEM.SYS несовместим

82h

Ошибка при работе с линией A20

8Eh

Общая ошибка драйвера

8Fh

Катастрофическая ошибка драйвера

90h

Область HMA не существует

91h

Область HMA уже используется

92h

Содержимое регитра DX меньше парметра /HMAMIN=

93h

Область HMA не распределена программе

94h

Линия A20 все еще разблокирована

A0h

Вся расширенная память уже распределена

A1h

Больше нет свободных индексов EMB

A2h

Неправильный индекс EMB

A3h

Неправильный SourceHandle

A4h

Неправильный SourceOffset

A5h

Неправильный DestHandle

A6h

Неправильный DestOffset

A7h

Неправильный Length

A8h

Неразрешенное перекрытие данных при выполнении операции пересылки данных

A9h

Произошла ошибка четности

AAh

EMB не заблокирован

ABh

EMB заблокирован

ACh

Переполнение счетчика блокировок EMB

ADh

Не удалось выполнить блокировку EMB

B0h

Доступен UMB меньшего размера

B1h

Нет доступных блоков UMB

B2h

Задан неправильный сегмент UMB

Соседние файлы в папке несколько программ