![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Копирование битых файлов.
dracula © (2005-09-29 14:14:00)Может кто подскажет... делаю копирование битого файла с дискеты, казалось бы всё просто читаем файл, нечитаемые сектора заменяем нолями, но как програмно это дело сделать? не знаю. В каком направлении копать.. =( Может в винде есть флаги на установку количества раз чтения битого сектора, или чтоб вообще нафиг битые пропускал)... Если кто знает какю информацию по этому поводу помогите плз.
Игорь Шевченко (2005-10-12 17:37:00) [21]Vladimir88 (12.10.05 16:46) [23]
Это наверное зависит не от консольности, а от версии Windows ?
Vladimir88 (2005-10-12 16:46:00) [22]
> Игорь Шевченко © (12.10.05 16:42) [22]
>
> Не разрешает
У меня с COM-портами прокатывало, через обычные прерывания, как в досе :).
Игорь Шевченко (2005-10-12 16:42:00) [23]
> вроде как для консольных приложений винда разрешает прямое
> обращение к девайсам как в досе
Не разрешает
Vladimir88 (2005-10-12 16:26:00) [24]Может делать всё это в консольном приложении, вроде как для консольных приложений винда разрешает прямое обращение к девайсам как в досе :).
Erik1 (2005-10-12 11:44:00) [25]Насколько я помню есть команда обращения к драйверу DeviceIoControl, возможно стоит посмотреть в этом направлении.
Германн (2005-10-12 01:44:00) [26]
> Игорь Шевченко © (11.10.05 13:00) [9]
>
> Много раз читает драйвер флопа.
> Ему сказать нельзя вроде.
Странно это. Если в даже в ДОСе ему можно было сказать. Так с чего бы "зауживать" возможности ОС?
Игорь Шевченко (2005-10-11 23:59:00) [27]AlexWlad © (11.10.05 19:39) [17]
Драйвер - точно, насчет контроллера - не помню, врать не буду.
AlexWlad (2005-10-11 19:39:00) [28]
> Игорь Шевченко © (11.10.05 13:00) [9]
> "Винда" читает тоже один раз. Много раз читает драйвер флопа.
> Ему сказать нельзя вроде.
А может не драйвер, а контроллер?
dracula (2005-10-11 14:56:00) [29]Да я понял, что в досе... =(
Сейчас ищу под винду (должно же быть решение), а на счёт дельфы, так мне хоть на чём нибудь, а то совсем зацепится незачто. Если только свои дрова писать =), но до этого я не дорос пока (к сожалению).
Игорь Шевченко (2005-10-11 14:48:00) [30]dracula © (11.10.05 13:41) [10]
> Установка количества повторов при обращении к файлу (440Bh)
Это в ДОСе. Причем здесь Windows я не совсем понимаю. Тем более, причем здесь Delphi.
dracula (2005-10-11 13:51:00) [31]Да... так было бы проще, но для них мне тоже надо написать такую же функцию по вытаскиванию битых файлов. Просто я начал с самого лёгкого - это дискета, а там буду вносить поправки и переделывать на остальные типы носителей.
Starcom (2005-10-11 13:47:00) [32]dracula © (11.10.05 13:45) [12]
А ты неиспользуй тогда дискеты вообще, Flash, CD!
dracula (2005-10-11 13:45:00) [33]
> хочеш чтоб только твоя прога читала данные и никто боле!
Для этого есть решение намного проще.
Мне просто надо битые файлы вытаскивать с дискет, и не по пол часа ждать, а по быстрому =) всё просто.
Starcom (2005-10-11 13:42:00) [34]dracula © (29.09.05 14:14)
А зачем тебе сие А? хочеш чтоб только твоя прога читала данные и никто боле!
dracula (2005-10-11 13:41:00) [35]Да, точно... драйвер читает, и ему вроде как сказать можно =)
Установка количества повторов при обращении к файлу (440Bh)
Вызов:
Регистр Содержание
AH 44h
AL 0Bh
CX Продолжительность паузы (по умолчанию используется значение 1)
DX Число повторов (по умолчанию равно 3) до вызова программы обработки прерывания INT 24h (прерывания по критической ошибке ввода/вывода)
Выполнение без ошибки:
Регистр CF Содержание 0
Выполнение с ошибкой:
Регистр CF 1 Содержание AX 01h - запрошена несуществующая функция
Щас попробую... к дровам обратится
Игорь Шевченко (2005-10-11 13:00:00) [36]dracula © (11.10.05 12:29) [8]
"Винда" читает тоже один раз. Много раз читает драйвер флопа. Ему сказать нельзя вроде.
dracula (2005-10-11 12:29:00) [37]Ну это правильно, но винда читает больше, а как ей сказать чтоб она читала один =)
Игорь Шевченко (2005-10-11 12:18:00) [38]
> (сколько раз читать битый сектор после чего он считается
> битым)
Один
dracula (2005-10-11 12:13:00) [39]Grief © (29.09.05 16:58) [5]
советую сделать сначала длинный буфер, а при наличии сбоев его уменьшить.
Это уже всё сделано, всё работает, и файлы битые вытаскивает... Надо только уменьшить количество раз чтения битого сектора, вот на этом застрял, в винде наверняка есть флаги в которых это указываеться (сколько раз читать битый сектор после чего он считается битым)вот как это сделать? Я конечно сейчас в MSDN пороюсь, но может кто так знает...
Grief (2005-09-29 16:58:00) [40]советую сделать сначала длинный буфер, а при наличии сбоев его уменьшить.