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 设备驱动重要的事实的更多相关文章

  1. Linux和Windows设备驱动架构比较

    毕业后一直在学操作系统, 有时候觉得什么都懂了,有时候又觉得好像什么都不懂,但总体来说自认为对操作系统实现机制的了解比周围的人还是要多一些.去年曾花了几个星期的晚上时间断断续续翻译了这篇对Linux和 ...

  2. windows设备驱动安装接口(自己仿写)

    /***************************************** Author:foo_hack This is File named:Setup.h The Funtion Im ...

  3. windows设备驱动安装指南

    高观点下的设备驱动安装(overview) 一.windows是怎样安装设备的? 第一步:新设备的识别 在给一个新设备安装驱动之前,总线或集线器(hub)驱动会为连接到PC上的设备分配一个硬件ID(h ...

  4. Linux与Windows的设备驱动模型对比

    Linux与Windows的设备驱动模型对比 名词缩写: API 应用程序接口(Application Program Interface ) ABI 应用系统二进制接口(Application Bi ...

  5. [11]Windows内核情景分析---设备驱动

    设备驱动 设备栈:从上层到下层的顺序依次是:过滤设备.类设备.过滤设备.小端口设备[过.类.过滤.小端口] 驱动栈:因设备堆栈原因而建立起来的一种堆栈 老式驱动:指不提供AddDevice的驱动,又叫 ...

  6. Windows网络驱动、NDIS驱动(微端口驱动、中间层驱动、协议驱动)、TDI驱动(网络传输层过滤)、WFP(Windows Filtering Platform)

    catalog . 引言 . Windows 2000网络结构和OSI模型 . NDIS驱动 . NDIS微端口驱动编程实例 . NDIS中间层驱动编程实例 . NDIS协议层驱动编程实例 . TDI ...

  7. 【工业串口和网络软件通讯平台(SuperIO)教程】四.开发设备驱动

    SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1    开发准备 把“开发包”内的所有文件复制到项目的“bin”目录下,或项目下的专用生成目录.开发包 ...

  8. linux设备驱动概述,王明学learn

    linux设备驱动学习-1 本章节主要学习有操作系统的设备驱动和无操作系统设备驱动的区别,以及对操作系统和设备驱动关系的认识. 一.设备驱动的作用 对设备驱动最通俗的解释就是“驱使硬件设备行动” .设 ...

  9. 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联

    转载自:http://www.kancloud.cn/yueqian_scut/emlinux/106829 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sy ...

随机推荐

  1. 怎样理解Node对象接口

    dom中的节点都继承自Node接口, 也就是说, 所有的节点都具有Node接口所规定的属性和方法, 比如下面这个 <a> 标签, 它也继承了Node的所有属性和方法: 可以认为Node接口 ...

  2. Tomcat中的Host和Engine级别的servlet容器

    这边文章主要介绍的是Host容器 和 Engine容器.如果你想在同一个Tomcat上部署运行多个Context容器的话,你就需要使用Host容器,从理论上来讲,如果你的Tomcat只想要部署一个Co ...

  3. 【原创】大叔经验分享(72)mysql时区

    查看当前时区 > show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value ...

  4. GNU g++常用编译选项用法

    GNU g++常用编译选项用法 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/30686/showart_1210761.html GCC ...

  5. HTML之盒子变形动画

    4个圆形球作圆周运动 代码: <div class="box"> <div class="box1"></div> < ...

  6. jeesite直接登录——真实破解

    前台 后台 @RequiresPermissions("alarm:alarm:view")一定要注释 —————————————————————————————————————— ...

  7. firefox(火狐中的兼容问题总结)

    1.firefox 下 默认情况 <input   type="number"> 只允许整数其他的都会报错,红色提示: 这时候可以添加参数 step="0.0 ...

  8. Activity的跳转及返回值,activity的生命周期

    Activity生命周期 从创建到销毁的生命周期: onCreate()→onStart()→onResume()→onPouse()→onStop()→onDestroy() 从起动到后台再到前台: ...

  9. TensorFlow可以在终端和通过终端打开的PyCharm中运行,不能在直接打开的PyCharm中运行

    然后看运行窗口的出错信息,点击最右边的view,发现缺少个文件,如代码所示 Traceback (most recent call last): File "/usr/local/lib/p ...

  10. mongodb单机搭建

    参考网站:http://www.runoob.com/mongodb/mongodb-linux-install.html 1.下载 https://www.mongodb.com/download- ...