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


FSCTL_GET_NTFS_FILE_RECORD IOCTL (winioctl.h)

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

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

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

Комментарии

Этот код элемента управления перечисляет идентификаторы файлов в сторону уменьшения и всегда возвращает используемую запись файла. Это означает, что идентификатор файла, возвращаемый этим кодом элемента управления, может отличаться от идентификатора файла, указанного во входном буфере. Например, если используются идентификаторы файлов с 1 по 9 и 15, идентификаторы файлов с 10 по 14 не используются и запрашивается запись файла, соответствующая идентификатору файла 15, возвращается эта запись файла.

Если запрашиваются записи файлов, соответствующие идентификаторам файлов с 10 по 14, возвращается запись файла, соответствующая идентификатору файла 9. Если запрашивается какая-либо из записей файлов, соответствующих идентификаторам файлов с 1 по 9, эти записи файлов возвращаются.

Чтобы определить правильный размер выходного буфера, на который указывает lpOutBuffer, сначала вызовите код элемента управления FSCTL_GET_NTFS_VOLUME_DATA , чтобы получить размер одной записи файла. Это значение элемента BytesPerFileRecordSegment возвращаемой структуры NTFS_VOLUME_DATA_BUFFER . Затем задайте размер выходного буфера следующим выражением:

sizeof (NTFS_FILE_RECORD_OUTPUT_BUFFER) + sizeof (one file record) - 1

Если файл состоит из нескольких файловых записей, их необходимо извлекать по отдельности.

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

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