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

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

在Windows驱动开发中,UMDF为用户模式驱动程序提供了一个安全稳定的开发框架。而INF文件作为驱动安装的核心,其正确配置对于驱动能否正常工作至关重要。这篇博客详细介绍UMDF驱动的INF文件配置,特别是设备类的选择与配置。实可以把INF文件理解为驱动的"安装说明书" - 它告诉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 // 签名文件(安全相关)

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图像识别服务

需求:提供图像识别能力,供其他程序调用
选择: SoftwareComponent类
原因:这是算法服务,应用程序应该通过API调用识别功能

强烈建议从System类开始,因为它的概念更直观,掌握了基础后,再学习SoftwareComponent类来开发更现代化的软件组件。

http://www.hskmm.com/?act=detail&tid=36716

相关文章:

  • 2025年诚信的光学真空镀膜机厂家推荐及选择指南 - Di
  • 2025 蛋白/8秒液体/发膜推荐榜:玛丝兰 5 星领跑,这些修护力出众的品牌值得囤!西安悦己容凭技术实力登顶
  • 2025年耐用的破碎机TOP厂家推荐
  • 2025年知名的雕塑推荐TOP品牌企业 - Di
  • 美股及墨西哥股票数据接口文档
  • Spring - 教程
  • 例子:vue3+vite+router创建多级导航菜单
  • 2025 - Di
  • JVM探究(Leo)
  • Higress v2.1.8:30 项引擎更新 + 4 项控制台更新
  • 2025 年最新推荐!集装箱拖车供应厂家权威榜单重磅发布,全方位解析优质厂家实力助企业选对合作伙伴
  • 实战案例 | 利用山海鲸可视化软件,构建制造业数字孪生监控大屏
  • 权威调研榜单:无线电环形导轨配件生产厂家TOP3榜单好评深度解析
  • 10.22模拟赛总结
  • 从零开始制作操作系统—— 最简单的操作系统内核
  • 【CSP出版 | 最快投稿后一个月见刊 | 检索稳定】2025年艺术、教育与管理国际学术会议(ICAEM 2025)- 第六期
  • 【LeetCode 每日一题】120. 三角形最小路径和——(解法二)自底向上 - 实践
  • HDFS Java api操作-cnblog
  • 电网不平衡条件下DFIG风力发电机动态建模与控制
  • Pandas 深入学习【3】材料标准化处理 StandardScaler
  • C#实现CRC8、CRC16、CRC32校验算法
  • JAVA 开发者入门 AI:基于 JBoltAI 平台快速搭建第一个 AI 应用
  • 2025 年切纸机源头厂家最新推荐榜单:全自动 / 程控 / 大型等设备品牌评测,深度解析大鹏等企业实力
  • 成功案例分享|ArmSoM CM5赋能海洋保育,边缘AI守护鲸豚之声
  • 2025 年最新推荐走心机加工实力厂家排行榜:覆盖航空 / 医疗 / 汽车等多领域优质企业精选 不锈钢零件/高铁零件/精密数控走心机加工厂家推荐
  • 权威调研榜单:简易丝杆模组厂家TOP3榜单好评深度解析
  • Kerberoasting攻击剖析:Active Directory中的密码破解漏洞
  • 千疮百孔的心被恨与悲彻底剥离 Kill my memory 让我将快乐全忘记
  • 速尝鲜!PS 2026 新功能:移除工具 + 神经滤镜
  • KeyShot 2025最新安装包下载及详细安装教程,附永久免费中文安装包 KeyShot2025