Получить смещение файла на диске / номер кластера

Мне нужно получить любую информацию о том, где файл физически находится на диске NTFS. Абсолютное смещение, идентификатор кластера .. все. Мне нужно отсканировать диск дважды, один раз, чтобы получить выделенные файлы, и еще раз мне нужно открыть раздел непосредственно в режиме RAW и попытаться найти остальные данные (из удаленных файлов). Мне нужен способ понять, что обнаруженные мной данные совпадают с данными, которые я уже обрабатывал ранее в виде файла. Поскольку я сканирую диск в необработанном режиме, смещение данных, которые я нашел, может быть каким-то образом преобразовано в смещение файла (имеющего информацию о геометрии диска). Есть какой-либо способ сделать это? Другие решения также принимаются. Сейчас я играю с FSCTL_GET_NTFS_FILE_RECORD, но пока не могу заставить его работать, и я не уверен, что это поможет.

UPDATE

Я нашел следующую функцию http://msdn.microsoft.com/en-us/library/windows/desktop/aa364952(v=vs.85).aspx Он возвращает структуру, которая содержит переменные nFileIndexHigh и nFileIndexLow. Документация говорит

The identifier that is stored in the nFileIndexHigh and nFileIndexLow members is called the file ID. Support for file IDs is file system-specific. File IDs are not guaranteed to be unique over time, because file systems are free to reuse them. In some cases, the file ID for a file can change over time.

Я не очень понимаю, что это такое. Я не могу подключить его к физическому расположению файла. Можно ли позже извлечь этот идентификатор файла из MFT?

UPDATE

Нашел это: This identifier and the volume serial number uniquely identify a file. This number can change when the system is restarted or when the file is opened.

Это не удовлетворяет моим требованиям, потому что я собираюсь открыть файл, и тот факт, что ID может измениться, не делает меня счастливым.

Есть идеи?

Ответы на вопрос(1)

Ваш ответ на вопрос