Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прямое чтение с диска, дискеты или жесткого 
:(
    Опции темы
Fixin
Дата 29.7.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



В свое время сделал программульку, которая читает полудохлые дискеты. Основана она была на таких шагах:
  • достаем имя файла из FAT
  • получаем список кластеров, принадлежащих файлу
  • читаем по-кластерно файл в буфер чтения, иначе, если кластер дохлый, забиваем буфер чтения нулями
  • записываем буфер в выходной файл.
У этого метода есть существенный недостаток: дискета может быть сколь угодно дохлой, но главное, чтобы таблица размещения файлов была целой.

Теперь поясняю, что мне надо, хотя, это уже и так ясно: хочу читать с дискеты (дискета - основная цель)так, чтобы читалась и таблица, в каком бы состоянии она не была, и любые места диска.

Что я предполагаю: читать с диска все, включая кластер и информацию в нем о следующем кластере данного файла.
 
PM MAIL ICQ   Вверх
Doc_d0s
Дата 29.7.2006, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 15.12.2004
Где: в кресле

Репутация: нет
Всего: 3



и что мешает, адрес таблицы на диске постоянен, в зависимости от объема можно определить ее размер и вуаля) 
--------------------
Админ- это вождь Apache'й :)
PM MAIL ICQ   Вверх
Romikgy
Дата 29.7.2006, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



когда то и я хотел этим занять , да руки не дошли smile
вообщем имхо , есть возможность чтения с дискет плохих, на уровне Raw там игнорируются все ошибки при чтении, имхо если пару разпрочитать битое место, то можно маломальски востановить информацию
ЗЫ конешно если я тя правильно понял 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Fixin
Дата 30.7.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Цитата(Doc_d0s @  29.7.2006,  14:07 Найти цитируемый пост)
можно определить ее размер и вуаля) 
В том и дело, что предполагается отсутствие возможности прочтения таблицы. В этом случае, нужно читать кластеры вместе с информацией о следующем кластере, что не дается стандартными средствами винды. (но я еще не прочитал первую ссылку из "Здесь смотрели?")

Цитата(Romikgy @  29.7.2006,  20:18 Найти цитируемый пост)
если я тя правильно понял 
Вроде того, только мне это нужно, в основном, для восстановления простых текстовых файлов на дискетах, т. о. пропущенное место можно домыслить.
 
PM MAIL ICQ   Вверх
Romikgy
Дата 30.7.2006, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Цитата(Fixin @  30.7.2006,  12:44 Найти цитируемый пост)
но я еще не прочитал первую ссылку из "Здесь смотрели?")

прочитал? 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Fixin
Дата 30.7.2006, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Цитата(Romikgy @  30.7.2006,  15:21 Найти цитируемый пост)
прочитал? 
Там все тоже, что я использовал, кроме того, о чем говорил Ibragim и DeviceIOControl от chaos.
 
PM MAIL ICQ   Вверх
Romikgy
Дата 30.7.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



ну и че не подходит? 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Fixin
Дата 30.7.2006, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Цитата(Fixin @  29.7.2006,  13:01 Найти цитируемый пост)
У этого метода есть существенный недостаток: дискета может быть сколь угодно дохлой, но главное, чтобы таблица размещения файлов была целой

 
PM MAIL ICQ   Вверх
En_t_end
Дата 1.8.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Кстати... ведь каждый ide-№ имеет свой системный порт ? если так, то почему бы не воспользоваться in и out в ассемблерных вставках ? Насколько я понимаю... нужно почитать доки к флоппам и тогда дело останется за запросами к флоппу за новым байтом или словом с нужной позиции.
То есть, программа или драйвер не будет зависеть от конкретной файловой системы, насколько я понимаю, это возможно ? Или мы не сможем определить битый байт так ?
PS правда для NT-шек придется создавать драйвер режима ядра...
PM MAIL ICQ Skype GTalk Jabber   Вверх
Fixin
Дата 2.8.2006, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Цитата(En_t_end @  1.8.2006,  19:44 Найти цитируемый пост)
драйвер режима ядра...
 smile 
Цитата(En_t_end @  1.8.2006,  19:44 Найти цитируемый пост)
 в ассемблерных вставках
 smile  smile
En_t_end, дружище, нового ты ничего не сказал, но, возможно, помог выразить мои мысли smile Я искал что-то среднее, между драйвером и юзер-модным режимом доступа, думаю, что-то должно быть...
PM MAIL ICQ   Вверх
Mad
Дата 2.8.2006, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 2
Всего: 19



Цитата(Fixin @  29.7.2006,  12:01 Найти цитируемый пост)
читать с диска все, включая кластер и информацию в нем о следующем кластере данного файла.

Насколько я помню, фат не содержит информации о следующем блоке (кластере), это уже древовидные файловые сситеммы (ex?, ntfs) ?


--------------------
user posted image
PM MAIL   Вверх
En_t_end
Дата 2.8.2006, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Fixin
Цитата(Fixin @  2.8.2006,  04:05 Найти цитируемый пост)
Я искал что-то среднее, между драйвером и юзер-модным режимом доступа

А что тебе стоит создать драйвер и написать приложение с юзер-модным доступом на си, которое будет работать через интерфейс драйвера ?
ЗЫ не думаю, что WinApi позволяет напрямую использовать i/o-ports, скорее даже уверен в обратном. Порты - критические ресурсы, не зря их прикрыли для юзер-модных прилаг в NT-шках.

Добавлено @ 06:19 
Fixin
Цитата(Fixin @  2.8.2006,  04:05 Найти цитируемый пост)
драйвер режима ядра...    
Цитата(En_t_end @  1.8.2006,  19:44 )    
 в ассемблерных вставках

Хм... тут я увидел твои эмоции по поводу драйвера режима ядра и ассеблерных вставок...я не связывал воедино эти две цитаты, это у тебя так страшно их процитировать получилось smile

PM MAIL ICQ Skype GTalk Jabber   Вверх
Fixin
Дата 2.8.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Цитата(Mad @  2.8.2006,  01:06 Найти цитируемый пост)
Насколько я помню, фат не содержит информации о следующем блоке
Еще вспомнил, проблемы старого способа: 1) при чтении с дискеты, чтобы попасть на тот файл, который хочу читать, нужно было использовать какой-то сдвиг (кажется 0х4000Н) при чтении кластера, откуда взялся этот сдвиг - хз, я его просто подобрал. 2) сделав "образ" дискеты, т.е. прочитав все 1,44 мб, при попытке записать это все на другую дискету - не хватает места, т.о. я сделал вывод, что при чтении теряется какая-то информация, которая существует на дискете помимо того, что я смог прочитать. Вечером притащу код тестовой проги.

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0941 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.