User-Mode NetAdapterCx
A partir do Windows 11, versão 24H2, o NetAdapterCx permite que você registre um driver de placa de rede User-Mode Driver Framework (UMDF). As APIs UMDF no NetAdapterCx se alinham às versões KMDF, permitindo que você converta o driver do cliente baseado em KMDF em UMDF com pouca ou nenhuma alteração de código.
Benefícios dos drivers NetAdapterCx no modo de usuário
A criação de um driver UMDF NetAdapterCx oferece as seguintes vantagens:
Sistema mais estável: um driver de modo de usuário só pode acessar o espaço de endereço do processo. Se ele travar, isso não afetará o sistema. O driver pode reiniciar automaticamente, restaurando rapidamente a conexão.
Mais segurança: os aplicativos de modo de usuário não podem acessar diretamente recursos essenciais do sistema nem executar instruções privilegiadas. Portanto, qualquer violação na segurança do driver não compromete a integridade do kernel.
Desenvolvimento mais simples: os drivers de modo de usuário melhoram o fluxo de trabalho do desenvolvedor. Não há necessidade de esperar que as máquinas de teste sejam reinicializadas após falhas, e a implantação pode ser mais rápida usando-se a mesma máquina para desenvolvimento e teste.
Mais inovação e flexibilidade: as restrições de desenvolvimento de drivers no modo kernel costumam limitar a inovação. Os drivers de modo de usuário oferecem um ambiente mais flexível, permitindo que desenvolvedores usem recursos e ferramentas avançadas que são incompatíveis ou difíceis de implementar no modo kernel.
Limitações do NetAdapterCx em modo de usuário
Os recursos a seguir estão disponíveis apenas para drivers NetAdapterCx baseados em KMDF.
DMA (Direct Memory Access)
O DMA ainda não está disponível no modo de usuário.
Os drivers UMDF devem definir o membro DmaCapabilities em NET_ADAPTER_RX_CAPABILITIES e NET_ADAPTER_TX_CAPABILITIES como NULL.
Alocação de buffer do lado do cliente
O gerenciamento de buffer de dados de rede do lado do cliente não está disponível no modo de usuário. Os drivers UMDF NetAdapterCx devem contar com o sistema para alocar buffers de dados para os caminhos de dados de transmissão e recebimento.
Quando o driver UMDF anuncia seus recursos de buffer de dados de hardware usando a estrutura NET_ADAPTER_RX_CAPABILITIES, ele deve:
- Definir NET_RX_FRAGMENT_BUFFER_ALLOCATION_MODE como NetRxFragmentBufferAllocationModeSystem.
- Definir NET_RX_FRAGMENT_BUFFER_ATTACHMENT_MODE como NetRxFragmentBufferAttachmentModeSystem.
- Definir NET_MEMORY_MAPPING_REQUIREMENT como NetMemoryMappingRequirementNone.
Converter um driver KMDF NetAdapterCx em UMDF
Para operar no modo de usuário, o driver do cliente deve usar apenas APIs WDF principais que fazem parte do UMDF. Por exemplo, o driver do cliente não deve usar nenhuma API exclusiva para drivers KMDF.
Para converter o driver KMDF NetAdapterCx em UMDF, siga as etapas em Como converter um driver KMDF em um driver UMDF 2.
As versões UMDF e KMDF do NetAdapterCx compartilham o mesmo número de versão principal.