структура 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, службой репликатора и службой отслеживания распределенных ссылок, все из которых используют и управляют идентификаторами объектов файлов.
Эта структура должна быть выровнена по границе LONG (4-байтов).
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 |
заголовка | ntifs.h (include Ntifs.h, Fltkernel.h) |