NetAdapterCx в пользовательском режиме

Начиная с версии 24H2 Windows 11, NetAdapterCx позволяет писать драйвер сетевого адаптера для User-Mode Driver Framework (UMDF). API UMDF в NetAdapterCx соответствуют версиям KMDF, что позволяет преобразовать драйвер клиента на основе KMDF в UMDF без изменений кода.

Преимущества драйверов NetAdapterCx в пользовательском режиме

Создание драйвера UMDF NetAdapterCx обеспечивает следующие преимущества:

  1. улучшенная стабильность системы: драйвер пользовательского режима может получить доступ только к адресной области своего процесса. Если происходит сбой, это не влияет на систему. Драйвер может перезапускаться автоматически, быстро восстанавливая подключение.

  2. улучшенная безопасность: приложения пользовательского режима не могут напрямую обращаться к критически важным системным ресурсам или выполнять привилегированные инструкции. Таким образом, любые нарушения безопасности драйверов не скомпрометруют целостность ядра.

  3. упрощенной разработки: драйверы пользовательского режима могут улучшить рабочий процесс разработчика. Нет необходимости ждать перезагрузки тестовых компьютеров после сбоя, и развертывание может быть быстрее с помощью того же компьютера для разработки и тестирования.

  4. повышение инноваций и гибкости: ограничения разработки драйверов в режиме ядра часто ограничивают инновации. Драйверы пользовательского режима предоставляют более гибкую среду, позволяя разработчикам использовать расширенные функции и средства, которые могут быть несовместимы или сложны для реализации в режиме ядра.

Ограничения пользовательского режима NetAdapterCx

Следующие функции в настоящее время доступны только для драйверов NetAdapterCx на основе KMDF.

Прямой доступ к памяти (DMA)

DMA еще не доступна в пользовательском режиме.

Драйверы UMDF должны задать значение NULLдля члена DmaCapabilities в NET_ADAPTER_RX_CAPABILITIES и NET_ADAPTER_TX_CAPABILITIES.

Выделение буфера на стороне клиента

Управление буфером сетевых данных на стороне клиента недоступно в пользовательском режиме. Драйверы UMDF NetAdapterCx должны полагаться на систему, чтобы выделить буферы данных для путей передачи и получения данных.

Когда драйвер UMDF рекламирует возможности буфера аппаратных данных с помощью структуры NET_ADAPTER_RX_CAPABILITIES, он должен:

Преобразование драйвера KMDF NetAdapterCx в UMDF

Чтобы работать в пользовательском режиме, драйвер клиента должен использовать только основные API WDF, которые являются частью UMDF. Например, драйвер клиента не должен использовать интерфейсы API , эксклюзивные для драйверов KMDF.

Чтобы преобразовать драйвер KMDF NetAdapterCx в UMDF, выполните действия, описанные в как преобразовать драйвер KMDF в драйвер UMDF 2.

Версии UMDF и KMDF NetAdapterCx имеют одинаковый основной номер версии .