Подскажите как реализуется эта вещь в Висте Код (Text): CreateFile("\\\\.\\PHYSICALDRIVE0", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
С помощью CreateFile открыть можно. И читать можно. Писать можно только в нулевую дорожку, в несмонтированные или залоченные volumes, а также в неразмеченные области диска. Есть драйвер, позволяющие писать куда угодно. Но он платный. http://www.eldos.com/rawdisk/
Дефрагментаторы работают с томами, т.е. \\.\с: и FSCTL_GET_RETRIEVAL_POINTERS. В висте админ обрезанный. Попробуй отключить UAC или перейти на root
Я знал один - нортоновский. Но он глючил не по детски на NTFS. Именно из-за прямой работы с диском. Не знаю жив ли он сейчас. Возможно есть еще какие, но в любом случае они под вистой не заработают.
Sol_Ksacap Из документации: The main disadvantage of Ultra Defragmenter is that they are based on MS defragmenting interface that has very ugly implementation. We can't change its behavior because it's a part of filesystem drivers (ntfs.sys, fastfat.sys) that are too complex and not open source to modify or replace them.
OracleLover Посмотри http://www.kessels.com/Jkdefrag/ Идет с исходниками. Ultra Defragmenter ужасно тормозной.
спасибо, на делфе навена исходников уже не найду? Я понимаю что форму сишный, но исходники и вообще хоть что-то по дефрагментаиции гуголь посылает на сишку
Читал статью от майкрософта, http://support.microsoft.com/kb/942448 Там написано про 5 условий.. Они все должны выполняться "сразу". Получалось записать винхексом в первый сектор, и в последний, хотя винхексовый анализатор ФС указал на Unpartitionable Space, и в его то начале и не получилось записать. Вообще вопрос к тому, что обломали запись на диски по секторам в висте и 7-ке?
serega28 У меня в проге на VB Net используется запись в сектора дискеты следующим образом. 1) CreateFile c GENERIC_READ+GENERIC_WRITE и FILE_SHARE_READ+FILE_SHARE_WRITE 2) DeviceIoControl с FSCTL_LOCK_VOLUME 3) DeviceIoControl с FSCTL_DISMOUNT_VOLUME 4) DeviceIoControl с FSCTL_ALLOW_EXTENDED_DASD_IO 5) SetFilePointer 6) и пишем WriteFile Работает и под Вистой тоже.