Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Аппаратное обеспечение персонального компьютера

© Александр Фролов, Григорий Фролов
Том 33, М.: Диалог-МИФИ, 1997, 304 стр.

[Назад] [Содеожание] [Дальше]

Функции MSCDEX

В этом разделе мы приведем краткое описание основных функций программного интерфейса расширения MSCDEX.EXE, доступные в среде MS-DOS.

Все функции расширения MSCDEX.EXE вызываются через мультиплексное прерывание INT 2Fh. При этом в регситр AH записывается значение 15h, а в регистр AL – код функции.

Определение количества устройств CD-ROM

Сегодня все большее количество компьютеров оснащается сразу несколькими устойствами чтения CD-ROM. С помощью функции 00h можно определить количество устройств чтения CD-ROM, имеющихся в системе, номер первого устройства CD-ROM, а также проверить, установлена ли программа MSCDEX:

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

AX = 1500h;

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

BX = количество устройств чтения CD-ROM, установленных в системе;

CX = номер первого устройства чтения CD-ROM. Значение 0 соответствует устройству A:, 1 – B: и так далее

Заметим, что буквенные обозначения устройств не обязательно должны идти последовательно, начинаясь со значения, которое функция 00h возвращает в регистре CX. Если вам нужно определить обозначения всех устройств чтения CD-ROM, следует воспользоваться функцией 150Dh, о которой мы расскажем ниже в этом разделе.

Получение списка устройств CD-ROM

С помощью функции 01h вы можете получить список структур CD_ROM_Driver_Desc, описывающих установленные устройства CD-ROM:

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

AX = 1501h;

ES:BX = адрес буфера, в который будет скопирован список устройств CD-ROM

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

Не используются

Первый байт такой структуры содержит номер устройства (unit nubmer), следом за которым идут четыре байта адреса заголовка драйвера, обслуживающего данное устройство:


typedef struct _CD_ROM_Driver_Desc
{
  unsigned char cSubUnit;
  unsigned long dwDevHeader;
} CD_ROM_Driver_Desc;

Перед вызовом этой функции необходимо подготовить буфер достаточного размера. Размер буфера нетрудно определить, узнав предварительно количество устройств CD-ROM, установленных в системе, с помощью функции 00h. Для каждого устройства в буфере требуется пять байт оперативной памяти.

Получение имени файла прав собственности

Функция 02h записывает в буфер имя файла, содержащего права собственности на компакт-диск, установленный в устройстве чтения CD-ROM:

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

AX = 1502h;

ES:BX = адрес буфера размером 38 байт

CX = номер устройства чтения CD-ROM

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

CY = 1 при ошибке в номере устройства чтения CD-ROM;

AX = код ошибки

Функция может вернуть в выходном буфере пустую строку, состоящую из одного нулевого байта.

Получение имени файла резюме

Функция 03h записывает в буфер имя файла, содержащего резюме компакт-диска, установленного в устройстве чтения CD-ROM:

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

AX = 1503h;

ES:BX = адрес буфера размером 38 байт

CX = номер устройства чтения CD-ROM

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

CY = 1 при ошибке в номере устройства чтения CD-ROM;

AX = код ошибки

Функция может вернуть в выходном буфере пустую строку, состоящую из одного нулевого байта.

Получение имени файла библиографической документации

Функция 04h записывает в буфер имя файла, содержащего библиографическую документацию компакт-диска, установленного в устройстве чтения CD-ROM:

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

AX = 1504h;

ES:BX = адрес буфера размером 38 байт

CX = номер устройства чтения CD-ROM

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

CY = 1 при ошибке в номере устройства чтения CD-ROM;

AX = код ошибки

Функция может вернуть в выходном буфере пустую строку, состоящую из одного нулевого байта.

Чтение сектора оглавления компакт-диска

При помощи функции 05h вы можете найти все оглавления тома Volume Descriptor:

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

AX = 1505h;

ES:BX = адрес буфера размером 2048 байт;

CX = номер устройства чтения CD-ROM;

DX = номер дескриптора тома (0 – первый, 1 – второй и так далее)

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

CY = 0, если не было ошибок. При этом содержимое регистра AX определяет тип прочитанного дескриптора:

AX= 1, стандартный дескриптор тома;

AX = 0FFh, завершающий дескриптор;

AX = 0, дескриптор другого типа;

CY = 1 при ошибке в номере устройства чтения CD-ROM. При этом регистр AX содержит код ошибки

Чтение сектора по абсолютному адресу

Функция 08h предназначена для прямого чтения секторов компакт-диска и напоминает прерывание INT 25h опреационной системы MS-DOS:

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

AX = 1508h;

ES:BX = адрес буфера, в который будут прочитаны данные;

CX = номер устройства чтения CD-ROM;

DX = количество секторов, которые нужно прочитать;

SI:DI = номер начального сектора

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

CY = 1 при ошибке в номере устройства чтения CD-ROM;

AL = код ошибки

Проверка устройства чтения CD-ROM

При помощи функции 0Bh вы можете проверить, является диск устройством чтения CD-ROM, доступ к которому возможен через функции MSCDEX:

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

AX = 150Bh;

CX = номер устройства чтения CD-ROM

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

BX = ADADh, если программа MSCDEX установлена;

AX = признак, является ли диск устройством чтения CD-ROM:

если содержимое AX не равно нулю, то диск – устройство CD-ROM;

если содержимое AX равно нулю, доступ к данному устройству с помощью функций MSCDEX невозможен

Определение версии MSCDEX

Функция 0Ch предназначена для определения версии установленной программы MSCDEX:

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

AX = 150Ch;

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

BH = старший номер верии MSCDEX;

BL = младший номер версии MSCDEX

Определение обозначения устройств чтения CD-ROM

При помощи функции 0Dh вы можете заполнить массив номерами установленных в системе устройств чтения CD-ROM:

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

AX = 150Dh;

ES:BX = адрес массива, в который будут записаны обозначения устройств CD-ROM

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

Не используются

Размер массива должен быть равен количеству установленных в системе устройств чтения CD-ROM, которое можно определить с помощью функции 00h.

Вызов драйвера CD-ROM

Функция 10h предназначена для прямого вызова драйвера устройства чтения CD-ROM:

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

AX = 1510h;

CX = номер устройства чтения CD-ROM;

ES:BX = адрес предварительно заполненного заголовка запроса драйвера

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

Не используются

Перед вызовом этой функции вы должны подготовить заголовок запроса.

Вызывая драйвер CD-ROM, вы можете выполнять такие операции, как проигрывание звуковых дорожек, извлечение компакт-диска, получение информации об устройстве, компакт-диске и дорожках и так далее.

[Назад] [Содеожание] [Дальше]