Witam wszystkich!
Problem mam taki,ze chce napisac program do defragmentacji dysku tyle ze nie wiem jak sie do tego zabrac.Wiem na czym ten proces polega i z tego co gdzies przeczytalem to informacje o wszystkich plikach na danej partycji sa w jej tablicy,ale nikt juz nie napisal jak sie do tych danych dobrac lub chocby ja znalezc,a jak juz do niej dojde to jak wedlug tych informacji odczytac i zapisac dane sektory?Programuje w c i c++ wiec moze tam sa jakies funkcje,myslalem tez o assemblerze gdyz chcialbym defragmentowac poza windowsem.Jezeli zechce ktos pomoc to z gory wielkie dzieki,jakies przyklady tez beda mile widziane.
Jeszcze raz dzieki!
O assemblerze w Windows zapomnij - nie daje Ci żadnej możliwości ponad to, co oferuje C++. Poza Windows - to już zależy od ciebie i środowiska pod, które chcesz tworzyć.
Sposób wykonania defragmentacji zależy od formatu partycji, którą chcesz defragmentować. Musisz otworzyć dostęp do partycji w trybie binarnym (Winapi: CreateFile), zależnie od formatu odczytywać bloki danych, odpowiadające położeniu plików (Winapi: ReadFile), zapisywać je w innym miejscu (Winapi: WriteFile), a na końcu zamknąć plik partycji (Winapi: CloseHandle). Łatwe nie?
Nie. Bo jedynym i największym problemem tego zadania jest znajomość organizacji danych na dysku w formacie partycji. Z partycjami FAT nie będziesz miał żadnego problemu, ale NTFS to ogromna gmatwanina opcji (z szyfrowaniem i kompresją włącznie) więc przygotuj się na jazdę bez trzymanki. Nie ma "uniwersalnego" rozwiązania na defragmentowanie dowolnego typu partycji, więc inne formaty mogą nieść za sobą jeszcze inne wyzwania.
Dzieki za szybką odpowiedz!
Ale muszę przyznać,że pewnej rzeczy nie rozumiem.Wiem już jak dostac sie do partycji i jak ją odczytywać.
Pytanie jest takie:skąd będę wiedział w którym miejscu partycji znajduje się właśnie czytany plik,na ile częsci jest on podzielony,która jest początkiem,a która końcem no i gdzie one sie znajdują?Czy te informacje będą w opisanych przez ciebie blokach,które mam odczytać?Co do formatu partycji to biorąc pod uwagę moje zaawansowanie w tym temacie to najpierw zajmę się fatem,a jak coś z tego wyjdzie to będę próbował z innymi.O assemblerze myślałem pod kątem programu niezależnego od systemu,korzystającego z przerwań biosa(taki mini system z jedną funkcją)ale to tylko moje pomysły.
Tak czy tak to jeszcze raz dzięki za zainteresowanie tematem! </asm>
http://msdn2.microsoft.com/en-us/library/aa363911(VS.85).aspx - defragmentacja na żywo