Windows Packet Filter provides modern, idiomatic managed bindings for .NET through the official NdisApiDotNet library. Available on NuGet and targeting .NET 8.0 (and .NET Standard), it provides a high-performance, memory-safe wrapper around native ndisapi.dll.
Installation via NuGet
dotnet add package NdisApiDotNet
Key Components
NdisApi: Primary class wrapping driver operations, implementingIDisposablewith safe handle management.NetworkAdapterEx: High-level adapter representation with GUIDs, friendly names, MAC addresses, and MTU values.- Zero-Allocation Packet Loops: Support for
Memory<byte>andSpan<byte>for high-throughput packet processing.
Minimal Example (C#)
using System;
using NdisApiDotNet;
using NdisApiDotNet.Native;
using var filter = NdisApi.Open();
if (!filter.IsValid)
{
Console.WriteLine("Failed to open WinpkFilter driver.");
return;
}
Console.WriteLine($"WinpkFilter Version: {filter.GetVersion()}");
var adapters = filter.GetNetworkAdapters();
foreach (var adapter in adapters)
{
Console.WriteLine($"Adapter: {adapter.Name} ({adapter.FriendlyName})");
}
Authoritative Repository
Official repository and full source: github.com/wiresock/ndisapi.net