Чтение файла в режиме ядра - PullRequest
1 голос
/ 26 апреля 2011

Я создаю драйвер и хочу прочитать некоторые файлы.Есть ли способ использовать «ZwReadFile ()» или аналогичную функцию для чтения содержимого файлов построчно, чтобы я мог обрабатывать их в цикле.

Документация в MSDN гласит: - ZwReadFileначинает чтение с заданного ByteOffset или текущей позиции файла в заданном буфере.Он завершает операцию чтения при одном из следующих условий:

  1. Буфер заполнен, поскольку было прочитано число байтов, указанное в параметре Length.Следовательно, в буфер больше нельзя помещать данные без переполнения.
  2. Конец файла достигается во время операции чтения, поэтому в файле больше нет данных для передачи в буфер.

Спасибо.

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

Нет, нет.Вам нужно создать оболочку для достижения того, чего вы хотите.

Однако, учитывая, что код режима ядра может привести к сбою системы, а не к процессу, в котором она выполняется, вы должны убедиться, что такие проблемыпоскольку те, которые известны из пользовательского режима с очень длинными строками и т. д., не вызовут проблем.

Если объем данных (и останется) ниже порогового значения, которое могут храниться в значениях реестра, вы должны использовать его вместо этого.В частности, REG_MULTI_SZ, который имеет свойства, которые вы ищете («построчное» хранение данных).

0 голосов
/ 15 июня 2011

В этой ситуации, если производительность не является критической (например, в режиме реального времени), я бы передал фильтрацию службе или приложению пользовательского режима. Отправьте имя файла в приложение для обработки. Приложение в пользовательском режиме легче тестировать и легче отлаживать. Это не синий экран или повесить ваш ящик либо.

...