Библиотека FatFS: f_stat Печать
Добавил(а) microsin   

f_stat

Функция f_stat получает текущее состояние (статус) файла.

FRESULT f_stat (
  const TCHAR* FileName,  /* Указатель на имя файла или имя директории */
  FILINFO* FileInfo       /* Указатель на структуру FILINFO */
);

Параметры

FileName
Указатель на null-terminated (оканчивающуюся нулем) строку, которая содержит имя файла или директории, о которых нужно получить информацию (состояние).
FileInfo
Указатель на пустую (чистую) структуру FILINFO, куда будет сохранена информация о файле (или директории).

Возвращаемые значения

FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, FR_INVALID_DRIVE, FR_NOT_ENABLEDFR_NO_FILESYSTEM, FR_TIMEOUT, FR_NOT_ENOUGH_CORE

Описание

Функция f_stat позволяет получить информацию о файле или директории. Для подробной информации обратитесь к описанию полей структуры FILINFO, и к описанию функции f_readdir. Функция f_stat не поддерживается на уровне минимизации >= 1.

Когда включена опция LFN (разрешены длинные имена, в файле ff.h задано #define _USE_LFN 1), поля lfname и lfsize в FileInfo должны быть предварительно инициализированы до вызова f_stat. Поле lfname является указателем на буфер, в котором будет сохранена строка с длинным именем файла. Поле lfsize содержит размер для этого буфера строки, указанный в единицах TCHAR. Этот указатель должен указывать на валидный буфер в RAM, иначе все функции, которые используют переменную FILINFO (например f_stat) могут привести к непрогнозированному поведению программы (обычно Data Abort или зависание). Кроме того, для доступа к файлам даже при включенных длинных именах нужно использовать короткое имя файла (поле fname), так как если имя файла по размеру меньше 8.3, то длинное имя будет пустым (0 == strlen(lfname)). Для дополнительной информации см. также описание функции f_readdir. Пример получения атрибутов файла:

u8 GetFileAttributes (char* filename)
{
    u8 attribute = 0;
    FILINFO FileInfo;
#if _USE_LFN
    static char lfn[_MAX_LFN + 1];
    FileInfo.lfname = lfn;
    FileInfo.lfsize = sizeof(lfn);
#endif
 
    if (FR_OK == f_stat(filename, &FileInfo))
        attribute = FileInfo.fattrib;
    return attribute;
}

См. также

f_opendir, f_readdir, FILINFO

[Ссылки]

1. f_stat - получение текущего состояния файла или директории (оригинал статьи на английском языке).