Существует ли инструмент, который показал бы мне для определенного файла на диске, насколько фрагментированный это? (Сколько ищет, делает физический диск, должен сделать, если бы я должен был считать тот файл линейным способом),
Вы можете использовать DeviceIoControl
с FSCTL_GET_VOLUME_BITMAP
, FSCTL_GET_RETRIEVAL_POINTERS
и FSCTL_MOVE_FILE
, смотрите Дефрагментация файлов.
Вы также можете найти различные примеры кода, если выполните поиск по FSCTL_MOVE_FILE
.
Вот один из них на C и другой на .NET.
Инструмент Sysinternals contig с параметром -a
может сделать это для файла или всех файлов в папке и ее подпапках.
fsutil file queryallocranges offset=
покажет вам экстенты файла, в которых вам понадобятся права администратора.