Аннотация:
Кто не мечтает о быстром CD-ROM? Быстрый CD-ROM – это хорошо… с одной стороны. А если на компакт-диске появилась трещина? Быстрый CD-ROM – это уже не хорошо. На скорости 52 такой компакт-диск читать просто опасно. А если на этом диске жизненно важные данные? Выход есть. Просто снизить скорость привода. Если вы знакомы с языком программирования Object Pascal, тогда читайте далее.
АФ>Авторы: АФ> Алексей Фоминов
АФ>Аннотация: АФ>Кто не мечтает о быстром CD-ROM? Быстрый CD-ROM – это хорошо… с одной стороны. А если на компакт-диске появилась трещина? Быстрый CD-ROM – это уже не хорошо. На скорости 52 такой компакт-диск читать просто опасно. А если на этом диске жизненно важные данные? Выход есть. Просто снизить скорость привода. Если вы знакомы с языком программирования Object Pascal, тогда читайте далее.
Забавная статья.
Некоторые предложения:
1) Под Windows NT существует на самом деле еще один интерфейс для CD/DVD устройств — это DeviceIoCtrl. Большинство функций SPTI можно реализовать и через него. Хотя можно обойтись и одним SPTI, но работать с DeviceIo приятнее на порядок
2) Поскольку и SPTI и ASPI это SCSI интерфейсы существует веьмва элегантный способ транслировать вызовы ASPI в SPTI и наоборот простой перупаковкой параметров. Исходников на C++ достаточно много где это проделывается Поэтому поддержание 2-х интерфейсов совсем не так обременительно
Здесь я сделаю небольшое пояснение относительно размера буфера. Данные, возвращаемые при использовании страницы режима CD Capabilities and Mechanical Status Page, имеют размер 20 байт. Но, как вы заметили, я использовал буфер размером 30 байт, и вот почему. Перед самой страницей режима, идут заголовок режима параметров, код страницы и её размер. Размер заголовка при использовании шестибайтной команды MODE SENSE составляет 4 байта, а при использовании команды MODE SENSE(10) – 8 байт.
Это не так.Судя по спецификации, размер MM Capabilities and Mechanical Status Page, равен минимум 32 байтам, + еще возможные блоки Logical Unit Write Speed Performance Descriptor
2. Поля speedxxx, находящиеся по указанным смещениям, отражены в спецификации даже в MMC3 как obsolete. Об этом следовало бы хотя бы упомянуть — они совсем не обязательно должны содержать валидные данные.
3.
// почему сумма байт делится на 176? 176 – это скорость передачи
// данных, равная одному килобайту в секунду.
Супер . Вообще, это скорость передачи * 1000 байт в секунду (как мы помним, 1 скорость CD = 44100*4). Посему, поделив это значение на 176, мы получаем значение скорости в "CD" попугаях.
AS>Здесь я сделаю небольшое пояснение относительно размера буфера. Данные, возвращаемые при использовании страницы режима CD Capabilities and Mechanical Status Page, имеют размер 20 байт. Но, как вы заметили, я использовал буфер размером 30 байт, и вот почему. Перед самой страницей режима, идут заголовок режима параметров, код страницы и её размер. Размер заголовка при использовании шестибайтной команды MODE SENSE составляет 4 байта, а при использовании команды MODE SENSE(10) – 8 байт.
AS>Это не так.Судя по спецификации, размер MM Capabilities and Mechanical Status Page, равен минимум 32 байтам, + еще возможные блоки Logical Unit Write Speed Performance Descriptor
AS>2. Поля speedxxx, находящиеся по указанным смещениям, отражены в спецификации даже в MMC3 как obsolete. Об этом следовало бы хотя бы упомянуть — они совсем не обязательно должны содержать валидные данные.
AS>3. AS>
AS> // почему сумма байт делится на 176? 176 – это скорость передачи
AS> // данных, равная одному килобайту в секунду.
AS>Супер . Вообще, это скорость передачи * 1000 байт в секунду (как мы помним, 1 скорость CD = 44100*4). Посему, поделив это значение на 176, мы получаем значение скорости в "CD" попугаях.
Ответ по поводу размера страницы CD Capabilities and Mechanical Status Page:
Скачайте стандарт SCSI-3 Multimedia Commands с сайта t10.org откройте страницу 79 таблица 103 второй байт: "Page Length (14h)".
По поводу полей speedxxx: та же спецификация страницы с 79 по 82 ничего насчёт obsolete.
По поводу скорости передачи данных полностью согласен — моя грубая ошибка.
Re[2]: Укрощение строптивого… CD-ROM
От:
Аноним
Дата:
21.05.06 06:48
Оценка:
Здравствуйте, spiritual, Вы писали:
S>Здравствуйте, Алексей Фоминов, Вы писали:
АФ>>Статья: АФ>>Укрощение строптивого… CD-ROM
АФ>>Авторы: АФ>> Алексей Фоминов
АФ>>Аннотация: АФ>>Кто не мечтает о быстром CD-ROM? Быстрый CD-ROM – это хорошо… с одной стороны. А если на компакт-диске появилась трещина? Быстрый CD-ROM – это уже не хорошо. На скорости 52 такой компакт-диск читать просто опасно. А если на этом диске жизненно важные данные? Выход есть. Просто снизить скорость привода. Если вы знакомы с языком программирования Object Pascal, тогда читайте далее.
S>Забавная статья. S>Некоторые предложения: S>1) Под Windows NT существует на самом деле еще один интерфейс для CD/DVD устройств — это DeviceIoCtrl. Большинство функций SPTI можно реализовать и через него. Хотя можно обойтись и одним SPTI, но работать с DeviceIo приятнее на порядок S>2) Поскольку и SPTI и ASPI это SCSI интерфейсы существует веьмва элегантный способ транслировать вызовы ASPI в SPTI и наоборот простой перупаковкой параметров. Исходников на C++ достаточно много где это проделывается Поэтому поддержание 2-х интерфейсов совсем не так обременительно
Ответ по цитате:
Существует, только это интерфейс не только для CD/DVD устройств, а почти для всех устройств. Работать с DeviceIo приятней наверное для других устройств, вряд ли б многие разработчики использовали ASPI или SPTI, если б с DeviceIo было работать приятнее. И врядли работать с CD-приводами посредством DeviceIo приятнее в Windows 9x.
А>Ответ по поводу размера страницы CD Capabilities and Mechanical Status Page: А>Скачайте стандарт SCSI-3 Multimedia Commands с сайта t10.org откройте страницу 79 таблица 103 второй байт: "Page Length (14h)".
Я и говорю про MMC3 — давайте уж использовать устоявшиеся сокращения Скачайте MMC3 с того же t10.org и посмотрите CD Capabilities and Mechanical Status Page — TABLE 361. Аналогично и для MMC4\5.
Table 361 – CD/DVD Capabilities and Mechanical Status Page
Bit
Byte 7 6 5 43 2 1 0
0 PS Reserved Page Code (2Ah)
1 Page Length (28+4*(maximum number of n))
А>По поводу полей speedxxx: та же спецификация страницы с 79 по 82 ничего насчёт obsolete.
Здравствуйте, Andrew S, Вы писали:
А>>Ответ по поводу размера страницы CD Capabilities and Mechanical Status Page: А>>Скачайте стандарт SCSI-3 Multimedia Commands с сайта t10.org откройте страницу 79 таблица 103 второй байт: "Page Length (14h)".
AS>Я и говорю про MMC3 — давайте уж использовать устоявшиеся сокращения Скачайте MMC3 с того же t10.org и посмотрите CD Capabilities and Mechanical Status Page — TABLE 361. Аналогично и для MMC4\5.
AS>
AS>Table 361 – CD/DVD Capabilities and Mechanical Status Page
AS>Bit
AS>Byte
AS>7 6 5 43 2 1 0
AS>0 PS Reserved Page Code (2Ah)
AS>1 Page Length (28+4*(maximum number of n))
А>>По поводу полей speedxxx: та же спецификация страницы с 79 по 82 ничего насчёт obsolete.
AS>Аналогично.
А у Вас какая версия ММС3? У меня — 10А, и в ней последняя таблица с №174. Таблицы 361 у меня и в помине нет. Сообщите пожалуйста вашу версию.
И ещё просьба к Вам, можете ли Вы мне выслать номер журнала с моей статьёй за отдельную плату?
Заранее благодарен.
С уважением Алексей Фоминов.
А>Существует, только это интерфейс не только для CD/DVD устройств, а почти для всех устройств. Работать с DeviceIo приятней наверное для других устройств, вряд ли б многие разработчики использовали ASPI или SPTI, если б с DeviceIo было работать приятнее. И врядли работать с CD-приводами посредством DeviceIo приятнее в Windows 9x.
Потому и мучаются — ну нет в windows 9x DeviceIoctrl. Вот и пишут на связке ASPI/SPTI
Но сейчас, когда Windows умерла — использование DeviceIoctrl не возбраняется
На самом деле SPTI тоже через вызовы DeviceIoCtrl сделана с кодом IOCTRL_SCSI_PASSTHROUGH_WITH_BUFFERS.
DeviceIoCtrl — это прямой интерфейс к драйверу любого устройства. Необходимы привилегии админа только
Прямые вызовы DeviceIoctrl делаются с готовыми кодами типа IOCTRL_CDROM_READ_TOC и т.п.
Но MS не опубликовала все необходимые для счастья коды в MSDN
А лазить по Windows Device Driver Kit (DDK) удовольствие ниже среднего,
Да его и еще и иметь надо. Зато результат получается не сравнимый ни с чем