Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.03.14;
Скачать: [xml.tar.bz2];

Вниз

Как получить список файлов из MFT?   Найти похожие ветки 

 
JSman ©   (2010-01-12 15:50) [0]

Здравствуйте! Стоит задача написать быстрый поиск файлов. Обход файловой системы по директориям хотел бы заменить более скорым способом: получить напрямую список файлов из MFT. Возможно ли получить список из MFT? Буду рад услышать и альтернативные варианты перебора файлов. Заранее благодарю!


 
Riply ©   (2010-01-12 20:37) [1]

> [0] JSman ©   (12.01.10 15:50)
> Здравствуйте! Стоит задача написать быстрый поиск файлов

Можно ускорить процесс, работая с Native ф-ми. (от 20% на неиндексированном диске до 50% - на индексированном)

> Возможно ли получить список из MFT?
Возможно.
Но, скорее всего, игра не будет стоить свеч.
Реализация довольно трудоемка, а выигрыш незначителен (если вообще будет).
(Во всяком случае у меня так получалось. Правда я не гналась за скоростью)


 
JSman ©   (2010-01-13 14:25) [2]

@ Riply, спасибо Вам за ответ!


> Можно ускорить процесс, работая с Native ф-ми.


Вы имеете в виду, что мне следует ограничиться FindFirstFile и FindNextFile?


> Но, скорее всего, игра не будет стоить свеч.
> (Во всяком случае у меня так получалось. Правда я не гналась за скоростью)

Все-таки думаю проверить: мне показалось, что быстрее прочитать один файл, чем работать с деревом, тем более, что интересуют только имена файлов. Хотя, возможно Вы правы. Не могли бы показать Ваш код? Мне бы это было очень полезным.


 
Riply ©   (2010-01-13 15:41) [3]

> [2] JSman ©   (13.01.10 14:25)
> Вы имеете в виду, что мне следует ограничиться FindFirstFile и FindNextFile?

Нет. Я имела ввиду использование ф-ий типа NtQueryDirectoryFile

> Все-таки думаю проверить: мне показалось, что быстрее прочитать один файл, чем работать с деревом,
> тем более, что интересуют только имена файлов.

Прочитать один файл не получиться, ибо:
1. Не существует такого файла, как MFT (это только кусочек(ки) диска, рассматриваемого как файл)
2. Даже сели мы считаем этот  кусочек(и), то данных нам будет недостаточно.
  Дело в том, что FILE_RECORD может содержать не резидентные атрибуты (не сидящие в самой MFT)
  и нам придется считывать те куски, где они реально находятся.

> Не могли бы показать Ваш код? Мне бы это было очень полезным.

К сожалению, это не получиться, ибо его(кода) довольно много
и в нем используется куча собственнолапных структур и ф-ий.
Выдернуть его из проекта просто нереально.


 
Игорь Шевченко ©   (2010-01-13 15:56) [4]


> Не существует такого файла, как MFT


Куда дели ? Файл 0.


> Дело в том, что FILE_RECORD может содержать не резидентные
> атрибуты (не сидящие в самой MFT)
>   и нам придется считывать те куски, где они реально находятся.
>


Имя файла обычно резидентный атрибут.


 
JSman ©   (2010-01-13 16:02) [5]


> Нет. Я имела ввиду использование ф-ий типа NtQueryDirectoryFile

Теперь я Вас понял. Спасибо огромное за полный ответ!


 
JSman ©   (2010-01-13 16:04) [6]

Информацию по MFT отсюда http://www.ntfs.com/ntfs-mft.htm


 
JSman ©   (2010-01-13 16:08) [7]

NTFS File Attributes

The NTFS file system views each file (or folder) as a set of file attributes. Elements such as the file"s name, its security information, and even its data, are all file attributes. Each attribute is identified by an attribute type code and, optionally, an attribute name.

When a file"s attributes can fit within the MFT file record, they are called resident attributes. For example, information such as filename and time stamp are always included in the MFT file record. When all of the information for a file is too large to fit in the MFT file record, some of its attributes are nonresident. The nonresident attributes are allocated one or more clusters of disk space elsewhere in the volume. NTFS creates the Attribute List attribute to describe the location of all of the attribute records.

http://www.ntfs.com/ntfs-files-types.htm


 
Riply ©   (2010-01-13 16:08) [8]

> [4] Игорь Шевченко ©   (13.01.10 15:56)

> Куда дели ? Файл 0.
Угу. Неудачно выразилась. $MFT, разумеется существует.

> Имя файла обычно резидентный атрибут.
Это так. Но если нам надо получить список объектов, "содержащихся" в данном,
то с большой долей вероятности, мы столкнемся с нерезидентными атрибутами.
P.S.
Линуксоиды утверждают, что имя объекта всегда резидентно.


 
Riply ©   (2010-01-13 16:14) [9]

> [7] JSman ©   (13.01.10 16:08)

Microsoft`цы оказывается тоже :)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.03.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
2-1263305551
Б
2010-01-12 17:12
2010.03.14
Функция ExtEscape. Применение?


2-1263222743
Pavel
2010-01-11 18:12
2010.03.14
Компонент idHTTPServer


2-1262865203
V
2010-01-07 14:53
2010.03.14
Как быстро и красиво отрисовать огромный битмап?


15-1257017604
Kerk
2009-10-31 22:33
2010.03.14
Книга мастеров


15-1261725051
ruslan_as
2009-12-25 10:10
2010.03.14
Не работает LPT при заблокированом компьютере





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский