Получение записи MFT

Тема в разделе "WASM.WIN32", создана пользователем qvant, 27 сен 2006.

  1. qvant

    qvant New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2006
    Сообщения:
    38
    Пытаюсь получить запись MFT таким образом: сперва с помощью NtQueryInformationFile/FileInternalInformation получаю IndexNumber, а потом с помощью FSCTL_GET_NTFS_FILE_RECORD запись MFT.
    Вот код:
    Код (Text):
    1. ...
    2. const
    3.   FSCTL_GET_NTFS_FILE_RECORD = $00090068;
    4. ...
    5.       Res:=NtQueryInformationFile(hFile, io, @FileInfo, sizeof(FileInfo), FileInternalInformation);
    6.       if Res<>STATUS_SUCCESS then Exit;
    7.       ZeroMemory(@FileRecInput, sizeof(FileRecInput));
    8.       FileRecInput.FileReferenceNumber:=FileInfo.IndexNumber;
    9.       ZeroMemory(@FileRecOutput, sizeof(FileRecOutput));
    10.       if not(DeviceIoControl(hFile,
    11.                       FSCTL_GET_NTFS_FILE_RECORD,
    12.                       @FileRecInput,
    13.                       sizeof(FileRecInput),
    14.                       @FileRecOutput,
    15.                       sizeof(FileRecOutput),
    16.                       Read,
    17.                       nil)) then RaiseLastWin32Error();
    18. ...
    DeviceIoControl завершается с ошибкой "Error Code: 1 Неверная функция" что за нах? Или я
    константу FSCTL_GET_NTFS_FILE_RECORD не правильно посчитал? Так вроде правильно..
     
  2. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Похоже буфер маловат.
     
  3. qvant

    qvant New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2006
    Сообщения:
    38
    Нет, буфер не маловат т.к. в этом случае возвращается ошибка ERROR_INSUFFICIENT_BUFFER. Проблемы, как таковой, не было - я просто открывал файл забыв что на диске fat32, а не ntfs :) Теперь другая проблема - возвращает 87 (параметр задан не верно). Устал искать причины.. :dntknw: Просьба по-возможности указать на ошибку,
    код в аттаче.