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


FSCTL_SET_OBJECT_ID IOCTL (winioctl.h)

Задает идентификатор объекта для указанного файла или каталога.

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

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to device
  FSCTL_SET_OBJECT_ID,              // 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
);

Комментарии

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

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

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

В 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)

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