Бродя по сети в поисках объяснений того, как читать/писать MFT, я нашел следующий раздел:(http://www.installsetupconfig.com/win32programming/1996%20AppE_apnilife.pdf)
Если для параметра NtfsProtectSystemFiles задано значение FALSE, можно открыть специальные файлы. Есть, однако, некоторые недостатки, связанные с попыткой сделать это: поскольку многие из специальных файлов открываются особым образом при монтировании тома, они не готовы обрабатывать запросы IRP_MJ_READ, возникающие в результате вызова ZwReadFile, и система происходит сбой, если такой запрос получен. Эти специальные файлы можно прочитать, сопоставив специальный файл с ZwCreateSection и ZwMapViewOfSection, а затем прочитав сопоставленные данные. Еще одна проблема заключается в том, что некоторые из специальных файлов не подготовлены для обработки запроса IRP_MJ_CLEANUP, который генерируется при закрытии последнего дескриптора файлового объекта, и при получении такого запроса происходит сбой системы. Единственный вариант — продублировать дескриптор открытия специального файла в процесс, который никогда не завершится (например, системный процесс).
- Что значит «они не готовы обрабатывать запросы IRP_MJ_READ» какая подготовка нужна? Что такое IRP_MJ_READ?
- «Отображение специального файла с помощью ZwCreateSection и ZwMapViewOfSection и последующее чтение сопоставленных данных». Как это решает проблему?
- Что означает «файлы не готовы к обработке запроса IRP_MJ_CLEANUP, который генерируется при закрытии последнего дескриптора файлового объекта», опять же, что это за подготовка? Что такое IRP_MJ_CLEANUP?
- «Дублировать дескриптор открытия специального файла в процесс, который никогда не завершится». Как это решает проблему?