# WIN32_FIND_DATA

Структура `WIN32_FIND_DATA` описывает файл, найденный функциями `FindFirstFile`, `FindFirstFileEx` или `FindNextFile`.

    typedef struct _WIN32_FIND_DATA {
      DWORD dwFileAttributes;
      FILETIME ftCreationTime;
      FILETIME ftLastAccessTime;
      FILETIME ftLastWriteTime;
      DWORD nFileSizeHigh;
      DWORD nFileSizeLow;
      DWORD dwReserved0;
      DWORD dwReserved1;
      TCHAR cFileName[ MAX_PATH ];
      TCHAR cAlternateFileName[ 14 ];
    } WIN32_FIND_DATA;

### Элементы

dwFileAttributes
Указывает атрибуты найденного файла. Этот элемент может быть комбинацией следующих значений:

Атрибут | Описание
--- | ---
FILE_ATTRIBUTE_ARCHIVE | Это архивный файл. Приложения должны использовать этот флаг для копирования, архивирования или удаления.
FILE_ATTRIBUTE_COMPRESSED | Файл или каталог сжат. Для файла это означает, что все данные его сжаты, для каталога - что компрессия по умолчанию применяется ко всем его файлам и подкаталогам.
FILE_ATTRIBUTE_DIRECTORY | Это каталог.
FILE_ATTRIBUTE_ENCRYPTED | Файл или каталог зашифрован. Для файла, это означает, что все данные в файле зашифрованы. Для директория, это означает, что шифрование является умолчанием для вновь созданных файлов и подкаталогов.
FILE_ATTRIBUTE_HIDDEN | Файл скрыт. Такой файл не включается в обычный листинг каталога.
FILE_ATTRIBUTE_NORMAL | У этого файла не установлены другие атрибуты. Это значение корректно только при использовании без остальных флагов.
FILE_ATTRIBUTE_OFFLINE | Данные файла не доступны непосредственно. Означает, что реальные данные файла были физически перемещены на устройства хранения.
FILE_ATTRIBUTE_READONLY | Файл только для чтения. Приложения могут читать такой файл, но не могут записывать или удалять его.
FILE_ATTRIBUTE_REPARSE_POINT | Каталог является точкой повторной обработки.
FILE_ATTRIBUTE_SPARSE_FILE | Файл является т.н. Разрежённый файл.
FILE_ATTRIBUTE_SYSTEM | Этот файл - часть операционной системы.
FILE_ATTRIBUTE_TEMPORARY | Это временный файл. Приложения должны записывать в такой файл только в крайней необходимости. Большая часть данных файла находится в памяти и не сбрасывается на диск, так как файл будет удалён.
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED | Этот файл или каталог не будут индексироваться службой индексирования.
FILE_ATTRIBUTE_VIRTUAL | Этот файл - виртуальный файл.

ftCreationTime
Время создания - структура FILETIME, содержащая время создания файла. FindFirstFile и FindNextFile возвращают время файла в UTC-формате. Эти функции устанавливают элементы `FILETIME` в ноль, если файловая система, содержащая файл, не поддерживает этот временной атрибут.
Вы можете использовать функцию FileTimeToLocalFileTime для преобразования из UTC в локальное время и тогда использовать функцию FileTimeToSystemTime для преобразования локального времени в структуру SYSTEMTIME содержащую отдельные элементы для месяца, дня, года и так далее...
ftLastAccessTime
Структура FILETIME с временем последнего доступа к файлу (чтение, запись, исполнение).
Для каталогов в этой компоненте содержится информация о времени создания каталога.
На FAT дата для файлов и каталогов будет правильна, но время дня будет всегда установлено на полночь.
Время хранится в UTC формате; элементы структуры установлены в ноль, если файловая система не поддерживает этого свойства.
ftLastWriteTime
Структура FILETIME с временем последней записи в файл (с помощью функций WriteFile или SetEndOfFile). Время последней записи не обновляется для таких операций, как установка атрибутов файла или изменение дескриптора безопасности (security descriptors).
Для каталогов в этой компоненте содержится информация о времени создания каталога.
Время хранится в UTC формате; элементы структуры установлены в ноль, если файловая система не поддерживает этого свойства.
nFileSizeHigh
Старшее двойное слово 64-х разрядного размера файла в байтах. Размер файла равен `(nFileSizeHigh * (1+MAXDWORD)) + nFileSizeLow`.
nFileSizeLow
Младшее двойное слово размера файла в байтах.
dwReserved0
Если поле `dwFileAttributes` содержит атрибут `FILE_ATTRIBUTE_REPARSE_POINT`, это поле содержит тип точки повторной обработки. В противном случае значение этого поля не определено и не должно использоваться.
dwReserved1
Резерв.
cFileName
Строка с именем файла, заканчивающаяся символом конца строки (0x00).
cAlternateFileName
Альтернативное имя файла (классическая 8.3 (filename.ext) форма).

### Замечания

- Если файл имеет длинное имя, полное имя возвращается в элементе `cFileName` а усечённая версия формата 8.3 сохраняется в `cAlternateFileName`. Иначе `cAlternateFileName` пусто. Как альтернативу вы можете использовать функцию GetShortPathName для возвращения 8.3-вида имени файла.
- Не все файловые системы позволяют хранить время создания файла и последнего доступа к нему, и не все системы хранят их одинаково. Например, в файловой системе FAT под Windows NT время создания файла записывается с разрешением 10 миллисекунд, время последней модификации - 2 секунды, а время доступа - 1 день (то есть, фактически, записывается только дата доступа). На файловой системе NTFS время доступа имеет разрешение 1 час.

Смотрите также:
FILETIME