次の方法で共有


ネットワーク ドライバーでのマルチプロセッサのサポート

すべての Microsoft Windows バージョンのポータブル ドライバーを作成するには、複数の同時に実行されるプロセッサを搭載したコンピューターで安全に実行するコードを記述する必要があります。 ネットワーク ドライバーは、マルチプロセッサ セーフである必要があり、提供された NDIS ライブラリ関数を使用する必要があります。

ユニプロセッサ環境では、パケットが到着したとき、またはタイマー割り込みが発生したときに、ネットワーク インターフェイス カード (NIC) またはその他のデバイスが現在の実行ストリームを中断できる場合でも、1 つのプロセッサが一度に 1 つのコンピューター命令のみを実行します。 通常、パケット キューなどのデータ構造を操作する場合、ドライバーは NIC の割り込みを無効にし、操作を実行し、割り込みを再度有効にします。 ユニプロセッサ環境の多くのスレッドは同時に実行されているように見えますが、実際にはインターリーブされたタイム スライスで実行されます。

マルチプロセッサ環境では、プロセッサは複数のコンピューター命令を同時に実行します。 ドライバーは、1 つのドライバー関数が共通のデータ構造を操作するとき、同じまたは別のプロセッサ上の別のドライバー関数が同時に共有データを変更しないように同期する必要があります。 すべてのドライバー コードは、対称マルチプロセッサ (SMP) コンピューターに再入されます。 このリソース保護の問題を解消するために、Windows デバイス ドライバーはスピン ロックを使用します。 詳細については、「ネットワーク ドライバー の同期と通知をする」を参照してください。