FSCTL_SET_OBJECT_ID_EXTENDED IOCTL (winioctl.h)

Изменяет пользовательские данные, связанные с идентификатором объекта для указанного файла или каталога.

Для выполнения этой операции вызовите функцию DeviceIoControl со следующими параметрами.

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to device
  FSCTL_SET_OBJECT_ID_EXTENDED,     // dwIoControlCode
  (LPVOID) lpInBuffer,              // input buffer
  (DWORD) nInBufferSize,            // size of input buffer
  NULL,                             // lpOutBuffer
  0,                                // nOutBufferSize
  (LPDWORD) lpBytesReturned,        // number of bytes returned
  (LPOVERLAPPED) lpOverlapped       // OVERLAPPED structure
);

Комментарии

Идентификаторы объектов используются для отслеживания файлов и каталогов. Они невидимы для большинства приложений и никогда не должны изменяться приложениями. Изменение идентификатора объекта может привести к потере данных из частей файла, включая целые тома данных.

Эта операция задает пользовательские данные только в идентификаторе объекта. Возможные способы использования — сохранение метки времени для создания идентификатора объекта или монотонно увеличивающегося номера версии. Элемент ObjectId структуры FILE_OBJECTID_BUFFER игнорируется. Механизм изменения элемента ObjectId отсутствует. Обычно код элемента управления FSCTL_SET_OBJECT_ID_EXTENDED используется, когда приложение не использует пользовательские данные, созданные файловой системой NTFS, когда система создает идентификатор объекта.

Чтобы задать идентификатор объекта для объекта, который еще не имеет его, используйте код элемента управления FSCTL_SET_OBJECT_ID . Чтобы файловая система NTFS создавала идентификатор объекта, если он не существует, используйте код элемента управления FSCTL_CREATE_OR_GET_OBJECT_ID .

Обратите внимание, что метки времени могут быть обновлены неправильно для удаленного файла. Чтобы обеспечить согласованность результатов, используйте небуферированные ввод-вывод.

В Windows 8 и Windows Server 2012 этот код поддерживается следующими технологиями.

Технология Поддерживается
Протокол SMB 3.0 Да
Прозрачная отработка отказа (TFO) SMB 3.0 Да
SMB 3.0 с масштабируемыми общими папками (SO) Да
Файловая система общего тома кластера (CSVFS) Да
Восстанавливаемая файловая система (ReFS) Нет

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть winioctl.h (включая Windows.h)

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