windows I/O设备
当外部设备连接到windows后,设备所连接到的集线器驱动程序将为设备分配硬件ID,然后Windows 使用硬件 Id 查找设备与包含设备驱动程序的驱动程序包之间最近的匹配项。
如果查找到,设备就可以和windows正常通信。
如果没查找到,就会报错提示你需要安装驱动程序。比如:

安装驱动程序的实现细节:
根据驱动程序包 INF 文件中的指令,Windows 执行以下操作:
将驱动程序二进制文件和其他关联文件复制到由INF CopyFiles 指令指定的硬盘上的位置。
执行任何与设备实例相关的配置,例如注册表项写入。
Windows 从驱动程序包的 inf 文件的 " INF 版本" 部分中的类和ClassGuid项确定设备安装程序类。 若要优化设备安装,以相同方式设置和配置的设备将分为相同的设备安装程序类。
复制驱动程序文件后,Windows 会立即将控制转移到即插即用(PnP)管理器。 PnP 管理器加载驱动程序并启动设备。
PnP 管理器为设备加载适当的函数驱动程序和任何可选的筛选器驱动程序。
过程中会涉及的组件:即插即用 (PnP) 管理器、SetupAPI(安装程序应用程序编程接口 (SetupAPI) 包含常规安装函数 (Setup**Xxx) 和设备安装函数( SetupDi**Xxx 和 *Di***Xxx)。 这些函数执行许多设备安装任务,如搜索 INF 文件、构建设备驱动程序的潜在列表、复制驱动程序文件、将信息写入注册表,以及注册设备共同安装程序。 大多数其他设备安装组件都调用这些函数。)、配置管理器 API、驱动程序存储、设备管理器。
所以如果安装过程有报错,可以到C:\Windows\inf路径下找SetupAPI.dev.log,设备安装文本日志,查找原因。
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/install/device-manager-error-messages
链接为设备管理器错误代码解释及原因。
windows I/O设备的更多相关文章
- Windows驱动开发-设备读写方式
设备读写方式共三种: 方式 Flag 特点 缓冲区方式读写 DO_BUFFERED_IO I/O管理器先创建一个与用户模式数据缓冲区大小相等的系统缓冲区.而你的驱动程序将使用这个系统缓冲区工作.I/O ...
- windows驱动开发-设备扩展
设备对象Device_Object记录通用设备信息,另外一些信息记录在设备扩展里,设备扩展由程序员自己定义,由程序员指定内容和大小,由I/O管理器创建,并保存在非分页内存中. 驱动程序中,尽量避免使用 ...
- 我的计划任务 --- 实现市电停电安全关闭群辉,Windows, Linux等设备
有一次突然停电,我的群辉DS218+ 的一块硬盘出现故障了,让我担心我的数据安全,其实我是有UPS, 不是在线式的,然后就想如何实现停电自动关机呢? 经过半天的了解,其实群辉支持telnet协议,于是 ...
- Windows 数字化器类输入设备--笔设备分析(1)(原创)
一.前言: 参考microsoft公司的链接:https://developer.microsoft.com/zh-cn/windows/hardware 将对Windows数字化器类输入设备--笔设 ...
- Linux和Windows设备驱动架构比较
毕业后一直在学操作系统, 有时候觉得什么都懂了,有时候又觉得好像什么都不懂,但总体来说自认为对操作系统实现机制的了解比周围的人还是要多一些.去年曾花了几个星期的晚上时间断断续续翻译了这篇对Linux和 ...
- Linux与Windows的设备驱动模型对比
Linux与Windows的设备驱动模型对比 名词缩写: API 应用程序接口(Application Program Interface ) ABI 应用系统二进制接口(Application Bi ...
- 干货分享:SQLSERVER使用裸设备
干货分享:SQLSERVER使用裸设备 这篇文章也适合ORACLE DBA和MYSQL DBA 阅读 裸设备适用于Linux和Windows 在ORACLE和MYSQL里也是支持裸设备的!! 介绍 大 ...
- 【完全开源】知乎日报UWP版(下篇):商店APP、github源码、功能说明。Windows APP 良心出品。
目录 说明 功能 截图+视频 关于源码和声明 说明 陆陆续续大概花了一个月的时间,APP算是基本完成了.12月份一直在外出差,在出差期间进行了两次功能完善,然后断断续续修补了一些bug,到目前为止,我 ...
- AD域控制器通过组策略禁止USB设备
问题:域环境下如何禁用USB口设备? 第一种:用传统的办法,在Bios中禁用USB. 第二种: 微软技术支持回答:根据您的需求, Windows识别USB设备主要通过两个文件,一个是Usbstor.p ...
随机推荐
- HDU 5463
题意:一个盒子有36个格子.每个格子可以装64个物品,搬运一个箱子是一次搬运,问最少到搬运次数 思路:直接求总需要多少个格子,然后去求盒子,这里求盒子呢有个小技巧,就是用ceil函数 #include ...
- 2018-8-10-win10-uwp-后台获取资源
title author date CreateTime categories win10 uwp 后台获取资源 lindexi 2018-08-10 19:17:19 +0800 2018-2-13 ...
- Python--day41--thread1.join()
在 Python 的多线程编程中,在实例代码中经常有 thread1.join()这样的代码.那么今天咱们用实际代码来解释一下 join 函数的作用. join的原理就是依次检验线程池中的线程是否结束 ...
- Codeforces Round #196 (Div. 1 + Div. 2)
A. Puzzles 对\(f[]\)排序,取连续的\(m\)个. B. Routine Problem 考虑\(\frac{a}{b}\)和\(\frac{c}{d}\)的大小关系,适配后就是分数的 ...
- Django入门总结
- Vue.js 学习笔记 第7章 组件详解
本篇目录: 7.1 组件与复用 7.2 使用props传递数据 7.3 组件通讯 7.4 使用slot分发内容 7.5 组件高级用法 7.6 其他 7.7 实战:两个常用组件的开发 组件(Compon ...
- codeforces 86D,Powerful array 莫队
传送门:https://codeforces.com/contest/86/problem/D 题意: 给你n个数,m次询问,每次询问问你在区间l,r内每个数字出现的次数的平方于当前这个数的乘积的和 ...
- Centos中Qt编译问题(/usr/bin/ld: 找不到 -lpulse-mainloop-glib,/usr/bin/ld: 找不到 -lpulse...)
Linux下QT编写一个与视频播放的程序,出现/usr/bin/ld: 找不到 -lpulse-mainloop-glib,/usr/bin/ld: 找不到 -lpulse 解决办法: 首先find ...
- 前端——JS
目录 JavaScript概述 ECMAScript和JavaScript的关系 ECMAScript的历史 JavaScript引入方式 Script标签内写代码 引入额外的JS文件 JavaScr ...
- [梁山好汉说IT] 边缘计算在梁山的应用
[梁山好汉说IT] 边缘计算在梁山的应用 0x00 摘要 梁山泊下四个酒店就是边缘计算在梁山的应用,以朱贵南山酒店为例能看出其"计算实时/省流量/具备智能"等各种优点. 0x01 ...