Как прочитать сектор диска?

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Как прочитать сектор диска?

droopy » 09 окт 2004, 02:59

Спасибо, Dragonfly, но меня драйвера Linux не интересуют. Речь идёт о Windows. А писать мне можно на droopy@yandex.ru.
Как я понял, общая идея чтения/записи дисков в Windows (для пользовательского режима) состоит в использовании CreateFile("\\.\C:"...) и последующих ReadFile/WriteFile. Но что-то здесь маловато контроля, хотелось бы иметь больше. А драйвера вообще непонятно как с диском работают. Ведь есть же какой-то драйвер самого жёсткого диска, и есть у него интерфейс с внешним миром. Только вот какой?

Dragonfly » 04 окт 2004, 11:08

Извини, droopy, то ли здесь (под KDE) javascript глючит, то ли еще что, но писать тебе на мыло не могу. Исходники у меня есть - они маленькие, т.е. Filemon тебе поможет разве что с общими принципами написания драйвера и взаимодействия с ним, т.к. сам он дисковые операции не осуществляет, а вот Linux?овые дрова NTFS тебе полезны будут. В общем, как с тобой связаться?

droopy » 02 окт 2004, 04:21

Комечно, спасибо, но где же эти исходники взять?

Dragonfly » 01 окт 2004, 20:11

Смотри две вещи - исходники Filemon. Файловый монитор - фактически, прослойка между Kernel и NTFS драйвером. А затем... :) почитай сырцы линуксового NTFS драйвера (если тебя интересует аппаратный план).

Eugie » 29 сен 2004, 18:06

Под NT надо смотреть Disk Management Control Codes к DeviceIoControl. Но там возможности чтения секторов кажется нет (могу ошибаться).
Да, под WinNT нет (по кр.мере, такая возможность недокументирована). Вообще, DeviceIoControl, если можно так сказать, заточена под более высокоуровневые операции. Например, можно с ее помощью делать дефрагментацию, т.е. не по отдельности читать/писать в кластеры, а перемещать за одну операцию. Почему WinNT API не дает работать с диском напрямую? Из соображений безопасности как самой NT, так, кстати, и файловой системы NTFS. Конечно, при желании любой замок можно сломать, но стоит ли? :)

Andy » 28 сен 2004, 11:47

Как Win32-приложение может читать диск напрямую?
И может и не может. Это зависит от платформы - WinNT или Win9x. Под NT надо смотреть Disk Management Control Codes к DeviceIoControl. Но там возможности чтения секторов кажется нет (могу ошибаться). Под 95 низкоуровневые операции с диском происходят через взаимодействие с системными VxD. Вобщем надо смотреть Platform SDK.
Интересно, драйвера файловых систем используют её или какую-то другую?
Я так понимаю что они должны работать на ring0. Может работают напрямую, то есть через прерывания?

ЗЫ.
Я слышал, есть функция VWIN32_DIOC_DOS_INT25
Это только под Win95.

Как прочитать сектор диска?

droopy » 26 сен 2004, 04:13

Как Win32-приложение может читать диск напрямую? Я слышал, есть функция VWIN32_DIOC_DOS_INT25 для DeviceIoControl. Но она мне кажется какой-то устаревшей. Интересно, драйвера файловых систем используют её или какую-то другую?

Вернуться к началу