Поделиться через


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Версии UMDF и KMDF netAdapterCx используют одинаковый номер основной версии.