Windows 11 バージョン 24H2 以降では、NetAdapterCx を使用して 、User-Mode Driver Framework (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 バージョンは、同じ メジャー バージョン番号を共有します。