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


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

См. также

FILE_INTERNAL_INFORMATION

IRP_MJ_DIRECTORY_CONTROL

ZwQueryDirectoryFile