У меня следующая проблема.
Создаю файл — CreateFile(). Записываю в него некоторые данные, которые представляют собой строки в ANSI — WriteFile(). Это происходит на диске с размером кластера 4кб.
Далее копирую этот файл (xcopy) из командной строки на диск с размером кластера 512б.
Файл сильно фрагментируется. Мои текстовые фразы разрываются.
В итоге, когда я пытаюсь физически (открывая диск все тем же CreateFile()) на диске найти эти фразы — они не ищутся.
Примечание: если создавать файл заново (например в проводнике), и копировать туда содержание исходного файла — все прекрасно ищется?
Вопрос:
0. могут ли фразы в исходном файлек не искаться не из-за дефрагментации, а по другим причинам?
1. как добиться того, чтобы ничинать запись в файл непосредственно с начала кластера?
2. если нельзя добиться п1 — как сделать дефрагментацию?
МСДН предлагает решение на основе DeviceIOControl — в общих чертах: искать место на диске, где есть несколько свободных кластеров подряд и туда переписывать файл.
ИМХО — это достаточно муторно! И не поступать же мне так с каждым переписываемым файлом!
М.б. посоветуете, как заполнять прямо непосредственно кластеры, а не писать в файл по указателю?