当前位置: 首页 > news >正文

UMDF驱动开发入门:二 详解INF文件与设备类选择

常见设备安装类速查表
Class NameClassGuid简要说明
System{4d36e97d-e325-11ce-bfc1-08002be10318}软件设备或未指定类别的系统级设备,显示在设备管理器的"系统设备"下。
SoftwareComponent{5c4c3332-344d-483c-8739-259e934c9cc8}软件组件,显示在"软件组件"下,适用于不关联特定硬件的驱动或软件更新。
Biometric{53d29ef7-377c-4d14-864b-eb3a85769359}生物识别设备,如指纹扫描器。
Display{4d36e968-e325-11ce-bfc1-08002be10318}显示适配器(显卡)。
HIDClass{745a17a0-74d3-11d0-b6fe-00a0c90f57da}人机接口设备,如键盘、鼠标等。
Media{4d36e96c-e325-11ce-bfc1-08002be10318}音频和视频设备,显示在"声音、视频和游戏控制器"下。
Net{4d36e972-e325-11ce-bfc1-08002be10318}网络适配器。
Ports{4d36e978-e325-11ce-bfc1-08002be10318}串行和并行端口。
USB{36fc9e60-c465-11cf-8056-444553540000}USB主机控制器和集线器。
WPD{eec5ad98-8080-425f-922a-dabf3de3f69a}Windows便携设备,如手机、媒体播放器。
INF文件:驱动的"身份证"和"说明书"

INF文件其实就是个文本文件,但它包含了驱动安装所需的所有信息。主要完成四个任务:

  1. 自我介绍- 我叫什么,版本多少,谁开发的

  2. 文件说明- 需要复制哪些文件,放到哪里

  3. 设备分类- 我属于哪类设备(最重要!)

  4. 服务注册- 如何启动和运行

解剖INF文件:一看就懂的结构

1. 版本信息 - "身份证页"

[Version] Signature = "$WINDOWS NT$" // 固定写法,表示这是Windows驱动 Class = SampleDevice // 设备类型:决定在设备管理器哪里显示 ClassGuid = {GUID} // 设备类型的唯一编号 Provider = %ManufacturerName% // 开发商名称 DriverVer = 01/01/2024,1.0.0.0 // 驱动版本 CatalogFile = YourDriver.cat // 签名文件(安全相关)

微软Class详细说明地址:https://learn.microsoft.com/en-us/windows-hardware/drivers/install/system-defined-device-setup-classes-available-to-vendors

2.文件管理 - "附件清单" 源文件节(SourceDisksNames/Files)

[SourceDisksNames] 1 = %DiskName%,,,"" // 磁盘标签 [SourceDisksFiles] YourDriver.dll = 1,, // 驱动文件在哪 [DestinationDirs] YourDriver.DriverFiles = 12 // 驱动文件安装到System32\drivers

3.设备安装 - "安装步骤" 设备安装节(Device Installation)

[Manufacturer] %ManufacturerName% = MyCompany,ntamd64 // 厂商信息 [MyCompany] %DeviceName% = YourDevice_Install, Root\YourDevice // 设备名称和ID [YourDevice_Install] Include = umdf.inf // 引用UMDF标准安装步骤 Needs = UmdfDriverEntry // 需要UMDF驱动入口 CopyFiles = YourDriver.DriverFiles //ceInstall

设备类的选择

对于不涉及真实硬件的开发,主要就是两个选择:

System类 - "虚拟硬件"

把它想象成:创建一个虚拟的设备

[Version] Class = System ClassGuid = {4d36e97d-e325-11ce-bfc1-08002be10318}

适合场景:

  • 虚拟串口(让软件以为有额外的COM端口)

  • 虚拟摄像头(视频会议软件的虚拟摄像头)

  • 测试设备(模拟各种硬件进行测试)

特点:

  • 在"设备管理器"→"系统设备"中显示

  • 应用程序可以用CreateFile打开设备

  • 支持所有Windows版本

SoftwareComponent类 - "纯软件服务"

把它想象成:安装一个系统服务组件

[Version] Class = SoftwareComponent ClassGuid = {5c4c3332-344d-483c-8739-259e934c9cc8}

适合场景:

  • 音频处理插件(音效增强、降噪)

  • 视频解码器(支持新的视频格式)

  • AI推理引擎(图像识别、语音处理)

  • 安全服务组件(加密、验证服务)

特点:

  • 在"设备管理器"→"软件组件"中显示

  • 通过专用API调用,不直接"打开设备"

  • 只支持Windows 10及以上版本

实际项目选择指南

场景1:开发虚拟串口

需求:让串口调试工具能连接到一个虚拟的COM端口 选择:System类 原因:串口工具期望用CreateFile("COM3")这种方式打开设备

场景2:开发音频特效插件

需求:为系统音频添加实时混响效果 选择: SoftwareComponent类 原因:这是音频处理服务,通过音频API集成,不是独立的"设备"

场景3:开发USB设备模拟器

需求:模拟一个USB键盘,让系统认为插入了真实键盘 选择:System类 原因:需要让系统检测到"硬件设备"存在

场景4:开发AI图像识别服务

http://www.cnnetsun.cn/news/3075606.html

相关文章:

  • 软件测试——黑盒测试
  • AI Agent 三种记忆的工程落地
  • 网络安全事件报告——伪CAPTCHA诱骗用户运行危险的PowerShell脚本
  • 小白可懂的保姆级 Redis 教程
  • ponytail爆火:专治AI编程过度造轮子,代码直接砍半
  • 解密 MCP:开启 AI 与数据交互的新标准
  • 新课标下,小学数学最需要的能力不是“算得快“,而是“想得通“
  • 深入认识ClassLoader - 一次投产失败的复盘
  • DeepSeek美化-为 DeepSeek 网页版引入 Obsidian Border 主题视觉风格
  • RAG基础
  • 做智驾十年,为何Momenta上市换锚?
  • 企业DLP选型指南:从入门到决策,一篇讲透
  • PEAK框架:自然语言驱动的GPU内核优化技术解析
  • Lyra框架:RISC-V处理器验证的异构加速与语义生成技术
  • 郑州翻译公司 俄语保险翻译清单
  • 模板题这道模板题非常全面,相比应用李超线段树的时候实现的东西要多的多:
  • 基于STM32单片机的颜色识别 TCS3200 RGB 检测系统2(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • X-diagnosis实战案例:解决生产环境中的10个典型系统故障
  • Spring MVC的工作流程
  • Go语言代码覆盖率实现一、什么是代码覆盖率
  • 2026年乐清高定全屋木作品牌深度评测:木艺空间定制馆凭何领跑?
  • 气泡特效的核心在于BubbleEffect类,它继承自Manim的Animation类,通过重写关键方法来实现气泡的上升、变大和透明度变化效果。
  • 一文搞懂巴别鸟版本管理:从历史回溯到冲突解决的完整攻略
  • 河南AI大模型人才培养观察:从通识普及到产业实战的多元路径
  • 快马AI三步搭建OpenClaw安卓自动化测试环境:告别手动配置噩梦
  • 别乱改!Multisim14.2三极管仿真参数修改的实战避坑指南(以2N3904为例)
  • 把 quicklink 的预加载思想搬到 API 层:我设计了一套‘懒请求调度器’,首屏并发从 9 降到了 2
  • 化学图像识别工具横评:DECIMER、Img2Mol、MolScribe,哪个更适合你的科研流水线?
  • 《Debezium + Kafka Connect 实战:从零搭建 MySQL CDC 数据管道,踩坑全记录》
  • M4Markets:技术架构的路径复盘