Копирование файла с CD-ROM с сбойным сектором?

Тема в разделе "WASM.WIN32", создана пользователем leeloo, 18 янв 2005.

  1. leeloo

    leeloo New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2004
    Сообщения:
    31
    Цель: скопировать файл

    Материал: диск (CD-R) с царапиной



    Проблемма: При чтении (invoke Readfile ...) на царапине долго думает , а потом выдает ошибку №23 (017h), которую я обрабатываю.

    Вопрос: Как заставить систему (хотябы для данной сессии)уменьшить задержку и выдать ошибку сразу (ну или почти..), а не думать долго?
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    А в чем проблема, разве сильно сложно царапину убрать?

    Я когда-то шлифанул диск вручную, ваткой в какой-то болгарской зубной пасте не слишком образивной на основе оксида кремния(но не мела), диск после этого нормально прочитался.

    Только нужно шлифовать перпендикулярными к центру движениями и только исключительно место царапины =)
     
  3. const

    const New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2004
    Сообщения:
    121
    Для начала можно попробовать прочитать диск на других приводах (они могут отличаться оптикой, коррекцией ошибок и т.д., т.е. вероятность прочитать есть). Если не поможет можно попробовать воспользоваться готовыми программными решениями (но я не пробовал и порекомендовать ничего не могу). А лучше почитать у Криса Касперски статьи на эту тему (например здесь хттр://www.citforum.ru/hardware/cd/)
     
  4. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    Повнимательнее посмотри на обратную сторону, где надписи :) если там есть поверхностные дефекты, то можешь попрощаться с диском... Царапина на пластике - ерунда. Царапина на металлизированом слое - "абзац"
     
  5. Trashy

    Trashy New Member

    Публикаций:
    0
    Регистрация:
    24 дек 2004
    Сообщения:
    44
    Адрес:
    Russia
    Господа, вопрос был ни как диск считать, а как временнУю задержку уменьшить...

    Могу предположить:

    Вообще, это только железо даёт знать.

    То есть делаешь запрос с Overlapped и он тут же выпрыгивает с IO_PENDING. А потом происходит событие о прочтение. Так вот, при захвате этого события и устанавливается таймер.
     
  6. leeloo

    leeloo New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2004
    Сообщения:
    31
    Я что попал на какой-то хард-форум ?..



    To Trashy:



    Спасибо за совет - попробую.
     
  7. Nothing

    Nothing New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2003
    Сообщения:
    139
    Адрес:
    Russia
    У меня похожая проблема была. Так и не решил толком. Пытался убить поток, который асинхронно читал данные если он читал их слишком долго. Но TerminateThread хорошо убивает потоки, только если в этот момент поток не занят выполнением I/O... Поэтому получалось коряво.

    Еще CancelIO пробовал (опять же для асинхронного чтения).

    А Вы нашли какой-нибудь более подходящий способ?