INF (Information File) 是 Windows 平台上描述硬體裝置資訊、驅動檔案關聯及安裝流程的核心文本文件。許多開發者誤以為 INF 就是驅動程式本身,實際上它更像一份「安裝說明書」,指導 Windows 如何識別裝置、複製檔案、寫入註冊表並完成配置。掌握 INF 結構對驅動開發、系統部署與故障排查至關重要。
| Section | 用途 |
|---|---|
| [Version] | 版本控制與簽名,如 `Signature="$CHICAGO$"` (Win9x) 或 `Signature="$Windows NT$"` (NT+) |
| [Strings] | 集中定義字串常數,便於多語言與維護 |
| [DestinationDirs] | 定義檔案複製目標路徑,使用 LDID 代碼 (10=Windows, 11=System32...) |
| [SourceDisksNames] | 描述來源磁碟序號、標籤、卷標 |
| [SourceDisksFiles] | 列出來源檔案與磁碟序號對應關係 |
| [DefaultInstall] | 安裝入口,引用 CopyFiles/AddReg/DelReg 等指令 |
`[Manufacturer]` 區塊將廠商名稱映射至具體裝置 Section(如 `[Mfg0]`),每行格式:
`%DeviceDesc%=InstallSection, HardwareID`
其中 HardwareID 遵循 `PCI\VEN_XXXX&DEV_XXXX...` 規範,Windows 據此匹配驅動。
[Version]
Signature="$CHICAGO$"
LayoutFile=layout.inf
[Manufacturer]
%MfgName%=Mfg0
[Mfg0]
%DeviceDesc%=YouMark_DDI, PCI\VEN_9999&DEV_9999
[YouMark_DDI]
CopyFiles=YouMark_Files_Driver
AddReg=YouMark_9X_AddReg
[YouMark_9X_AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,HelloWDM.sys
[YouMark_Files_Driver]
HelloWDM.sys
[Strings]
MfgName="Microsoft"
DeviceDesc="MyDevice"
此範例展示了從版本聲明、裝置匹配、檔案複製到註冊表寫入的完整鏈路。實際專案中常擴展 `[DefaultInstall.Services]`、`[DDInstall.HW]` 等進階節點以支援服務安裝、電源管理等功能。
深入理解 INF 機制,能讓驅動部署從「試錯」轉向「精準可控」,是 Windows 驅動工程師的必修內功。