NetAdapterCx en modo usuario
A partir de Windows 11, versión 24H2, NetAdapterCx le permite escribir un controlador de adaptador de red del Marco de controladores en modo usuario (UMDF). Las API de UMDF de NetAdapterCx se alinean con las versiones de KMDF, por lo que puede convertir el controlador de cliente basado en KMDF en UMDF con poco o ningún cambio en el código.
Ventajas de los controladores NetAdapterCx en modo usuario
La creación de un controlador NETAdapterCx de UMDF ofrece estas ventajas:
Estabilidad mejorada del sistema: un controlador en modo de usuario solo puede acceder al espacio de direcciones de su proceso. Si se bloquea, no afecta al sistema. El controlador puede reiniciarse automáticamente y restaurar rápidamente la conexión.
Seguridad mejorada: las aplicaciones en modo usuario no pueden acceder directamente a recursos críticos del sistema ni ejecutar instrucciones con privilegios. Por lo tanto, cualquier infracción de seguridad del controlador no pone en peligro la integridad del kernel.
Desarrollo simplificado: los controladores en modo usuario pueden mejorar el flujo de trabajo del desarrollador. No es necesario esperar a que las máquinas de prueba se reinicien después de bloqueos y la implementación puede ser más rápida mediante el uso de la misma máquina para desarrollo y pruebas.
Mayor innovación y flexibilidad: las restricciones de desarrollo de controladores en modo kernel suelen limitar la innovación. Los controladores en modo usuario proporcionan un entorno más flexible, lo que permite a los desarrolladores usar características y herramientas avanzadas que podrían ser incompatibles o difíciles de implementar en modo kernel.
Limitaciones NetAdapterCx en modo usuario
Actualmente, las siguientes características solo están disponibles para controladores NetAdapterCx basados en KMDF.
Acceso directo a memoria (DMA)
DMA aún no está disponible en modo usuario.
Los controladores UMDF deben establecer el miembro DmaCapabilities de NET_ADAPTER_RX_CAPABILITIES y NET_ADAPTER_TX_CAPABILITIES en NULL.
Asignación del búfer del lado cliente
La administración del búfer de datos de red del lado cliente no está disponible en modo usuario. Los controladores NetAdapterCx de UMDF deben basarse en el sistema para asignar búferes de datos para las rutas de transmisión y recepción de datos.
Cuando el controlador UMDF anuncia sus funcionalidades de búfer de datos de hardware mediante la estructura NET_ADAPTER_RX_CAPABILITIES, debe:
- Establecer NET_RX_FRAGMENT_BUFFER_ALLOCATION_MODE en NetRxFragmentBufferAllocationModeSystem.
- Establecer NET_RX_FRAGMENT_BUFFER_ATTACHMENT_MODE en NetRxFragmentBufferAttachmentModeSystem.
- Establecer NET_MEMORY_MAPPING_REQUIREMENT en NetMemoryMappingRequirementNone.
Conversión de un controlador NetAdapterCx de KMDF en UMDF
Para funcionar en modo usuario, el controlador cliente solo debe usar las API de WDF principales que forman parte de UMDF. Por ejemplo, el controlador cliente no debe usar ninguna API exclusiva de controladores KMDF.
Para convertir el controlador NETAdapterCx de KMDF a UMDF, siga los pasos descritos en Conversión de un controlador KMDF a un controlador UMDF 2.
Las versiones UMDF y KMDF de NetAdapterCx comparten el mismo número de versión principal.