MFTLib 0.2.0

dotnet add package MFTLib --version 0.2.0
                    
NuGet\Install-Package MFTLib -Version 0.2.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MFTLib" Version="0.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MFTLib" Version="0.2.0" />
                    
Directory.Packages.props
<PackageReference Include="MFTLib" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MFTLib --version 0.2.0
                    
#r "nuget: MFTLib, 0.2.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MFTLib@0.2.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MFTLib&version=0.2.0
                    
Install as a Cake Addin
#tool nuget:?package=MFTLib&version=0.2.0
                    
Install as a Cake Tool

MFTLib

Fast NTFS MFT (Master File Table) enumeration library for Windows. Parses MFT records via raw volume access with a native C++ core, multi-threaded parsing, and double-buffered I/O.

Features

  • Direct MFT parsing via raw volume access (no Windows Search or FindFirstFile)
  • Native C++ I/O with parallel fixup and parsing across all CPU cores
  • Double-buffered reads to overlap I/O with compute
  • Native-side filename filtering (exact match or contains, case-insensitive)
  • Native-side full path resolution
  • Configurable buffer sizes for tuning memory/performance tradeoffs
  • Benchmarked at 2.6M+ records/sec on 8M record synthetic MFT (Ryzen 9 7950X3D, Samsung 990 PRO)

Requirements

  • Windows (NTFS volumes)
  • .NET 8.0+
  • Administrator privileges (raw volume access)

Usage

using MFTLib;

// Open a volume and search for .git directories
using var volume = MftVolume.Open("C");
var records = volume.FindByName(".git", MatchFlags.ExactMatch | MatchFlags.ResolvePaths, out var timings);

foreach (var record in records.Where(r => r.IsDirectory))
    Console.WriteLine(record.FullPath);

Console.WriteLine($"Found {records.Length} matches in {timings.NativeTotalMs:F0}ms");

Read all records (unfiltered)

using var volume = MftVolume.Open("C");
var records = volume.ReadAllRecords(out var timings);

Configure buffer size

using var volume = MftVolume.Open("C", bufferSizeRecords: 65536); // 64MB buffers (default is 262144 = 256MB)
var records = volume.ReadAllRecords();

Building from source

Requires Visual Studio 2022 with C++ workload. Always build with MSBuild (not dotnet build) since the native C++ DLL cannot be built by the .NET CLI:

MSBuild.exe MFTLib.sln -p:Configuration=Release -p:Platform=x64

License

MIT

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.0 317 4/3/2026
0.1.2 115 3/14/2026
0.1.1 110 3/14/2026
0.1.0 106 3/14/2026