|
Удаление неудаляющейся папки или удаление вручную |
|||||||||||||||||||||||||||||||||||||||
Бывали ли у вас случаи, когда какая-то пустая папка не удалялась. Думаю, что да. Раз так, то эта статья для вас. Необходимые инструменты:
Теория ____Для того, чтобы удалить папку нужно хоть немного представлять себе хранение этой папки на жестком диске (для дискет все то же самое). Итак, папка представляет собой запись на диске, длинной в 32 байта для FAT32 и 64 для NTFS. Первые восемь байт (смещение +0) содержат имя папки, следующие три байта (смещение +8 соответственно) содержат расширение файла (для папки это будет выглядеть как 202020h). А теперь самое интересное: папка с обычным именем (восемь байт на имя и три - на расширение) отводится 32 байта. В байте со смещением +11 содержится атрибут папки (файла). Если атрибут равен 0Fh, то система считает, что здесь содержится длинное имя. Длинное имя кодируется в Unicode и записывается в обратном порядке. За одной или несколькими записями с длинным именем должна следовать запись с обычным именем, содержащим знак ~ (тильда). Здесь содержится также остальная информация о файле. Как видите, алгоритм просмотра каталога с выявлением информации о файле весьма прост. ____Предоставляю вашему вниманию таблицу с структурой записи каталога.
____Как видите, все байты 32-байтной записи каталога теперь заняты. А теперь посмотрите на последнюю графу таблицы - размер файла в байтах: 4 байта, а что если длина файла больше 4-х байт? Разумеется, в этом случае следует считать, что в каталоге хранятся младшие байты длины, а полную длину легко определить, обратившись к таблице размещения файлов. Но согласитесь, что это уже явная недоработка. Иное дело в файловой системе NTFS, поддерживаемой Windows NT. Здесь для индексации кластеров используются 64-битные поля.
Практика Скачать пример в текстовом варианте. Возможно, остались вопросы по поводу временных характеристик (смещения от +12 до +24) - пишите на E-Mail с темой "DelDirTime" З.Ы. Автор не несет никакой ответственности за испорченную или утерянную информацию. Советую сначала потренироваться создавать и удалять папки на дискете. Публикация статей возможна только при наличии ссылки на winalex2006.narod.ru |