フレームワークベースのドライバーの同期技法

カーネル モード ドライバーによる処理の同期は、ドライバーの作成時に遂行する必要がある最も困難な作業の 1 つです。各ドライバーがユニプロセッサ システム上の 1 つのデバイスだけを処理する場合、各デバイスが同時に処理する同期 I/O 操作が 1 つだけである場合、システムで複数のデバイスによる割り込みベクターの共有が許可されていない場合などは、同期に関する問題は発生しません。この場合は、ドライバーの作成を比較的簡単に進めることができます。

しかし、多くのデバイス ドライバーでは、システム上の複数のデバイスをサポートする必要があり、各デバイスによって非同期の I/O 操作が生成されます。複数のプロセッサがドライバー スレッドを並行して、場合によっては複数の IRQL レベルで実行できる場合、異なる種類の複数のデバイスが 1 つの割り込みベクターを共有する場合、複数のアプリケーションが各デバイスへのアクセスを共有する場合などがこれに該当します。

カーネル モード ドライバー フレームワークには、ドライバーで処理する必要のある同期タスクを簡略化する同期機能が用意されています。次のトピックでは、ドライバーの操作を同期させるためにカーネル モード ドライバー フレームワークに用意されているメカニズムについて説明します。

自動同期の使用

フレームワークのロックの使用