用户模式 NetAdapterCx
从 Windows 11 版本 24H2 开始,NetAdapterCx 可用于编写用户模式驱动程序框架 (UMDF) 网络适配器驱动程序。 NetAdapterCx 中的 UMDF API 与 KMDF 版本保持一致,因此可用于将基于 KMDF 的客户端驱动程序转换为 UMDF,几乎无需修改代码。
用户模式 NetAdapterCx 驱动程序的优点
创建 UMDF NetAdapterCx 驱动程序具有以下优点:
增强的系统稳定性:用户模式驱动程序只能访问其进程的地址空间。 如果崩溃,则不会影响系统。 驱动程序可以自动重启,从而快速还原连接。
改善的安全性:用户模式应用程序无法直接访问关键系统资源或执行特权指令。 因此,驱动程序安全性方面的任何漏洞都不会损害内核的完整性。
简化的开发:用户模式驱动程序可以增强开发人员的工作流。 崩溃后无需等待测试计算机重新启动,并且部署可以更快地使用同一台计算机进行开发和测试。
提高的创新性和灵活性:内核模式驱动程序开发约束通常会限制创新。 用户模式驱动程序提供了更灵活的环境,使开发人员能够使用可能不兼容或在内核模式下实施困难的高级功能和工具。
用户模式 NetAdapterCx 的限制
以下功能目前仅适用于基于 KMDF 的 NetAdapterCx 驱动程序。
直接内存访问 (DMA)
DMA 在用户模式下尚不可用。
UMDF 驱动程序必须将 NET_ADAPTER_RX_CAPABILITIES 和 NET_ADAPTER_TX_CAPABILITIES 中的 DmaCapabilities 成员设置为 NULL。
客户端缓冲区分配
客户端网络数据缓冲区管理在用户模式下不可用。 UMDF NetAdapterCx 驱动程序必须依赖系统来分配传输和接收数据路径的数据缓冲区。
当 UMDF 驱动程序使用 NET_ADAPTER_RX_CAPABILITIES 结构播发其硬件数据缓冲区功能时,它必须:
- 将 NET_RX_FRAGMENT_BUFFER_ALLOCATION_MODE 设置为 NetRxFragmentBufferAllocationModeSystem。
- 将 NET_RX_FRAGMENT_BUFFER_ATTACHMENT_MODE 设置为 NetRxFragmentBufferAttachmentModeSystem。
- 将 NET_MEMORY_MAPPING_REQUIREMENT 设置为 NetMemoryMappingRequirementNone。
将 KMDF NetAdapterCx 驱动程序转换为 UMDF
若要在用户模式下运行,客户端驱动程序只能使用属于 UMDF 的核心 WDF API。 例如,客户端驱动程序不得使用 KMDF 驱动程序独占的任何 API。
若要将 KMDF NetAdapterCx 驱动程序转换为 UMDF,请执行如何将 KMDF 驱动程序转换为 UMDF 2 驱动程序中的步骤。
NetAdapterCx 的 UMDF 和 KMDF 版本具有相同的主版本号。