Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Принцип сортировки NTFS_RECORD - ов в MFT.


Страницы:   1 2 3

Riply ©   (2007-06-23 07:06:00) 

Здравствуйте !
Уже почти целый день бьюсь и никак не могу понять:
по какому принципу отсортированы записи в MFT :(
В общем случае, задача звучит так: по имени файла определить "номер записи в MFT".
Если постараться, то, вроде, ее можно свести к
"написанию" функции сравнения двух записей в MFT:
function Ntfs_RecordCompare(const pRec1, pRec2: PFILE_RECORD_HEADER): integer;
При помощи "метода научного тыка", можно сделать (ну очень шаткое) предположение,
что результат этой функции зависит от следующих параметров FILE_RECORD_HEADER:
Ntfs.Usn: Int64;
// The Update Sequence Number of the NTFS record.
Flags: USHORT;
// A bit array of flags specifying properties of the MFT entry.
// The values defined include: 0x0001 = InUse, 0x0002 = Directory
BytesInUse: ULONG;  
// The number of bytes used by the MFT entry.
Сюда же надо добавить параметры из FILENAME_ATTRIBUTE
DirectoryFileReferenceNumber: ULONGLONG;
// The file reference number of the directory in which the filename is entered.
NameType: UCHAR;
//The type of the name.A type of zero indicates an ordinary name, a type of one indicates
//a long name corresponding to a short name, and a type of two indicates a short
//name corresponding to a long name.
А также, от того является ли данная запись, записью "системного файла" или нет.
То что зависит от NameType, у меня вообще в голове не укладывается.
Остальные, хоть как-то да можно объяснить( с натяжкой) :)
P.S. Что-то я совсем запуталась :(


Anatoly Podgoretsky   (2007-06-23 12:38:00) [41]

Ну ты дала, нашла где задавать такой вопром, а ну бегом в WinAPI


Riply   (2007-06-23 12:25:00) [42]

Интересно: если у DirectoryFileReferenceNumber рассматривать
только последние 48 бит: NewNum := (DirectoryFileReferenceNumber and $0000FFFFFFFFFFFF),
то начинает проявляться что-то напоминающее закономерность :)
При (NewNum >= 30), если рассматривать объекты типа 'FILE', исключив директории,
то оставшиеся записи в MFT отсортированы по NewNum.
NewNum меньше 30 имеют файлы типа: $ObjectID, $LogFile и т.п.
Исключение составляют три файла: MOUNP~1, bootex.log и tracking.log
Что это за файлы - не знаю.
Explorer их не находит(к разряду "уничтоженных" они не относятся).
$ - файлы, бог с ними. Они не от мира сего :)
А вот если бы суметь "объяснить" неувязочку с этими тремя файлами,
то у нас появилось бы некое подобие сортировки :)
Никто не знает кто они такие ?
P.S. Подопытный диск не системный.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо