структура FILE_OBJECTID_INFORMATION (ntifs.h)
Структура FILE_OBJECTID_INFORMATION используется для запроса сведений об идентификаторе объекта для файлов в каталоге на томе NTFS.
Синтаксис
typedef struct _FILE_OBJECTID_INFORMATION {
LONGLONG FileReference;
UCHAR ObjectId[16];
union {
struct {
UCHAR BirthVolumeId[16];
UCHAR BirthObjectId[16];
UCHAR DomainId[16];
} DUMMYSTRUCTNAME;
UCHAR ExtendedInfo[48];
} DUMMYUNIONNAME;
} FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION;
Члены
FileReference
8-байтовый номер ссылки на файл. NTFS создает это число и присваивает его файлу автоматически при его создании.
ObjectId[16]
16-байтовый идентификатор объекта файла. NTFS создает этот номер и присваивает его файлу по запросу драйвера или приложения. Идентификаторы файловых объектов гарантированно будут уникальными только в томе, где находится файл.
DUMMYUNIONNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME.BirthVolumeId[16]
Идентификатор объекта тома, на котором находился файл при создании идентификатора объекта, или нуль, если в то время в томе не было идентификатора объекта. После операций копирования, перемещения или других операций с файлами BirthVolumeId может отличаться от идентификатора объекта тома, на котором находится объект в данный момент.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.BirthObjectId[16]
Идентификатор объекта файла на момент его создания. После операций копирования, операций перемещения или других операций с файлами BirthObjectId может отличаться от текущего значения элемента ObjectId .
DUMMYUNIONNAME.DUMMYSTRUCTNAME.DomainId[16]
Защищены; значение должно быть равно нулю.
DUMMYUNIONNAME.ExtendedInfo[48]
Предоставленные пользователем данные. Его можно использовать для хранения элементов BirthVolumeID, BirthObjectID и DomainID или определить другую структуру данных.
Комментарии
Эти сведения можно запросить с помощью следующих способов:
Вызовите ZwQueryDirectoryFile, передав FileObjectIdInformation в качестве значения FileInformationClass и передавая выделенный вызывающим FILE_OBJECTID_INFORMATION структурированный буфер в качестве значения FileInformation.
Создайте IRP с основным кодом функции IRP_MJ_DIRECTORY_CONTROL и дополнительным кодом функции IRP_MN_QUERY_DIRECTORY.
Для запроса этих сведений не требуются специальные права доступа.
Поддержка ссылочных номеров файлов и идентификаторов объектов файлов зависит от файловой системы:
- Идентификаторы файловых объектов поддерживаются только на томах NTFS. NTFS позволяет открывать файлы по идентификатору объекта, а также по номеру ссылки на файл.
- ReFS не поддерживает идентификаторы объектов. ReFS использует 128-разрядные идентификаторы файлов, поэтому не может четко различать идентификатор файла и идентификатор объекта при обработке открытого по идентификатору. (Идентификаторы файлов являются 64-разрядными в NTFS, поэтому их легко отличить от идентификаторов объектов. NTFS также одновременно поддерживает открытие по 128-разрядному идентификатору: если высокие 64-разрядные значения равны нулю, низкие 64-разрядные значения обрабатываются как идентификатор файла; В противном случае 128-разрядное значение обрабатывается как идентификатор объекта.)
Драйверы фильтров файловой системы, использующие идентификаторы файловых объектов, должны быть проверены на совместимость с DFS, службой репликатора и службой отслеживания распределенных ссылок, все из которых используют идентификаторы файловых объектов и управляют ими.
Эта структура должна быть выровнена по длинной (4-байтовой) границе.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 |
Верхняя часть | ntifs.h (включая Ntifs.h, Fltkernel.h) |