структура 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) |