Как прочитать сектор диска?
Модераторы: Duncon, Hawk, Romeo, Eugie
Как Win32-приложение может читать диск напрямую? Я слышал, есть функция VWIN32_DIOC_DOS_INT25 для DeviceIoControl. Но она мне кажется какой-то устаревшей. Интересно, драйвера файловых систем используют её или какую-то другую?
И может и не может. Это зависит от платформы - WinNT или Win9x. Под NT надо смотреть Disk Management Control Codes к DeviceIoControl. Но там возможности чтения секторов кажется нет (могу ошибаться). Под 95 низкоуровневые операции с диском происходят через взаимодействие с системными VxD. Вобщем надо смотреть Platform SDK.Как Win32-приложение может читать диск напрямую?
Я так понимаю что они должны работать на ring0. Может работают напрямую, то есть через прерывания?Интересно, драйвера файловых систем используют её или какую-то другую?
ЗЫ.
Это только под Win95.Я слышал, есть функция VWIN32_DIOC_DOS_INT25
*provided AS IS
Да, под WinNT нет (по кр.мере, такая возможность недокументирована). Вообще, DeviceIoControl, если можно так сказать, заточена под более высокоуровневые операции. Например, можно с ее помощью делать дефрагментацию, т.е. не по отдельности читать/писать в кластеры, а перемещать за одну операцию. Почему WinNT API не дает работать с диском напрямую? Из соображений безопасности как самой NT, так, кстати, и файловой системы NTFS. Конечно, при желании любой замок можно сломать, но стоит ли?Под NT надо смотреть Disk Management Control Codes к DeviceIoControl. Но там возможности чтения секторов кажется нет (могу ошибаться).

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

И накроет землю тень Армагеддона (и мы примем в этом активное участие
)

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

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