Мне нужен простой и легкий способ чтения NTFS MFT на сервере Windows с использованием только C. Моя цель - программно вернуть коллекцию каталогов и их разрешения для приложения, которое разрабатывает моя компания.
Каждый другой ответ, который я исследовал на StackOverflow и других местах, связан с использованием C ++ или других языков и, как правило, очень раздутый. Я почти уверен, что то, что я хочу, можно сделать всего несколькими строками кода, используя Windows API для вызова CreateFile (чтобы получить дескриптор корневого тома) и DeviceIoControl (для чтения MFT). Но я не могу найти простое решение C для этого.
Обратите внимание, что, хотя я уже много лет являюсь разработчиком на C # / .NET (а также знаю другие языки, включая Java и Python), я довольно новичок в низкоуровневом программировании на C и вызовах Windows API. Я также понимаю, что есть и Mft2Csv, который делает именно это. Но фактический исходный код не доступен для реинжиниринга (GitHub имеет только исполняемые и вспомогательные файлы).
Я также понимаю, что мог бы просто проанализировать дерево каталогов, используя C #, пространства имен .NET System.IO и System.Security.AccessControl. Но это слишком медленно для моих целей.