Здравствуйте, RedHair, Вы писали:
R> У меня следующая проблема.
R> Создаю файл — CreateFile(). Записываю в него некоторые данные, которые
R> представляют собой строки в ANSI — WriteFile(). Это происходит на диске
R> с размером кластера 4кб. Далее копирую этот файл (xcopy) из командной
R> строки на диск с размером кластера 512б. Файл сильно фрагментируется.
R> Мои текстовые фразы разрываются. В итоге, когда я пытаюсь физически
R> (открывая диск все тем же CreateFile()) на диске найти эти фразы — они
R> не ищутся. Примечание: если создавать файл заново (например в
R> проводнике), и копировать туда содержание исходного файла — все
R> прекрасно ищется?
R>
R>
R> Вопрос:
R> 0. могут ли фразы в исходном файлек не искаться не из-за дефрагментации,
R> а по другим причинам? 1. как добиться того, чтобы ничинать запись в файл
R> непосредственно с начала кластера? 2. если нельзя добиться п1 — как
R> сделать дефрагментацию?
R>
R> МСДН предлагает решение на основе DeviceIOControl — в общих чертах:
R> искать место на диске, где есть несколько свободных кластеров подряд и
R> туда переписывать файл.
R>
R> ИМХО — это достаточно муторно! И не поступать же мне так с каждым
R> переписываемым файлом!
R>
R> М.б. посоветуете, как заполнять прямо непосредственно кластеры, а не
R> писать в файл по указателю?
При использовании CreateFile и прочих сервисов операционной системы совершенно необязательно думать о проблемах фрагментации данных. Это совершенно другой уровень абстракции и помочь ему Вы вряд ли сможете. Все, что Вы написали про проблемы с фрагментированностью файла — ерунда полная. Ищите более банальную ошибку.
-- Всего хорошего!
-- Alex Alexandrov, e-mail: alex_alexandrov(at)fromru(dot)com
Posted via RSDN NNTP Server 1.9 gamma