// ---------------
// Код функции 6
// ---------------
#pragma pack(1)
typedef struct _DeviceStatus
{
BYTE bFunctionCode;
DWORD dwDeviceParameters;
} DeviceStatus;
Поле |
Описание |
bFunctionCode |
Код функции |
dwDeviceParameters |
32-разрядное слово состояния устройства |
Описания отдельных бит слова состояния приведено ниже:
Бит |
Описание |
0 |
1 – устройство открыто, в него можно вставлять диск; 0 – устройство закрыто |
1 |
0 – устройство заблокировано, из него нельзя извлечь диск; 1 – устройство разблокировано |
2 |
0 – устройство может работать только в режиме Cooked Reading; 1 – дополнительно может использоваться режим Raw Reading |
3 |
0 – устройстов может только читать компакт-диски; 1 – устройство может читать и записывать компакт-диски |
4 |
0 – устройство может работать только с дорожками, содержащими данные: 1 – дополнительно устройство может проигрывать звуковые дорожки или дорожки с видео |
5 |
0 – устройство не способно работать с чередованием данных; 1 – устройство работает с чередованием данных в стандарте ISO?9660 |
6 |
Зарезервировано |
7 |
0 – предварительная выборка не применяется; 1 – устройство способно выполнять запросы на предварительную выборку |
8 |
0 – устройство не работает со звуковыми каналами; 1 – устройство может работать со звуковыми каналами |
9 |
0 – устройство может работать в режиме адресации HSG; 1 – дополнительно можно использовать режим адресации Redbook |
10 |
Зарезервировано |
11 |
0 – в устройстве находится компакт-диск; 1 – в устройстве нет компакт-диска |
12 |
0 – устрйство не работает с подканалами R-W; 1 – указанные каналы используются |
13-31 |
Зарезервировано и равно нулю |
Немного о режимах Cooked и Raw.
По умолчанию устройство чтения CD-ROM работает в режиме Cooked. Этот режим предполагает аппаратную обработку циклической контрольной суммы. Размер блока данных равен 2048 байт.
В режиме Raw драйвер возвращает 2352 байта данных, в которые входят заголовок блока данных и контрольная сумма.