Цитата(tolik_zp @ May 24 2007, 09:54)

Объясните пожалуйста, почему функция возвращает FR_NOT_ENABLED и как вообще происходит проверка указателя?
Код
static
FATFS *FatFs[_DRIVES]; /* Pointer to the file system objects (logical drives, _DRIVES=1) */
Объявляется глобальная переменная (массив). Глобальные переменные при старте программы обнуляются - это аксиома, требование стандарта. Значит, все элементы этого массива содержат нули при старте программы. По тому же стандарту указатель, содержащий 0 никуда не указывает. Это и используется в следующей проверке
Код
fs = FatFs[0];
if (!fs) return FR_NOT_ENABLED;
Берется первый элемент массива. Если там указатель, который указывает на что-то реальное, он ненулевой.