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

Сброс устройства чтения cd-rom

// ---------------

// Код функции 2

// ---------------

#pragma pack(1)

typedef struct _ResetDrive

{

BYTEbFunctionCode;

} ResetDrive;

Поле

Описание

bFunctionCode

Код функции

Управление звуковыми каналами

// ---------------

// Код функции 3

// ---------------

#pragma pack(1)

typedef struct _ChanControl

{

BYTEbFunctionCode;

BYTEbInpChannel0;

BYTEbVolControl0;

BYTEbInpChannel1;

BYTEbVolControl1;

BYTEbInpChannel2;

BYTEbVolControl2;

BYTEbInpChannel3;

BYTEbVolControl3;

} ChanControl;

Поле

Описание

bFunctionCode

Код функции

bInpChannel0

Номер входного канала, присвоенного выходному каналу 0

bVolControl0

Уровень громкости для канала 0

bInpChannel1

Номер входного канала, присвоенного выходному каналу 1

bVolControl1

Уровень громкости для канала 1

bInpChannel2

Номер входного канала, присвоенного выходному каналу 2

bVolControl2

Уровень громкости для канала 2

bInpChannel3

Номер входного канала, присвоенного выходному каналу 3

bVolControl3

Уровень громкости для канала 3

Запись в устройство управляющей строки

// ---------------

// Код функции 4

// ---------------

#pragma pack(1)

typedef struct _DriveControlBytes

{

BYTEbFunctionCode;

BYTEbWriteBuff[...]; // размер зависит от устройства

} DriveControlBytes;

Поле

Описание

bFunctionCode

Код функции

bWriteBuff

Буфер с управляющими данными, которые будут записаныв устройство чтения CD-ROM. Формат зависит от типа устройства

Закрывание приемного устройства для компакт-диска

// ---------------

// Код функции 5

// ---------------

#pragma pack(1)

typedef struct _CloseTray

{

BYTEbFunctionCode;

} CloseTray;

Поле

Описание

bFunctionCode

Код функции

Открывание устройства

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

Формат заголовка запроса:

// ---------------

// Код команды 13

// ---------------

#pragma pack(1)

typedef struct _RsumePlay

{

ReqHdr rh;

} RsumePlay;

Заполнение полей заголовка запроса:

Поле

Описание

rh.wStatus

После вызова драйвера содержит слово состояния

Закрывание устройства

Команда закрывает устройство чтения CD-ROM, открытое предыдущей командой.

Формат заголовка запроса:

// ---------------

// Код команды 14

// ---------------

#pragma pack(1)

typedef struct _RsumePlay

{

ReqHdr rh;

} RsumePlay;

Заполнение полей заголовка запроса:

Поле

Описание

rh.wStatus

После вызова драйвера содержит слово состояния

Чтение длинное

При помощи команды длинного чтения программа может прочитать полное содержимое сектора компакт-диска, включая служебные области сектора.

Формат заголовка запроса:

// ---------------

// Код команды 128

// ---------------

#pragma pack(1)

typedef struct _ReadLong

{

ReqHdr rh;

BYTE bAddressMode;

DWORD lpTransferAddress;

WORD wDataSize;

WORD wStartSector;

BYTE bDataReadMode;

BYTE bInterleaveSise;

BYTE bInterleaveSkip;

} ReadLong;

Заполнение полей заголовка запроса:

Поле

Описание

rh.wStatus

После вызова драйвера содержит слово состояния

bAddressMode

Режим адресации:

0 – режим HSG (по умолчанию);

1 –режимReadbook;

2-255 – зарезервировано

lpTransferAddress

Адрес буфера

wDataSize

Размер буфера

wStartSector

Номер начального сектора, должен быть равен нулю

bDataReadMode

Режим чтения данных:

0 – режим Cooked;

1 – режимRaw;

2-255 – зарезервировано

bInterleaveSize

Количество блоков или секторов, которые записаны последовательно друг за другом

bInterleaveSkip

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

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