.NET interface

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, implementing IDisposable with 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> and Span<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