@aldexnotproger

Как работать с секторами носителя напрямую в C?

Мне стало интересно, как я могу получить доступ к ячейкам памяти жесткого диска или другого носителя, например, USB flash накопителя с помощью языка C, что-то вроде "0xffffff = a".
Я уже минут 30 копаюсь в интернете и ничего пока не нашел. Как-то же пишут низкоуровневые программы для восстановления файлов, например.

Я понимаю, что во многом еще ничего не понимаю, но думаю, что у вас есть хоть какое-то понимание вопроса.
  • Вопрос задан
  • 218 просмотров
Решения вопроса 4
@pfg21
ex-турист
читать и писать напрямую в /dev/sd* и иже с ними :) глубже смысла большого нет.
дальше начинается драйверные заморочки, которые могут быть уникальны для каждого носителя.
плюс все равно напрямую к "железным" секторам все равно доступ не получишь. сейчас даже в носителе есть прослойка абстракции от железа. через нее, к примеру, перемапливают сбойные сектора в винчестерах или распыляют нагрузку записи по разным ячейкам в флешках и т.д. и т.п.
пишут ребята, которые упорно изучали низкоуровненвые операции в течении долгих лет, которые закупали документацию у производителей, которые нарабатывали кучу опыта из прикладных проблем, которые убили кучу железа в экспериментальных тестах и т.д. и т.п.
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
В общем то все абстракция. Причём ос это не первый уровень. Вы отсылаете сигнал и драйвер что то делает или не делает. Формально вы можете нырнуть чуть ниже ос, но контроллер может это принять или нет.
Ответ написан
Комментировать
@lonelymyp
Хочу вылезти из минуса по карме.
Если коротко, то никак.
Стоит подробней описать задачу, что именно хочется писать на диск из за чего возникло аткое желание.
Ответ написан
@kisaa
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы