Обнаружение запросов на чтение только метаданных в файловой системе Windows - PullRequest
0 голосов
/ 29 октября 2009

Я разрабатываю своего рода драйвер файловой системы. Все запросы на чтение, которые Windows отправляет моей файловой системе, выполняются драйвером.

Я бы хотел провести различие между «обычными» запросами на чтение и теми, кто хочет получать из файла только метаданные. (Windows читает сначала 4K файла, а затем прекращает чтение).

Windows помечает метаданные как прочитанные? Было бы очень полезно по-другому трактовать эти два вида операций.

В типичном вызове CreateFile у нас есть параметры AccessMode, ShareMode, CreationDisposition и FlagsAndAttributes (будучи DWORD), я не уверен, возможно ли извлечь какой-то ключ к запрошенной операции.

Спасибо за чтение:)

Ответы [ 3 ]

0 голосов
/ 02 ноября 2009

При перечитывании кажется, что вопрос ищет не то место для оптимизации. Почему бы не рассматривать каждый запрос на первые 4 КБ как запрос метаданных? В этом предположении очень мало вреда.

Предположение об обратном было бы вредным, если вы делаете 100 МБ реального ввода-вывода, когда вам действительно требуется только 4 КБ. Но если вам нужно 100 МБ, небольшая оптимизация для первых 4 КБ приводит к не более чем разовому небольшому скачку для длительной операции.

0 голосов
/ 13 декабря 2010

Не Windows, а Windows Explorer выполняет сканирование файлов для извлечения метаданных. Кроме того, вы также будете сталкиваться с чтениями для создания миниатюр.

Сообщение диска как удаленного / сетевого в Windows приведет к тому, что Explorer прочитает меньше информации и уменьшит нагрузку на файловую систему, но, к сожалению, нет способа полностью заблокировать такое чтение.

0 голосов
/ 30 октября 2009

Я бы посоветовал вам приобрести инструмент мониторинга файлов SysInternals.Он захватывает трассировки стека для каждого вызова, и, поскольку он понимает, PDB может даже показать вам имена функций.Это должно позволить вам выяснить многие детали этого конкретного звонка.

...