驱动程序

设备驱动程序（），简称驱动程序（），是一个允许高階（）電腦軟體（computer software）与硬件（hardware）互動的程序，這種程式建立了一個硬體與硬體，或硬體與軟體溝通的介面，經由主機板上的总线（bus）或其它溝通子系統（subsystem）與硬體形成連接的機制，這樣的機制使得硬體裝置（device）上的資料交換成為可能。

依據不同的電腦架構與作業系統差異平台，驅動程式經歷了8位元（8-bit）、16位元（16-bit）、32位元（32-bit）、64位元（64-bit）變遷，這是為了調和作業系統與驅動程式之間的依存關係，例如在Windows 3.11的16位元作業系統時代，大部份的驅動程式都是16位元，到了32位元的Windows XP則使用32位元驅動程式（微軟提供了Windows Driver Model可實作driver），至於64位元的Linux或是Windows平台上，就必須使用64位元的驅動程式（WDM與WDF皆可實作64位元驅動程式）。

 驅動程式的開發 
驅動程式的開發工作是很具挑戰性的，因為必須配合著硬體與軟體上相當明確與高級的平台技術。由於大多數的驅動程式（device drivers）執行在核心模式（kernel mode），軟體的錯誤經常造成系統嚴重的不穩定，例如-{zh-hans:蓝屏;zh-hant:藍色當機畫面}-（blue screen），這跟過去的-{zh-hans:用户模式;zh-hant:使用者模式}-（user mode）下的程式設計（例如Delphi、VB、Java）有明顯的差異性。
Windows平台
為了大量減輕驅動程式開發人員的負擔，微軟不斷的改進驅動程式的開發軟體與架構，從早期複雜深晦的VxD，到Windows XP上的Windows Driver Model（以下簡稱WDM）開發架構，如今Windows Driver Foundation（以下簡稱WDF）已成為新一代的Windows平台驅動程式發展架構，這個架構大量簡化了驅動程式的開發流程，更符合物件導向的精神，此架構包含了User Mode Driver Framework與Kernel Mode Driver Framework兩種開發模式。在開發Windows平台上的驅動程式之前，必須先安裝DDK（Driver Development Kit），DDK套件同時支援WDM與WDF兩種架構。

Linux平台
Linux下的设备有三种基本类型：字符设备，块设备和网络接口。

 驅動程式的應用 
因为常见的硬件和操作系统的差异性，驱动程序存在著不同的方式。用于：
 打印机
 显卡
 网卡
 声卡
 不同种类的总线
 不同种类的低带宽的-{zh-hans:输入/输出;zh-hant:I/O}--{zh-hans:总线;zh-hant:匯流排}-（如定点设备：鼠标、键盘、USB等等。）

 硬盘的連接介面/RAID（RAID，SCSI）;
 实现对不同的-{zh-hans:文件;zh-hant:檔案}-系统的支持。
 实现对扫描仪、数码相机的支持。

驱动程序的抽象化共同層級（Common levels of abstraction）：
 在-{zh-hans:硬件;zh-hant:硬體}-層方面：
 直接连接（Interfacing directly）
 使用一些較高層次的-{zh-hans:接口;zh-hant:介面}-（如：视频BIOS）
 使用另一低级别的驱动程序（如-{zh-hans:文件;zh-hant:檔案}-系统驱动程序使用-{zh-hans:磁盘;zh-hant:磁碟}-驱动程式）
 模拟-{zh-hans:硬件;zh-hant:硬體}-工作
 在-{zh-hans:软件;zh-hant:軟體}-層方面：
 允许操作系统直接存取-{zh-hans:硬件;zh-hant:硬體}-资源
 僅實現其原始樣式（primitives）
 实现对非驱动程式的-{zh-hans:软件;zh-hant:軟體}-的界面（如TWAIN）
 实现一个更高層级的语言，例如PostScript

 驅動程式的API 
Advanced Linux Sound Architecture（ALSA） - 標準新式Linux音效卡驅動程式介面（sound driver interface）
I/O Kit - 一種蘋果電腦（Apple）上的開放式介面適用於發展麥金塔作業系統（Mac OS X）的裝置驅動程式
Installable File System（IFS） - 一種IBM OS/2與Microsoft Windows NT的檔案系統API
Network Driver Interface Specification（NDIS） - 一種標準網路卡（network card）驅動程式API
Open Data-Link Interface（ODI） - 一種類似NDIS的網路卡API
Scanner Access Now Easy（SANE） - a public domain interface to raster image scanner hardware
Uniform Driver Interface（UDI） - 跨平台（cross platform）驅動程式的介面規範
Windows Display Driver Model（WDDM） - Windows Vista及以後平台上新式的圖形顯示（graphic display）驅動程式架構。從Windows 8開始，Windows不支援舊的XPDM。
Windows Driver Foundation（WDF）
Windows Driver Model（WDM）
Universal Windows Driver（UWD）

 参见 
Windows Driver Model
Windows Driver Foundation
Universal Windows Driver
硬體抽象層
Class driver
开源硬件
寄存器（Processor register）
中断（interrupt）
端口（port）

*
D
D
D
D