Заметил забавный глюк — WINAPI FileTimeToLocalFileTime() формирует некорректную дату в случае, когда ей передали 0 (например, ftLastAccessTime в структуре W32_FIND_DATA для файлов с CDFS), и если при этом текущая таймзона имеет отрицательное смещение от GMT. В этом случае ф-я возвращает FILETIME, значение которого > 0x8000000000000000. Причем тут ATL? Легко. Статическая функция CFile::GetStatus(LPCTSTR,CFileStatus&) в рантайме MSVC71 вызывает конструктор CTime(ftLastAccess/*на CDFS будет = 0*/), который преобразует этот 0 к некорректной дате, а последнюю пытается привести к читаемому формату (FileTimeToSystemTime). Сделать это невозможно, поэтому CTime бросает исключение (которого Вы никак не ждали. Если ждали, то получили неинфомативное E_INVALIDARG). GetStatus не работает, факт. А файлик на компакт-диске поискать хочется. Я пока ничего лучшего не придумал, как подменить CFile::GetStatus в своей программе. А как нормальные люди с этим борются?
Спасибо,
Serge