Цель: скопировать файл Материал: диск (CD-R) с царапиной Проблемма: При чтении (invoke Readfile ...) на царапине долго думает , а потом выдает ошибку №23 (017h), которую я обрабатываю. Вопрос: Как заставить систему (хотябы для данной сессии)уменьшить задержку и выдать ошибку сразу (ну или почти..), а не думать долго?
А в чем проблема, разве сильно сложно царапину убрать? Я когда-то шлифанул диск вручную, ваткой в какой-то болгарской зубной пасте не слишком образивной на основе оксида кремния(но не мела), диск после этого нормально прочитался. Только нужно шлифовать перпендикулярными к центру движениями и только исключительно место царапины =)
Для начала можно попробовать прочитать диск на других приводах (они могут отличаться оптикой, коррекцией ошибок и т.д., т.е. вероятность прочитать есть). Если не поможет можно попробовать воспользоваться готовыми программными решениями (но я не пробовал и порекомендовать ничего не могу). А лучше почитать у Криса Касперски статьи на эту тему (например здесь хттр://www.citforum.ru/hardware/cd/)
Повнимательнее посмотри на обратную сторону, где надписи если там есть поверхностные дефекты, то можешь попрощаться с диском... Царапина на пластике - ерунда. Царапина на металлизированом слое - "абзац"
Господа, вопрос был ни как диск считать, а как временнУю задержку уменьшить... Могу предположить: Вообще, это только железо даёт знать. То есть делаешь запрос с Overlapped и он тут же выпрыгивает с IO_PENDING. А потом происходит событие о прочтение. Так вот, при захвате этого события и устанавливается таймер.
У меня похожая проблема была. Так и не решил толком. Пытался убить поток, который асинхронно читал данные если он читал их слишком долго. Но TerminateThread хорошо убивает потоки, только если в этот момент поток не занят выполнением I/O... Поэтому получалось коряво. Еще CancelIO пробовал (опять же для асинхронного чтения). А Вы нашли какой-нибудь более подходящий способ?