Вот у меня такая проблема: я написал маленькую программку, выдирающую все живые данные с поврежденного CD-диска. Фактически это просто read в цикле (read имеется ввиду из stdio.h); суть проблемы в том, что если на диске есть ошибка, идентифицирующаяся как "Cyclic redutantant data", то read сходит с ума: впадает в бесконечный цикл, пытаясь прочитать эти данные, но этого никогда не случается. Если диск вынуть, то всплывает виндовое окошечко с мессагой "insert disk" и кнопочками "cancel", "retry", "ignore". Все три действуют абсолютно одинаково: read продолжает попытки прочитать данные, окошко вылазит снова и т.д.
Вопрос собсна в следующем: как программно отловить и обработать "Cyclic redutantant data"?