关于windows 设备驱动重要的事实
1. windows采用设备树描述所有挂在系统总线上的设备,每个设备对应一个节点。
2.每个设备有自己的device object stack/driver stack. 一个物理上的设备对应多个device object.
3.系统加电后,PnP管理器要求(PCI)总线驱动程序枚举(enumerte)挂载的设备信息,bus diver响应此请求,扫描物理设备(IDSEL),为每个物理设备建立物理设备对象(physical device object,PDO).PnP管理器会查找注册表,搜索哪些驱动程序为该PDO服务,建立设备堆栈。见文章设备对象与设备堆栈
4.用户空间和内核空间的关键区别:用户模式下,每个应用程序有自己专有的虚拟内存空间,所以APP1的崩溃不会破坏APP2或操作系统本身;内核模式下,所有的内核组件、驱动程序、系统核心共享内核空间,所以如果内核程序出现崩溃可能导致系统的崩溃。
5.操作硬件时,向设备堆栈传递IRP,先由堆栈最上层的设备驱动捕获,或直接处理或向堆栈下层的设备驱动传递。
6.系统总线,通常指的是PCI总线。PCI bus0一般挂在着内存、CPU等,通过PCI桥扩展出bus1,bus1上挂着声卡、USB控制器等。一级级的总线直接通过桥设备实现数据交换。
7.按照标准,PCI设备有三类空间,配置空间、IO空间、memory空间。配置空间256字节,前64字节是通用的,重要的有设备ID,功能,基地址等。IO空间和memory空间是数据交换的通道,其中IO空间有点过时,速度上慢些,是映射在CPU的IO地址空间,采用IO操作函数读写数据;采用memory空间,CPU可以直接像操作内存一样操作PCI上的存储单元,速度快。
8.多功能的PCI设备,要求功能室独立的,没有顺序上的依赖;要求按照多功能PCI设备的standard 设计,PCI bus driver也支持多功能PCI设备的情况下,上电后PnP管理器会自动的将设备枚举成独立的功能设备。
9.DMA是硬件直接对传,需要使用物理地址。所以在触发DMA操作前,需要将用户缓冲区映射到物理内存块。
关于windows 设备驱动重要的事实的更多相关文章
- Linux和Windows设备驱动架构比较
毕业后一直在学操作系统, 有时候觉得什么都懂了,有时候又觉得好像什么都不懂,但总体来说自认为对操作系统实现机制的了解比周围的人还是要多一些.去年曾花了几个星期的晚上时间断断续续翻译了这篇对Linux和 ...
- windows设备驱动安装接口(自己仿写)
/***************************************** Author:foo_hack This is File named:Setup.h The Funtion Im ...
- windows设备驱动安装指南
高观点下的设备驱动安装(overview) 一.windows是怎样安装设备的? 第一步:新设备的识别 在给一个新设备安装驱动之前,总线或集线器(hub)驱动会为连接到PC上的设备分配一个硬件ID(h ...
- Linux与Windows的设备驱动模型对比
Linux与Windows的设备驱动模型对比 名词缩写: API 应用程序接口(Application Program Interface ) ABI 应用系统二进制接口(Application Bi ...
- [11]Windows内核情景分析---设备驱动
设备驱动 设备栈:从上层到下层的顺序依次是:过滤设备.类设备.过滤设备.小端口设备[过.类.过滤.小端口] 驱动栈:因设备堆栈原因而建立起来的一种堆栈 老式驱动:指不提供AddDevice的驱动,又叫 ...
- Windows网络驱动、NDIS驱动(微端口驱动、中间层驱动、协议驱动)、TDI驱动(网络传输层过滤)、WFP(Windows Filtering Platform)
catalog . 引言 . Windows 2000网络结构和OSI模型 . NDIS驱动 . NDIS微端口驱动编程实例 . NDIS中间层驱动编程实例 . NDIS协议层驱动编程实例 . TDI ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】四.开发设备驱动
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 开发准备 把“开发包”内的所有文件复制到项目的“bin”目录下,或项目下的专用生成目录.开发包 ...
- linux设备驱动概述,王明学learn
linux设备驱动学习-1 本章节主要学习有操作系统的设备驱动和无操作系统设备驱动的区别,以及对操作系统和设备驱动关系的认识. 一.设备驱动的作用 对设备驱动最通俗的解释就是“驱使硬件设备行动” .设 ...
- 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联
转载自:http://www.kancloud.cn/yueqian_scut/emlinux/106829 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sy ...
随机推荐
- springMvc改造springboot2.0踩坑
1. 支持jsp applicaiton.proerties添加配置 #指定视图解析路径前缀 spring.mvc.view.prefix=/WEB-INF/jsp/ #指定视图解析后缀 spring ...
- Parallel的使用
Action<int, int> ReportProcess //返回数据,刷新进度 Exception exception = null; object objLock = new ob ...
- Leaflet个人封装笔记
<!DOCTYPE html> <html> <head> <link href="style/leaflet.css" type=&qu ...
- 今天朋友带领去谷歌ok2eat 餐厅吃免费午餐
中午去队友公司免费吃饭.朋友带我们去她的楼下吃,就算是googler真的也不是所有cafe都知道,感谢朋友带领.
- npm安装淘宝镜像cnpm
在cmd中执行 npm install -g cnpm --registry=https://registry.npm.taobao.org
- 转载Linux常用命令
转自:https://blog.csdn.net/deng_xj/article/details/88803148 Linux常用shell命令 [root@dengxj]#各项含义[用户名@计算机名 ...
- 从一道Hard学习滑动窗口
滑动窗口 滑动窗口(sliding windows algorithm)这种方法,专门用于解决区间解的问题.它在运算的时候,将解集放在窗口中,结束的时候比对是否符合预期.在运算的过程中,会对窗口的左右 ...
- 基于docker安装pxc集群
基于docker安装pxc集群 一.PXC 集群的安装 PXC集群比较特殊,需要安装在 linux 或 Docker 之上.这里使用 Docker进行安装! Docker的镜像仓库中包含了 PXC数据 ...
- java-接口—策略模式
策略模式,就是不同类继承相同的接口,实现不同的策略.
- block missing问题排查流程
当集群出现block missing异常时,一般的排查流程如下: 首先检查是否有datanode处于dead或Decommissioned状态,如果是,尝试恢复datanode,一般block mis ...