Поделиться через


структура BY_HANDLE_FILE_INFORMATION (fileapi.h)

Содержит сведения, извлекаемые функцией GetFileInformationByHandle .

Синтаксис

typedef struct _BY_HANDLE_FILE_INFORMATION {
  DWORD    dwFileAttributes;
  FILETIME ftCreationTime;
  FILETIME ftLastAccessTime;
  FILETIME ftLastWriteTime;
  DWORD    dwVolumeSerialNumber;
  DWORD    nFileSizeHigh;
  DWORD    nFileSizeLow;
  DWORD    nNumberOfLinks;
  DWORD    nFileIndexHigh;
  DWORD    nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION;

Члены

dwFileAttributes

Атрибуты файла. Возможные значения и их описания см. в разделе File Attribute Constants.

ftCreationTime

Структура FILETIME , указывающая, когда создается файл или каталог. Если базовая файловая система не поддерживает время создания, этот элемент равен нулю (0).

ftLastAccessTime

Структура FILETIME . Для файла структура указывает время последнего чтения или записи файла. Для каталога структура указывает, когда создается каталог. Как для файлов, так и для каталогов указана правильная дата, но для времени суток всегда устанавливается значение полуночи. Если базовая файловая система не поддерживает время последнего доступа, этот элемент равен нулю (0).

ftLastWriteTime

Структура FILETIME . Для файла структура указывает время последней записи файла. Для каталога структура указывает, когда создается каталог. Если базовая файловая система не поддерживает время последней записи, этот элемент равен нулю (0).

dwVolumeSerialNumber

Серийный номер тома, содержащего файл.

nFileSizeHigh

Высокоупорядоченная часть размера файла.

nFileSizeLow

Часть размера файла в нижнем порядке.

nNumberOfLinks

Количество ссылок на этот файл. Для файловой системы FAT этот элемент всегда равен 1. Для файловой системы NTFS это может быть больше 1.

nFileIndexHigh

Высокоупорядоченная часть уникального идентификатора, связанного с файлом. Дополнительные сведения см. в разделе nFileIndexLow.

nFileIndexLow

Часть низкого порядка уникального идентификатора, связанного с файлом.

Идентификатор (низкая и высокая части) и серийный номер тома однозначно идентифицируют файл на одном компьютере. Чтобы определить, представляют ли два открытых дескриптора один и тот же файл, объедините идентификатор и серийный номер тома для каждого файла и сравните их.

Файловая система ReFS, представленная с Windows Server 2012, включает 128-разрядные идентификаторы файлов. Чтобы получить 128-разрядный идентификатор файла, используйте функцию GetFileInformationByHandleEx с FileIdInfo , чтобы получить структуру FILE_ID_INFO . 64-разрядный идентификатор в этой структуре не гарантируется как уникальный в ReFS.

Комментарии

Идентификатор, хранящийся в элементах nFileIndexHigh и nFileIndexLow , называется идентификатором файла. Поддержка идентификаторов файлов зависит от файловой системы. Идентификаторы файлов не всегда будут уникальными с течением времени, так как файловые системы могут использовать их повторно. В некоторых случаях идентификатор файла может меняться со временем.

В файловой системе FAT идентификатор файла создается из первого кластера содержащего каталога и смещения байтов в каталоге записи для файла. Некоторые продукты дефрагментации изменяют это смещение байтов. (Дефрагментация windows в комплекте не выполняется.) Таким образом, идентификатор файла FAT может меняться со временем. Переименование файла в файловой системе FAT также может изменить идентификатор файла, но только в том случае, если имя нового файла длиннее старого.

В файловой системе NTFS файл сохраняет тот же идентификатор файла, пока не будет удален. Вы можете заменить один файл другим, не изменяя идентификатор файла с помощью функции ReplaceFile . Однако идентификатор файла замены, а не замененного файла, сохраняется в качестве идентификатора результирующего файла.

Не все файловые системы могут записывать данные о создании и последнем доступе, а также не все файловые системы записывают их одинаково. Например, в файловой системе Windows FAT время создания имеет разрешение 10 миллисекунд, время записи — 2 секунды, а время доступа — 1 день (дата доступа). В файловой системе NTFS время доступа имеет разрешение 1 час. Дополнительные сведения см. в разделе File Times.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть fileapi.h (включая Windows.h)

См. также раздел

FILETIME

FILE_ID_INFO

Константы атрибутов файлов

GetFileInformationByHandle

GetFileInformationByHandleEx