FILE_ATTRIBUTE_TEMPORARY Файл используется для временного сохранения. Файловые системы избегают писать данные обратно на запоминающее устройство большой емкости, если доступна достаточная кэш-память, потому что приложение часто удаляет временный файл вскоре после того, как дескриптор закрывается. В этом случае, система может полностью отменить запись данных. В противном случае, данные должны быть записаны после того, как дескриптор закроется.
А если сбой в системе, файл в кеше теряется?
Две противоречивые цитаты:
приложение часто удаляет временный файл вскоре после того, как дескриптор закрывается
данные должны быть записаны после того, как дескриптор закроется
Так каков должен быть порядок работы с tmp-файлом, чтобы не тормозило записью на диск? Установить указатель на начало файла, а потом закрыть? Имя файла сохранится...
Из инета:
FILE_ATTRIBUTE_OFFLINE Данные файла непосредственно не доступны. Этот атрибут указывает, что данные файла были физически перемещены на автономное запоминающее устройство. Этот атрибут используется Удаленным хранилищем, программным обеспечением иерархического управления памятью. Приложения не должны произвольно изменять этот атрибут.
ещё:
FILE_ATTRIBUTE_OFFLINE - указывает на то, что данные файла не доступны и находятся на отключённом устройстве
если данные файла недоступны, то как доступны его атрибуты? Тут я ничего не понимаю...
FILE_ATTRIBUTE_COMPRESSED Я думал, что если установить этот флаг через SetFileAttributes, то данные в файл будут писаться в сжатом виде, заполняя пустые места в неполных кластерах. Тестил на NTFS, кластер=4КБ. Ф-я SetFileAttributes вернула 1, но нет же, файл не пометился как сжатый, не высветился синим цветом в Explorer, Far не показал установленным атрибут компрессии...
Far также показывает атрибут Зашифрованный, читается ли такой файл Open For Binary? В справочнике по GetFileAttributes нет такого атрибута...