Чтение файла в режиме ядра

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

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

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

Спасибо.


person whatisinaname    schedule 26.04.2011    source источник


Ответы (2)


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

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

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

person 0xC0000022L    schedule 26.04.2011

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

person MrBry    schedule 14.06.2011