NDISwrapper をインストールした結果、Linux アプリケーションで動作するために何らかの Linux ドライバが生成されます。そのため、ユーザーが最初に行う作業は、いくつかの Windows ファイルと NDISwrapper 版の Windows DDK を Linux カーネルモジュールに「コンパイル」することです。これは「ndiswrapper」というツールで行います。生成された Linux ドライバは、(多くの場合手動で)OS にインストールされます。Linux アプリケーションはこの Linux ドライバにリクエストを送信することで、必要な変更を自動的に行い、(内部化された)Windows ドライバと DDK を呼び出すことができます。
USB マネージャーと PnP マネージャーにより、USB スティックに埋め込まれた Wi-Fi カードを使用できるようになります。USB マネージャーは 2 つの部分で構成されます。1 つ目は小さな USBD 実装 (USB スタック)、2 つ目はシンプルなWindows Driver Model (WDM) USB ドライバーです。WDM USB ドライバーは 2 つの部分で構成されています。前部は NDISwrapper USB スタックからの呼び出し (実際には、本来は Windows USB スタックに送られるはずの元の Windows ドライバーからの呼び出し) を受け取り、後部は Linux USB スタックを使用します。
以下の DDK をシミュレートする最小限の Ntoskrnl:
Windows ドライバーからの呼び出しを管理します。
Windows ドライバーへの IRP の管理 (現時点では WDM のみ)
フィルタドライバをシンプルな方法で管理する
Windows ドライバーのロード/アンロード
Linux の呼び出しを Windows に変換し、その逆も行うラッパー。結果とエラーコードも管理します。
x86アーキテクチャではWindows XP IA-32が普及しているため大きな問題にはなりませんが、多くのベンダーはWindows Vistaのみに64ビット版のドライバを提供することを選択しています。つまり、x86-64アーキテクチャを使用するLinuxシステムは、そのようなネットワークデバイスを使用することができません(64ビットシステムであるためXP IA-32 NDIS5を使用できず、NDIS6を使用できないためNDIS6 64ビットドライバも使用できません)。NDIS5を実装するWindows XP 64ビットドライバを使用することは依然として可能ですが、[9] xp64(NDIS5/64ビット)用のドライバはXP32(NDIS5/32ビット)用のドライバよりも少なくなっています。