关于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 ...
随机推荐
- MySql 中锁的定义
行级锁,一般是指排它锁,即被锁定行不可进行修改,删除,只可以被其他会话select.行级锁之前需要先加表结构共享锁. 表级锁,一般是指表结构共享锁锁,是不可对该表执行DDL操作,但对DML操作都不限制 ...
- 拜托,别再问我 QPS、TPS、PV、UV、GMV、IP、RPS 好吗?
关于 QPS.TPS.PV.UV.GMV.IP.RPS 这些词语,看起来好像挺专业.但实际上,我认为是这是每个程序员必懂的知识点了,你可以搞不懂它们怎么计算的,但是你最少要知道它们分别代表什么意思吧? ...
- 怎样使用 ssh 命令远程连接服务器?
以 Git Bash 和 阿里云 ECS云服务器 为例, 想要进行远程连接, 可以使用 ssh 用户名@服务器IP 进行连接. 如下: 注意: 1. 密码输入时是没有提示的 2. root 是超级管理 ...
- dev listbox使用
private void Init() { List<Funcation> data = new List<Funcation>(); data.Add(new Funcati ...
- sql server存储过程回滚事务
SET NOCOUNT ON这个很常用 作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息. 当SET ONCOUNT ON时候,不返回计数,当SET NOCOUNT OFF时候, ...
- Makefile速查笔记
Makefile速查笔记 Makefile中的几个调试方法 一. 使用 info/warning/error 增加调试信息 a. $(info "some text")打印 &qu ...
- Linux学习笔记:7个ssh命令用法
通过远程控制管理多台服务器. 远程工具:telnet.ssh.vnc ssh采用密文的传输方式,简单安全.Secure Shell 缩写 SSH. 1.基本用法 ssh 192.168.1.1 默认使 ...
- eval的使用
当逻辑字符串是拼接而成的时候可以用eval来判断真假 eg:let a= "22" let b = ">" let c = "1" 用 ...
- TCP超时与重传
TCP提供可靠的传输层.它使用的方法之一就是确认从另一端收到的数据.但数据和确认都有可能丢失.TCP通过在发送时设置一个定时器来解决这种问题.如果当定时器溢出时还没收到确认,他就重传数该数据.对任何实 ...
- Element 封印
官方网站 https://element.eleme.cn/#/zh-CN 简介 Element 是一套为开发者.设计者和产品经理准备的基于Vue2.0的组件库,提供了配套的设计资源,帮助快速建立网站 ...