Используя IOCTL_CDROM_READ_TOC_EX
, наивный способ вычислить точную длину дорожки на CD-ROM состоит в том, чтобы предположить, что звуковые дорожки имеют предварительный промежуток 2 секунды, а дорожка данных, за которой следует другой тип дорожки, имеет сообщение -пропуск 2 секунды.
Но, к сожалению, это не всегда так, например, многосессионные диски.
Поэтому я придумал следующее, чтобы вычислить точную длину для каждой дорожки:
- читать назад начало дорожки
- выдать команду
READ CD
для чтения Q подканала - , пока
INDEX
для текущего TNO
равно нулю, мы фактически находимся в зоне после | разрыва
Это работает, как и ожидалось, и мы можем определить промежутки для вычисления точной длины дорожки в секторах.
Однако немного удивительно, что эта топи c не описана в спецификациях мультимедийных команд SCSI!
Вопрос:
Это правильный подход для вычисления точной длины каждый трек на CD-ROM?