Пытаюсь получить запись MFT таким образом: сперва с помощью NtQueryInformationFile/FileInternalInformation получаю IndexNumber, а потом с помощью FSCTL_GET_NTFS_FILE_RECORD запись MFT. Вот код: Код (Text): ... const FSCTL_GET_NTFS_FILE_RECORD = $00090068; ... Res:=NtQueryInformationFile(hFile, io, @FileInfo, sizeof(FileInfo), FileInternalInformation); if Res<>STATUS_SUCCESS then Exit; ZeroMemory(@FileRecInput, sizeof(FileRecInput)); FileRecInput.FileReferenceNumber:=FileInfo.IndexNumber; ZeroMemory(@FileRecOutput, sizeof(FileRecOutput)); if not(DeviceIoControl(hFile, FSCTL_GET_NTFS_FILE_RECORD, @FileRecInput, sizeof(FileRecInput), @FileRecOutput, sizeof(FileRecOutput), Read, nil)) then RaiseLastWin32Error(); ... DeviceIoControl завершается с ошибкой "Error Code: 1 Неверная функция" что за нах? Или я константу FSCTL_GET_NTFS_FILE_RECORD не правильно посчитал? Так вроде правильно..
Нет, буфер не маловат т.к. в этом случае возвращается ошибка ERROR_INSUFFICIENT_BUFFER. Проблемы, как таковой, не было - я просто открывал файл забыв что на диске fat32, а не ntfs Теперь другая проблема - возвращает 87 (параметр задан не верно). Устал искать причины.. Просьба по-возможности указать на ошибку, код в аттаче.