Network Adapter WDF Class Extension (NetAdapterCx)
Overview
Starting in Windows 10, version 2004, the Windows Driver Kit (WDK) includes a Network Adapter WDF Class Extension module (NetAdapterCx) that enables you to write a KMDF-based client driver for a Network Interface Controller (NIC). Starting in Windows 11, version 24H2, the UMDF version of NetAdapterCx enables NIC drivers to operate in user-mode. NetAdapterCx gives you the power and flexibility of WDF and the networking performance of NDIS, and makes it easy to write a driver for your NIC.
In previous versions of Windows, WDF and NDIS had individual advantages, but did not interoperate well. The only way to write a NIC driver was to write an NDIS miniport driver. To use WDF in an NDIS miniport driver, you had to write extra code in your driver, and even then, you only had access to a small subset of WDF functionality.
With the NetAdapterCx model, conversely, you write a real WDF driver for your NIC. This means that your NetAdapterCx driver has access to full WDF functionality, as well as networking-specific APIs and I/O support from the NetAdapter class extension. As shown in the block diagram below, NetAdapterCx still works behind the scenes with NDIS, but it handles all the interaction with NDIS on your behalf.
Additional info
The following video Network Adapter Class Extension: Overview discusses the benefits of using NetAdapterCx.
To learn how to port an NDIS 6.x miniport driver to the NetAdapterCx NIC driver model, see Porting NDIS miniport drivers to NetAdapterCx.
To start working right away with driver samples on GitHub, clone our NetAdapter-Cx-Driver-Samples repo.
To see the source code for NetAdapterCx itself, or perform step-through debugging, see our Network-Adapter-Class-Extension repo on GitHub.
If you would like to work with Microsoft as you develop a NetAdapterCx client driver, or have feedback on the class extension, please send us an email.
The following video Network Adapter Class Extension: Roadmap and Collaboration discusses future roadmap and collaboration opportunities.
Topics
This section contains the following topics:
- Porting NDIS miniport drivers to NetAdapterCx
- Building a NetAdapterCx client driver
- INF files for NetAdapterCx client drivers
- User-mode NetAdapterCx
- Managing the lifetime of objects in NetAdapterCx
- Accessing configuration information
- Debugging a NetAdapterCx client driver
- Transferring network data
- NetAdapterCx receive side scaling (RSS)
- Configuring power management
- NDIS-WDF function equivalents
- NetAdapterCx limitations
- Mobile Broadband (MBB) WDF class extension (MBBCx)
- Wi-Fi WDF class extension (WiFiCx)