驱动程序包包括必须提供的所有软件组件,以确保你的设备受 Windows 支持。 通常,驱动程序包包含以下组件:
- 设置信息 (INF) 文件
- 目录文件
- 驱动程序文件
- 其他文件
驱动程序包的每个组件的简要说明如下。
Windows 驱动程序工具包(WDK)包括示例驱动程序包。 有关详细信息,请参阅 示例设备安装文件
INF 文件
每个驱动程序包都必须包含安装信息(INF)文件,设备安装组件在安装设备时读取该文件。 INF 文件不是安装脚本。 它是提供设备和驱动程序信息的 ASCII 或 Unicode(仅限 UTF-16)文本文件。 安装信息包括在设备上安装驱动程序包所需的驱动程序文件、注册表项、设备 ID、 目录文件和版本信息。
INF 文件的确切内容和格式取决于 INF 声明自己属于的 设备设置类。 INF 节摘要 描述了每种类型的 INF 中所需的信息。 通常,每个制造商的信息位于 INF Models 部分。 “模型”部分中的条目是指包含特定于模型的详细信息的 INF DDInstall 节。
InfVerif 工具检查所有跨类 INF 节和指令的语法和结构,以及除打印机以外的所有设置类的类特定扩展。 InfVerif 工具驻留在 WDK 的 \tools 目录中。
可以使用单个 INF 文件在所有版本的 Windows作系统上安装。 有关详细信息,请参阅 为多个平台和作系统创建 INF 文件。 如果你的设备在国际市场销售, 请创建一个国际 INF 文件。 根据涉及的区域,国际 INF 文件可能必须是 Unicode (UTF-16) 文件,而不是 ASCII。
为驱动程序创建 INF 文件的好方法是修改 WDK 提供的其中一个示例。 大多数 WDK 示例驱动程序都包含与示例驱动程序相同的目录中的 INF 文件。
设备的 INF 文件必须至少包含以下信息:
- 有关哪些操作系统版本支持该驱动程序包的信息
- 驱动程序包的安装类 GUID 和安装类
- 驱动程序包版本信息
- 驱动程序文件的名称及其源和目标位置
- 特定于设备的信息,包括 硬件 ID 和 兼容的 ID,用于确定驱动程序包的适用性
- 目录 (.cat) 文件的名称
- 有关如何以及何时加载每个驱动程序包提供的服务的信息
如果设备涉及启动系统,则安装要求会有所不同。 请参阅 安装启动驱动程序。
有关 INF 文件的详细信息,请参阅 “创建 INF 文件”。 此外,请查看 InfVerif 的文档、WDK 中与设备相关的特定文档,以及随附示例驱动程序提供的、适用于类似设备的 INF 文件。
目录文件
驱动程序目录文件包含驱动程序包中每个文件的加密哈希。 Windows 使用这些哈希来验证包在发布后是否未更改。 若要确保目录文件未更改,它必须具有该系统信任的数字签名,此数字签名适用于使用此驱动程序包的系统。
供应商通过将驱动程序包提交到 Windows 硬件质量实验室(WHQL)进行测试和签名来获取发布数字签名。 WHQL 返回包含目录文件的包(。cat 文件)。 有关详细信息,请参阅 WHQL 发布签名。
有关如何对驱动程序进行签名的信息,请参阅公开发布的驱动程序签名和开发和测试期间的驱动程序签名。
INF 文件必须使用 INF 的 INF 版本部分中的 CatalogFile 指令引用目录文件。
驱动程序文件
在大多数情况下,驱动程序包包含一个或多个驱动程序服务,这些服务应是安装驱动程序包 的设备的设备堆栈 的一部分。 有关驱动程序服务的详细信息,请参阅 “选择驱动程序模型”。 驱动程序服务是提供设备的 I/O 接口的包的一部分。 通常,驱动程序是一个具有 .sys 文件扩展名的动态链接库(DLL)。 允许使用长文件名,但 启动驱动程序除外。
支持特定设备所需的软件取决于设备的功能及其连接到的总线或端口。 Microsoft为许多常见设备提供驱动程序。 如果其中一个驱动程序可以为设备提供服务,可能只需要编写特定于设备的 微型驱动程序。 微型驱动程序代表系统提供的驱动程序处理特定于设备的功能。 对于某些类型的设备,甚至不需要微型驱动程序。 例如,通常只需安装文件即可支持调制解调器。
其他文件
驱动程序包可以包含其他文件,例如硬件校准设置、Win32 服务、设备图标或驱动程序库文件。 有关详细信息,请参见: