デバイスドライバ
例えば、シリアルポートではXON/XOFF(英語版)のようにシリアルポート全般に共通する標準通信プロトコルに対応する必要がある。これはシリアルポートの論理層(クラスドライバ)で管理することになる。しかし、物理層(ミニドライバ)は特定のシリアルポートのチップと通信できなければならない。16550 UART というハードウェアはPL011とは異なる。物理層はそういったチップ固有の差異に対応している。慣例的に、OSからの要求はまず論理層に対して行われる。そして論理層から物理層が呼び出され、OSの要求をハードウェアが理解できる形にして実行する。逆にハードウェア周辺機器がOSに返答しなければならないとき、まず物理層が対応して論理層を呼び出す。
デバイスドライバがクラスごとに共通化されることで、特定のハードウェアが独自に持っている機能が使えなくなる、あるいは使いにくくなるという欠点もある。新規技術開発で出現したハードウェアでは、その機能をどのようにOSが抽象化するか(クラス化するか)が決まるまで、ミニドライバの開発が待たされることもある。この場合は、ハードウェア毎にネイティブなデバイスドライバを、階層化されないドライバ(モノリシック ドライバ)として作成すれば、早期にドライバを提供することができる。
モノリシックドライバでは、ioctlに、そのハードウェア独自の機能を使うための仕掛けを組み入れることも可能であり、これをあやつる専用のアプリケーションを作れば、さらにきめ細かなハードウェア制御を実現することもできる。
デバイスドライバの内部構造は、OSごとに大きく異なる。
パッケージ規格 Windows Drivers: 全てのWindows 10プラットフォームで機能する厳格な規格 Windows Desktop Drivers: デスクトップ版のみで機能する規格 Universal Windows Drivers(UWD): Windows Driversへ移行
ドライバ規格 Windows Driver Model (WDM) - Windows用ドライバの標準インターフェース Windows Driver Frameworks (WDF) - WDMをラップ・抽象化してシンプルかつ高機能にした公式ライブラリ・フレームワーク Kernel-Mode Driver Framework (KMDF) User-Mode Driver Framework (UMDF) 仮想デバイスドライバ (VxD) - かつて利用されていた形式(Windows 9x系など) Windows NT driver model - Windows NTで主に利用されていた形式
Windows Display Driver Model (WDDM) – Windows Vista でのグラフィックスドライバのアーキテクチャ