logo search
несколько программ / bsp33

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

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

// Код функции 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

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