GetFileTime

Programming Far Manager plugins

GetFileTime

Функция GetFileTime возвращает дату и время создания, модификации и последнего доступа к файлу.
BOOL GetFileTime(
  HANDLE hFile,
  CONST FILETIME *lpCreationTime,
  CONST FILETIME *lpLastAccessTime,
  CONST FILETIME *lpLastWriteTime
);

Параметры

hFile
идентифицирует файл, для которого извлекаются дата и время. Файловый дескриптор должен быть создан с доступом GENERIC_READ к файлу.
lpCreationTime
указывает на структуру типа FILETIME, которая получает дату и время создания файла. Значение этого параметра может быть равно NULL, если приложению не требуется эта информация.
lpLastAccessTime
указывает на структуру типа FILETIME, которая получает дату и время последнего доступа к файлу. Время последнего доступа включает в себя время, когда в последний раз: в файл записывалась информация, читалась информация из файла, или, в случае исполняемых файлов, файл запускался на исполнение. Значение этого параметра может быть равно NULL, если приложению не требуется эта информация.
lpLastWriteTime
указывает на структуру типа FILETIME, указывает на структуру типа FILETIME, которая получает дату и время последней записи в файл. Значение этого параметра может быть равно NULL, если приложению не требуется эта информация.

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

В случае успеха возвращается ненулевое значение.
Если функция завершается неудачно, возвращается ноль. Для получения дополнительной информации следует вызвать функцию GetLastError.

Замечания

Файловые системы FAT и NTFS поддерживают время создания файла, время последнего доступа к файлу и время последней записи в файл.

Точность хранения времени Точность хранения времени

  • Точность, с которой сохраняются значения времени для файлов, зависит от используемой операционной системы, файловой системы, сетевой конфигурации. Подробнее см. замечания к структуре FILETIME.

Замечание для NTFS NTFS

  • Когда Windows NT создаёт список каталогов (Проводник, команда DIR, и т.д.) в разделе NTFS, она модифицирует дату/время последнего доступа на каждом обнаруженном каталоге. Если каталогов очень много, это может повлиять на эффективность.
    Семейство Windows NT на файловой системе NTFS позволяет отключать дату/время последнего доступа (см. Disable the NTFS Last Access Time Stamp)
  • Если вы удалите или переименуете файл, а затем достаточно быстро восстановите его, Windows NT может восстановить из кеша некоторые данные о файле: длинное и короткое имя файла, а также дату его создания.

Пример

Следующий пример показывает как получить дату/время модификации файла в виде строки (Windows NT).
BOOL GetLastWriteTime(HANDLE hFile, LPSTR lpszString)
{
  FILETIME ftCreate, ftAccess, ftWrite;
  SYSTEMTIME stUTC, stLocal;

  // получить файловую дату и время
  if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))
      return FALSE;

  // преобразовать время модификации в локальное время.
  FileTimeToSystemTime(&ftWrite, &stUTC);
  SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);

  // преобразовать полученное время в строку
  wsprintf(lpszString, "%02d/%02d/%d  %02d:%02d",
      stLocal.wDay, stLocal.wMonth, stLocal.wYear,
      stLocal.wHour, stLocal.wMinute);

  return TRUE;
}
Смотрите также: