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. T100——自动执行设置了但没执行

    azzi950设置了背景定时执行,但到底没执行, 重启的命令如下.三个命令都执行一下.指令 1: r.r azzp950 kill 指令 2: r.r azzp951 kill 指令 3: r.r a ...

  2. Vuex是什么?

    记得去年公司招聘前端工程师的时候,我要负责准备面试题去考验面试者,让我记忆深刻的有一件事,我看大多数面试者简历上都写了熟练掌握Vuex,然而当我问起的时候,大部分回答都支支吾吾,解释不清,而当我提起与 ...

  3. js中数组的定义方法及注意事项(转)

    1.数组的创建 var name= new Array(); //创建一个数组 name[0]="zhangsan";   //给数组赋值 name[1]="lisi&q ...

  4. 【原创】大叔经验分享(74)nginx对静态文件加速

    通过location配置 location ~ \.html$ { add_header 'Cache-Control' 'no-cache'; } location ~ \.(js|css|gif| ...

  5. 11 Django实现WebSocket

    因为需要实时显示状态的需求,想到了websocket,但是Django原生不支持websocket,后来搜索到了chango-channels项目,可以实现次需求. 一.Channels 官方文档 二 ...

  6. java面试5

    1.如何将String类型转化Number类型?列举说明String str = "123"; Integer  num1 = new  Integer(str); int num ...

  7. vue-element-admin 多层路由问题

    在二级页面上添加<router-view> 关于页面打包后三级路由无法访问问题 需要将 存放router-view 的页面单独存放一个文件夹 router.js 写法

  8. 【Day2】1.循环结构

     视频地址(全部) https://edu.csdn.net/course/detail/26057 课件地址(全部) https://download.csdn.net/download/gentl ...

  9. Delphi CloseHandle函数

  10. 5、Sersync实时同步实战

    1.实时同步概述 1.什么是实时同步, 只要当前目录发生变化则会触发一个事件,事件触发后将变化的目录同步至远程服务器. 2.为什么要实时同步, 保证数据的连续性, 减少人力维护成本, 解决nfs单点故 ...