ユーザー モード 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 で DmaCapabilities メンバーを設定し、NET_ADAPTER_TX_CAPABILITIES を 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 バージョンは、同じメジャー バージョン番号を共有しています。