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

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

FILE_INTERNAL_INFORMATION

IRP_MJ_DIRECTORY_CONTROL

ZwQueryDirectoryFile