Я пытаюсь дефрагментировать один файл с помощью API дефрагментации Windows ( http://msdn.microsoft.com/en-us/library/aa363911(VS.85).aspx), но если для моего файла нет блока свободного пространства, достаточно большого для моего файла, я хотел бы переместить другие части файлы, чтобы освободить место для него.
В связанной статье упоминаются движущиеся части других файлов, но я не могу найти никакой информации о том, как узнать, какие файлы перемещать. Из растрового изображения свободного пространства я могу найти почти достаточно большое пространство, и я знаю окружающие его логические номера кластеров, но из этого я не могу узнать, какие файлы его окружают, и для выполнения FSCTL_MOVE_FILE требуется дескриптор файлов. части файлов.
Есть ли способ через API или путем разбора MFT узнать, частью какого файла является номер логического кластера, и какой номер виртуального кластера в файле соответствует номеру логического кластера, найденному через растровое изображение?