《WINUSB设备的inf文档的编写》

目录

简介... 1

1.      获取inf文件和cat文件模板... 1

1.1       创建WinUSB应用程序... 1

1.2       获取inf文件和cat文件... 3

2.      修改inf文件以安装WINUSB驱动... 3

3.      通过inf文件安装WINUSB驱动... 4

4.      编写inf文件可能遇到的问题... 4


 

简介

微软实际上是提供了一个inf文件和cat文件的模板,可以按照本文的步骤获取inf文件和cat文件,并且修改它们使它们为自己的设备装上WINUSB驱动。

1.       获取inf文件和cat文件模板

这一部分是从MSDN中截取下来的(网址为:https://msdn.microsoft.com/zh-cn/library/windows/hardware/dn376872(v=vs.85).aspx),主要是为了方便读者离线操作。

1.1 创建WinUSB应用程序

1、  打开 MicrosoftVisual Studio。在“文件”菜单上,选择“新建 > 项目”。会打开“新建目”对话框,如以下屏幕截图所示。

2、  在“新建项目”对话框的左侧窗格中,找到并选择“USB”。

3、  在中心窗格中,选择“WinUSB应用程序”。

4、  在“名称”字段中,如果愿意,更改项目名称。在本主题中,我们将使用默认名称。

5、  在“位置”字段中,输入要在其中创建新项目的目录。

6、  选中“创建解决方案的目录”。单击“确定”。

Visual Studio 创建了两个项目和一个解决方案。你可以看到该解决方案、两个项目以及属于“解决方案资源管理器”中各个项目的文件,如以下屏幕截图所示。(如果“解决方案资源管理器”窗口不可见,则从“视图”菜单中选择“解决方案资源管理器”。)解决方案包含名为 USB Application1 的 C++ 应用程序项目和名为 USB Application1 Package 的驱动程序包项目。如果要查看应用程序源代码,则可以打开出现在“源文件”下的任意文件。

USB Application1Package 项目包含一个 INF 文件,用于安装 Microsoft 提供的 Winusb.sys 驱动程序作为设备驱动程序。

7、  在“解决方案资源管理器”窗口中,右键单击“解决方案“USB Application1”(2 个项目)”,然后选择“配置管理器”。为应用程序项目和包项目选择配置和平台。在本练习中,我们选择 Win7 Debug 和 x64(若是win8.1系统则为:Win8.1 Debug),如以下屏幕截图所示。

1.2 获取inf文件和cat文件

在VS中按F7(生成解决方案),然后会在你存放该项目的目录下生成一个x64\Win7Debug\USB Application1 Package的文件夹,里面就有我们需要的inf和cat文件。如图所示:

2.       修改inf文件以安装WINUSB驱动

1、  打开inf文件,找到以下行:

%DeviceName% =USB_Install, USB\VID_vvvv&PID_pppp

将USB\VID_vvvv&PID_pppp替换为你设备的硬件ID,从设备管理器获取硬件ID。在设备管理器中,查看设备属性。在“详细信息”选项卡中,查看“硬件 ID”属性值。

2、  由https://msdn.microsoft.com/zh-cn/subscriptions/downloads/hh450799(v=vs.85).aspx所说,在Win7中应该在最后加上以下行:

;----------添加注册表部分 ----------

[USBDeviceClassReg]

HKR,,,,"UniversalSerial Bus devices"

HKR,,NoInstallClass,,1

HKR,,SilentInstall,,1

HKR,,IconPath,%REG_MULTI_SZ%,"%systemroot%\system32\setupapi.dll,-20"

3、  在inf中加上以下行:

[USB_Install.Wdf]

KmdfService=WINUSB, WinUsb_Install

[WinUSB_Install]

KmdfLibraryVersion=1.9

3.       通过inf文件安装WINUSB驱动

1、  打开设备管理器,右键你的设备,选择更新驱动程序软件。

2、  选择“浏览计算机以查找驱动程序软件”

3、  选择“从计算机的设备驱动程序列表中选择”

4、  选择从磁盘安装,如下图所示:

5、 点击“浏览”,进入你存放inf文件的文件夹选择inf文件,最后点击确定即可。

4.       编写inf文件可能遇到的问题

如果不能正确安装驱动,可以在C:\Windows\setupact.log查看驱动安装时的错误。这里列举两个问题:

1、出现error locating section [USB_Install.Wdf] in infC:\Windows\INF\oem29.inf – status(E0000101) <no error text>错误

解决方法:根据字面意思,是在定义[USB_Install.Wdf]时出现了错误。于是我打开编写的inf文件搜索 [USB_Install.Wdf],发现并没有这个节,于是我就在网上查找了这个节如何写,将其加入了自己的inf文件:

[USB_Install.Wdf]

KmdfService=WINUSB, WinUsb_Install

2、出现ReadComponents error: SetupGetStringField for KMDF version failed:status(E0000102) <no error text>错误。

解决方法:通过字面意思不难理解是读取KMDF版本错误。于是我在inf文件中加入了这一句:

[WinUSB_Install]

KmdfLibraryVersion=1.9

WINUSB设备的inf文档的编写相关推荐

  1. Win95架构师发布移动设备富媒体文档创建平台

    尽管PowerPoint在会议时很有表现力,但如果你只在网站上(或邮件中)放几张照片几句话就打发人的话,这样的展示是很难把产品给卖出去的.Satoshi Nakajima于今日发布了一个名叫Swipe ...

  2. 项目方案-标书-文档等等编写规范

    文章目录 背景 文档要求 背景 作为一个社会人,经常需要面对文档,无论是程序员.项目经理.售前.售后等等,都需要面对文档,但是我目前位置,对于文档还是一知半解.所以收集了一些对编写文档有用的干货并持续 ...

  3. java文档注释 编写格式

    java 文档注释 在sun主页上有java文档注释的编写格式 How to Write Doc Comments for the Javadoc Tool http://java.sun.com/j ...

  4. 需求分析 及需求文档的编写

    通常,软件开发工程师和软件测试工程师的工作都开始于软件需求说明书成型的基础上.那么软件需求说明书到底是怎么来的,软件的需求分析到底怎么做?今天我就针对这个话题结合我自己的一些理解和经历来梳理一下. 需 ...

  5. 如何进行dtk文档的编写

    文章目录 任务描述 环境搭建 DTK环境 dtkcommon dtkcore dtkgui dtkwidget shell脚本 任务流程 fork仓库 推荐编辑器 同步上游代码 方法一 方法二 发起i ...

  6. 接口文档如何编写,接口文档快速生成工具

    正规的团队合作或者是项目对接,接口文档是非常重要的,一般接口文档都是通过开发人员写的.一个工整的文档显得是非重要.下面我总结下自己看到的优秀接口文档. 一.背景介绍 接口:API API(Applic ...

  7. 项目规划和方案设计文档的编写

    引言 在工作中,很多时候,我们都需要就一个问题提出一个解决方案,这时候,我们很可能需要产出一个文档来供大家讨论,并指导下一步工作计划.这个文档便是所谓的设计文档. 问题可大可小,形式上是否叫它为一个项 ...

  8. 软件设计文档如何编写,设计文档内容都包括什么

    我们经常听到这样的话: "设计文档没有用,是用来糊弄客户和管理层的文档": "用来写设计文档的时间,项目开发早就做完了": "项目紧张,没有时间做设计 ...

  9. SAP 电商云 Spartacus 5_0.md 迁移文档的编写格式

    ng-container which wrapped div.row.cx-checkout-btns has been removed. 上述选择器,首先确认描述的是一个 div 元素.这个元素同时 ...

最新文章

  1. java ee eclipse idea,转----从Eclipse转移到IntelliJ IDEA一点心得
  2. SpringMVC 之拦截器和异常处理
  3. 腾讯上海某实验室SQL面试题——查询最后任职信息
  4. 谷歌机器学习规则:机器学习工程的43条最佳实践经验
  5. (案例六)三种scrapy模拟登陆策略
  6. Android动画效果
  7. python日志处理_Python之日志处理(logging模块)
  8. ORACLE:索引中丢失IN或OUT参数
  9. pythonselenium函数_selenium2.0 关于 python 的常用函数汇总
  10. undefined reference to `major‘
  11. 环境可靠性测试,气候环境类可靠性试验,可靠性测试标准
  12. linux 天文软件,Stellarium 0.18.0虚拟天文馆软件发布,支持HiPS
  13. Redis复习记录(二):数据类型与基本操作
  14. 游戏中的角色是如何“动”起来的?
  15. 台式计算机能分享热点吗,如何在电脑上开热点 台式电脑开热点的方法有哪些...
  16. 太上玄门日诵早晚功课经序
  17. pycharm不显示一部分下划线和删除线(pep8,typo引起)
  18. 类似捕鱼达人的金币效果
  19. 大学生python心得1000字_大学生心得体会1000字
  20. Python代码计算素数(质数)

热门文章

  1. go---- mgo
  2. 区块链从入门到精通 - 区块链培训
  3. 莫队算法 (普通莫队、带修莫队、树上莫队)
  4. 从零开始学WEB前端——CSS基础
  5. 痛心:三天痛别八位院士!中科院院士、著名药学家蒋华良英年早逝,终年57岁...
  6. 浅析提高倾斜摄影超大场景的三维模型轻量化的数据质量关键技术
  7. 波浪下划线怎么设置_如何在word中的文字下面加波浪线
  8. prezi如何安装与教育账号注册激活
  9. MySQL按条件计数
  10. 【c语言】—求最大公约数和最小公倍数多种方法