Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > FAT directory entry


Автор: rudolfninja 10.8.2016, 21:33
Приветствую всех.
Начну сразу с проблемы: есть виртуальная файловая система FAT (реализация файловой системы FAT на C). Реализована непонятно кем и когда, но очень похоже, что взята http://en.pudn.com/downloads36/sourcecode/windows/system/detail114631_en.html. Проблема заключается в том, что при копировании в эту виртуальную ФС папки с названием, например, GO 9210 GO копируется папка с названием GO 9210, а если копировать папку GO TEST GO или GO 92101GO, то все окей, копируется папка с нужным названием. Обязательное условие, что в папке должен быть хотя бы один файл.
После долгой отладки я пришел к тому, что имя проблемной папки не получается привести к LongFilename. Так же выяснил, что байт аттрибута  FAT directory entry не равен 0x0F (поэтому и не получается). Если верить https://en.wikipedia.org/wiki/8.3_filename#Directory_table, то этот байт говорит о том, что данная директория содержит long filename.
Собственно два вопроса:
1) Может есть у кого готовое решение (в виде кода), которое позволит получить аттрибуты директории, описанные на википедии?
2) Если кто-нибудь хорошо понимает организацию FAT, объясните, пожалуйста, почему так происходит (вдруг это нормально)? Возможно где-то как-то нарушено соглашение об именах директорий или еще что...

Спасибо.

Автор: rudolfninja 11.8.2016, 12:03
Короче, пришел к тому, что вероятнее всего проблема в этой реализации FAT, т.к. на флешке в FAT я могу создать такую папку и закинуть туда файл

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)